IE 使用高级CSS3选择器

IE 使用高级CSS3选择器,第1张

概述别误会,IE是不支持CSS3高级选择器,包括最新的IE8(详见《CSS选择器的浏览器支持》),但是CSS选择器的确是很有用的,它可以大大的简化我们的工作,提高我们的代码效率,并让我们很方便的制作高可维护性的页面。然而IE对高级CSS选择器特别是CSS3选择器的支持让我们一直不能将CSS选择器推广应用。…

别误会,IE是不支持CSS3高级选择器,包括最新的ie8(详见《css选择器的浏览器支持》),但是css选择器的确是很有用的,它可以大大的简化我们的工作,提高我们的代码效率,并让我们很方便的制作高可维护性的页面。

然而IE对高级css选择器特别是CSS3选择器的支持让我们一直不能将css选择器推广应用。不过,虽然我们无法左右浏览器的市场份额,却可以通过一些技术改善我们的工作。我们也可以使用其它的一些技术,让IE可以变相支持CSS3选择器。

一位来自英国的网页开发工程师Keith Clark开发了一个JavaScript方案来使IE支持CSS3选择器。该脚本支持从IE5到ie8的各个版本。

用法

你只需要下载Robert Nyman的DOMAssistant脚本和IE-CSS3.Js并将它们在你的页面的head标签中导入,如下:

<head>
 <script type="text/JavaScript" src="DOMAssistantCompressed-2.7.4.Js"></script>
 <script type="text/JavaScript" src="IE-CSS3.Js"></script>
</head>

支持的选择器

nth-child nth-last-child nth-of-type nth-last-of-type first-child last-child only-child first-of-type last-of-type only-of-type empty

IE-CSS3的一些限制

样式表必须通过<link>标签引入。页面级的样式表或者内联的样式表将无效。不过 可以在外部样式文件中使用@import 导入其它样式文件; 样式表文件必须和页面放在同一个域名下面; 使用file://路径的样式文件将由于浏览器的安全问题而不起作用; :not()选择器尚不支持; 该方法不是动态的,样式被应用之后再改变DOM,将会无效。

如何工作的?

IE-CSS3.Js下载页面的每一个样式文件并解析它的CSS3伪选择器。如果一个选择器被找到,它就会被替换为同名的CSS class。比如: div:nth-child(2) 将会变成 div._IEcss-nth-child-2 。然后,Robert Nyman的DOMAssistant用于寻找匹配元素CSS3选择器的DOM节点然后将相应的CSS类添加给它。

最终,元素的样式表会被新的版本替代,然后用CSS3选择器对相应元素添加对应的样式。

避免IE的CSS解释器

根据W3C的规定,一个浏览器应该无视它不认识的CSS规则。这就出现一个问题——我们需要利用样式表文件中的CSS3选择器,但是IE会将它们丢弃。

为了避免这个问题,每一个样式文件都会通过XMLhttpRequest下载。这允许该脚本绕开浏览器内置的CSS解释器并能够读取原始的CSS文件。

访问项目主页 下载IE-CSS3.Js 下载DOMAssistant

替代方案

显然这个也并非完美的方案,对于AJAX网站来说,它基本上是不能用的,因为在生成的样式表被应用之后再改变DOM,就不会有效了。但是事实上我们可以自己来自定义一个IE-CSS3的。只是没有它这个这么智能。 总结

以上是内存溢出为你收集整理的IE 使用高级CSS3选择器全部内容,希望文章能够帮你解决IE 使用高级CSS3选择器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1022365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存