CSS3变换:旋转;在IE9中

时间:2011-02-01 16:28:25

标签: css internet-explorer css3 rotation internet-explorer-9

我在设计中有一个需要垂直的元素。我有这个css在IE9以外的所有浏览器中工作。我使用过滤器用于IE7& IE8:

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

然而,这似乎使我的元素在IE9中变得透明,并且CSS3'tranform'属性似乎没有做任何事情!

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

非常感谢帮助!

W上。

5 个答案:

答案 0 :(得分:137)

标准的CSS3旋转应该可以在IE9中运行,但我相信你需要给它一个供应商前缀,如下所示:

  -ms-transform: rotate(10deg);

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

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

[编辑]
人们要求提供一些进一步的文件。正如他们所说,这是非常有限的,但我找到了这个页面:http://css3please.com/,这对于测试所有浏览器中的各种CSS3功能非常有用。

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

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

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

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

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

-sand-transform: rotate(10deg);

...让它在IE 6/7/8中运行,而不必使用filter语法。 (当然它仍然使用幕后的过滤器语法,但这使得它更容易管理,因为它使用与其他浏览器类似的语法)

答案 1 :(得分: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>

答案 2 :(得分:4)

我在IE9中也遇到了转换问题,我使用了-ms-transform: rotate(10deg)但它没有用。尝试了我能做的一切,但问题是在浏览器模式下,为了使转换工作,你需要将兼容模式设置为“标准IE9”。

答案 3 :(得分:3)

我知道这已经过时了,但我遇到了同样的问题,找到了这篇文章,虽然它没有解释到底是什么问题,但它帮助我找到了正确的答案 - 所以希望我的回答可以帮助其他人与我的问题类似。

我有一个我想要旋转垂直的元素,所以我自然添加了过滤器:对于IE8,然后是IE9的-ms-transform属性。我发现有-ms-transform属性和应用于同一元素的过滤器会导致IE9渲染元素非常差。我的解决方案:

  1. 如果您正在使用transform-origin属性,请为MS添加一个(-ms-transform-origin:left bottom;)。如果你没有看到你的元素,可能是它在它的中间轴上旋转,从而以某种方式离开页面 - 所以仔细检查一下。

  2. 将IE7&amp; 8的filter:属性移动到单独的样式表,并使用IE条件为低于IE9的浏览器插入该样式表。这样它不会影响IE9样式,并且所有样式都可以正常工作。

  3. 确保使用正确的DOCTYPE标签;如果你错了,IE9将无法正常工作。

答案 4 :(得分:0)

可以使用:

 element.style['-ms-transform']='translate...'