CSS3转换:旋转;在IE9中


77

在我完成的设计中,我有一个需要垂直的元素。我已经获得了CSS才能在除IE9之外的所有浏览器中工作。我将过滤器用于IE7和IE8:

progid:DXImageTransform.Microsoft.BasicImage(rotation=3);

但是,这似乎使我的元素在IE9中变得透明,而CSS3的“变形”功能似乎无能为力!

有人知道IE9中的旋转元素吗?

非常感谢您的帮助!

W.

Answers:


138

标准CSS3旋转应在IE9中工作,但我相信您需要为其指定供应商前缀,如下所示:

  -ms-transform: rotate(10deg);

它可能无法在Beta版本中工作;如果不是,请尝试下载当前的预览版本(预览版7),它是beta版的更高版本。我没有要测试的Beta版本,因此我无法确认它是否在该版本中。最终版本肯定会支持它。

我还可以确认filterIE9中已删除了IE特定的属性。

[编辑]
人们要求提供更多文档。正如他们所说,这是非常有限的,但是我确实找到了此页面:http : //css3please.com/,该页面可用于在所有浏览器中测试各种CSS3功能。

但是在IE9预览版中测试此页面上的旋转功能会导致其崩溃。

但是,我已经-ms-transform:rotate()在自己的测试页中使用IE9进行了一些独立的测试,并且工作正常。因此,我的结论是该功能已实现,但存在一些错误,可能与动态设置有关。

在浏览器中实现功能的另一个有用参考点是www.canIuse.com-请参阅http://caniuse.com/#search=rotation

[编辑]
恢复旧的答案是因为我最近发现了一个名为CSS Sandpaper的黑客,该黑客与该问题有关,可能使事情变得更容易。

黑客transform为IE的旧版本实现了对标准CSS的支持。因此,现在您可以将以下内容添加到CSS中:

-sand-transform: rotate(10deg);

...并使它可以在IE 6/7/8中工作,而无需使用filter语法。(当然,它仍然在后台使用过滤器语法,但这使它易于管理,因为它使用的语法与其他浏览器类似)


感谢Spud!我现在要检查一下,然后再回覆给您。不敢相信网上有多少文件。
wilsonpage

@Spudley可以发帖吗?我无法找到MSDN上msdn.microsoft.com/en-us/library/ms531207(v=vs.85).aspx
森那维达斯

@ŠimeVidas和@pagewil-您是正确的,周围没有太多文档。我发现它记录在这里:css3please.com,尽管我应该注意,当我尝试使用Rotate属性时,此页面使我的IE9预览副本崩溃了。但是,我自己的独立测试已经确认该属性可以正常工作,并且在我的答案中引用了供应商前缀。(考虑到这次坠机事故,尽管如此,我猜还是有问题的!)
Spudley 2011年

我真的不明白为什么Rotate需要一个供应商前缀,当它们与其余CSS3成为标准时
Eduardo Molteni

@Eduardo-可能是因为该标准尚未最终确定?
Spudley 2011年

5

试试这个

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
body {
    margin-left: 50px;
    margin-top: 50px;
    margin-right: 50px;
    margin-bottom: 50px;
}
.rotate {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 16px;
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -sand-transform: rotate(10deg);
    display: block;
    position: fixed;
}
</style>
</head>

<body>
<div class="rotate">Alpesh</div>
</body>
</html>

我尝试此代码IE9,火狐,Chrome,Safari浏览器和它的工作
Alpesh潘卡尔

4

我曾经用过IE9的转换问题,-ms-transform: rotate(10deg)但没有用。尽我所能,但是问题出在浏览器模式下,要使转换生效,您需要将兼容模式设置为“ Standard IE9”。


1
在ie中按f12键,然后选择将浏览器模式更改为ie-9,然后检查是否可以使用...
CSS Guy 2011年

3
为了使IE9使用垂直文本,您必须通过使用以下作为文件的前两行来关闭怪癖模式:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
GlenPeterson 2012年

3
任何有效的doctype都应禁用怪癖模式,例如:<!DOCTYPE html>。默认情况下,浏览器模式应为IE9,除非您更改了设置。
superluminary

3

我知道这很老了,但是我遇到了同样的问题,找到了这篇文章,虽然它没有确切解释出什么问题,但它帮助我找到了正确的答案-因此希望我的答案可以帮助其他可能遇到问题的人与我类似的问题。

我有一个想要垂直旋转的元素,所以自然地我添加了过滤器:对于IE8,然后是-ms-transform属性,对于IE9。我发现,具有-ms-transform属性并且将过滤器应用于同一元素会导致IE9将该元素呈现得很差。我的解决方案:

  1. 如果您使用的是transform-origin属性,则也为MS添加一个属性(-ms-transform-origin:左下;)。如果您看不到元素,则可能是它在中轴上旋转,因此以某种方式离开了页面-因此请仔细检查。

  2. 将IE7&8的filter:属性移动到单独的样式表,并使用IE条件将样式表插入小于IE9的浏览器。这样,它不会影响IE9样式,并且一切正常。

  3. 确保也使用正确的DOCTYPE标记;如果您输入错误,IE9将无法正常工作。


1
好电话-ms-transform-origin; 那让我挠了一下头。
danwild 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.