jQuery重新应用本机不支持的CSS规则(例如在IE中)
IE8不支持(例如,但不是唯一支持)jQuery重新应用本机不支持的CSS规则(例如在IE中),jquery,css,internet-explorer,cross-browser,Jquery,Css,Internet Explorer,Cross Browser,IE8不支持(例如,但不是唯一支持):last child,因此我经常发现自己在做类似的事情: /* CSS */ element:last-child, element.last-child{ /* properties */ } /* jQuery */ $('element:last-child').addClass('last-child'); $('link[rel="stylesheet"]').each(function(){ $.reapplyStyleshe
:last child
,因此我经常发现自己在做类似的事情:
/* CSS */
element:last-child,
element.last-child{
/* properties */
}
/* jQuery */
$('element:last-child').addClass('last-child');
$('link[rel="stylesheet"]').each(function(){
$.reapplyStylesheet($(this).attr('href'));
});
既然jQuery提供了对本机不受支持的CSS选择器的支持,那么有没有一种方法可以简单地评估CSS样式表,并让jQuery(重新)应用样式,而不必求助于这种琐碎的元素分类
比如:
/* CSS */
element:last-child,
element.last-child{
/* properties */
}
/* jQuery */
$('element:last-child').addClass('last-child');
$('link[rel="stylesheet"]').each(function(){
$.reapplyStylesheet($(this).attr('href'));
});
注意:考虑到实现特定于浏览器的CSS的方法太多了,肯定还有另一种(也许更好)方法可以实现这一点,不过我还是很好奇。
selectivizr是一个JavaScript实用程序,它模拟Internet Explorer 6-8中的CSS3伪类和属性选择器。只需将脚本包含在页面中,其余部分由selectivizr完成
最简单的方法是使用垫片库,如
下面是一个列表。任何解决方案都必须像您已经在幕后做的那样做。jQuery支持本机不受支持的选择器,方法是将它们分开,并使用选择器的每个部分执行一些DOM遍历—它不会让浏览器更“理解”:最后一个子项等 这种DOM遍历必然比让CSS引擎解析并应用额外的类慢得多,特别是在本例中您关心的浏览器中。新浏览器会有足够快的JS引擎,在很多情况下你都不会注意到这一点——但这些浏览器也支持CSS3选择器 另一个症结是浏览器的构建忽略了(甚至没有尝试解析)他们不理解的选择器的CSS规则。因此,您必须将样式表作为一个大文本块来处理,从而完成所有分析和重新应用程序—您将无法通过正常机制访问“已破坏”的规则 假设您有一个系统:
我相信微软甚至推出了MVC 3版本。我不相信Modernizer选择器。它主要关注于添加对新html5元素(section、nav等)的支持,感谢@Joseph Silber-我测试了这些建议,最终归结为selectivizr和Modernizer。虽然《现代化》似乎更全面,但selectivizr却一蹴而就。