CSS3 transform 旋转在IE里的实现
transform rotate 是CSS3里使对象旋转的一个属性,虽然目前所谓的兼容CSS3的浏览器对它的支持还不算好,但Firefox、Webkit和Opera这些浏览器都已经提供了官方的hack去支持这个属性。唯独在IE里,这个属性无法通过一般的CSS去实现。
在W3C官方的标准里,通过transform属性使对象旋转的写法如下:
1 | transform: rotate(40deg); /* 其中40是旋转的角度 */ |
可是由于目前几乎所有的浏览器对这个属性的渲染效率都很低,所以我们可以用下面的hack去提高渲染效率:
1 2 3 | -o-transform: rotate(40deg); /* Opera */ -webkit-transform: rotate(40deg); /* Webkit */ -moz-transform: rotate(40deg); /* Firefox */ |
由于目前所有版本的IE都不兼容CSS3,所以我们只能通过IE的CSS滤镜来实现,写法如下:
1 | filter: progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11=0.7660444431189777, M12=-0.6427876096865394, M21=0.6427876096865398, M22=0.7660444431189779)"; |
这个一个相当复杂的滤镜,详细的参数大家可以看看这个网页。
关于这篇文章的演示,大家可以看这个 DEMO: css-Transforms。
PS:
大家可以下载本文提供的DEMO,然后把代码里 transform 属性放在三个浏览器的 hack 后面,刷新一下页面看看会有什么现象。我在 Firefox 里看到的是中间那个旋转的 DIV 会跳动一下。
Tip:
transform 是一个相当复杂的属性,目前可以实现旋转和动画效果,我认为这个属性在 CSS3 标准完全确定下来以后会变得更加强大。






高手啊 你
CSS滤镜。。。这个太复杂了
这个有点意思,你下面的浮动广告窗做的不错嘛,挺有创意。
又看到 “IE 无法实现” 这样的语句了,嘎嘎 ~
鸡冻了 ~
这个很强大嘛,IE再次吊车尾~
这个属性我貌似用的不多~
厉害
厉害,我都没有注意这个功能呢。
原来字体可以这样放啊,长见识了
-o-transform在opera10.0之前不支持。
看见有人用canvas弄了。
ie滤镜的这个值,看来还是用js设置比较合理。
@ONEBOYS
的确Opera 10以后进步越来越快
老版本的 IE 对 JS 的解析能力太差
IE真让人没办法
@万戈
万戈兄到哪都能看到你哈~
@阿邙
有WP的地方就有我,哈哈
谢谢分享,可惜IE的角度不能随意调整,而且那些参数太奇怪了,怎么计算都不知道。。。
@吉光片羽
怪吧?那些值是各条边的水平/垂直叫的 sin / cos 值
@bolo
呃,又找到你这来了,呵呵,看到有自己评论,吓一跳。现在弄明白参数是怎么使用的了,然后丢给JS自己去计算,IE和最新的火狐、CHROME都OK,但是CPU都90%左右,不知道是CSS惹的祸,还是JS惹得祸。。。网页最小化以后,CPU马上归零,神奇。。。