伪类选择器:root的妙用

      css3的元素旋转功能非常强大,也非常吸引人,但是很多时候因为浏览器使用率的问题,我们必需要想办法兼容一些低版本的浏览器,特别是ie这朵奇葩。

      想要实现元素旋转本来很简单的一个属性就能实现,那就是transform:rotate(xxdeg)。举个例子:实现一个层旋转270deg。

#demo{
width: 300px;height: 200px;background-color: #FF80C0;margin: 200px;
-moz-transform:rotate(270deg);
-webkit-transform:rotate(270deg);
-ms-transform:rotate(270deg);
-o-transform:rotate(270deg);
}

不过,为了兼容很用户依然还在使用的ie8以下版本的浏览器,我们不得不为他写上滤境代码:

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

加上以后,ie8等浏览器也实现了旋转,可是,当你在ie9下看的时候你会发现它的旋转角度并不是你想要的,这是为什么呢?因为ie9即支持-ms-transform:rotate(270deg)

又支持 filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),虽然支持了很多css3属性,但是他依然保留了对滤镜的支持,相当于旋转了两次,ie10以后不支持滤镜,所以不会出现这种现象!

那么要如果针对ie9做hack呢?方法有二:

      方法一:使用ie独有的条件注释:

<!--[if lte IE 8]>
<style>
#demo{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);}
</style>
<![endif]-->

      方法二:就是本文的主角:root(即根选择器,他的意思就是匹配元素E所在文档的根元素。在HTML文档中,根元素始终是<html>,扩展一点:

:root{width: 100%} 其实就相当于 html{width: 100%},只是ie8- 的浏览器不支持 :root

:root #demo{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);}

因为ie8以下的版本不支持:root,所以就:root结合滤镜组合起来就实现的ie9 hack了。

 

PS:对于元素旋转还有更精确的工具,可以实现不同角度的旋转,包括ie8-,现在附上地址:http://www.useragentman.com/IETransformsTranslator/

 

posted @ 2015-07-17 18:15  沐浴点阳光  阅读(754)  评论(0编辑  收藏  举报