我的皮肤有以下CSS:
dl.definition dd:last-child {
margin-bottom: 0;
}
/* IE class */
dl.definition dd.last-child {
margin-bottom: 0;
}
是否可以将这些组合成一个,即使第二个仅用于IE?
感谢大家的答案,但我不确定是否有人真的说过我能做到这一点:
dl.definition dd:last-child,
dl.definition dd.last-child {
margin-bottom: 0;
}
答案 0 :(得分:1)
在 HTML 添加
<!--[if IE]>
<style>
dl.definition dd.last-child {
margin-bottom: 0;
}
</style>
<![endif]-->
答案 1 :(得分:1)
您希望的解决方案不起作用:
dl.definition dd:last-child,
dl.definition dd.last-child {
margin-bottom: 0;
}
这不起作用的原因是因为就旧版本的IE而言,dd:last-child
是一个无效的选择器,因此它将丢弃整个块。它也包含一个有效的选择器并不重要;由于无效的事情,整件事都被抛弃了。
关于如何改进事物的几个选项,并且避免了整个地方重复代码的麻烦......
Upgrde IE。有一些javascript库可供选择,例如Selectivizr或ie7.js/ie8.js/ie9.js,可以修补IE以支持更多的CSS选择器。几乎所有这些库都包含:last-child
。
降级CSS。您已经在代码中编写了.last-child
类来支持旧的IE版本,所以只需将其用于所有内容而忘记使用:last-child
选择器。那么你只需要一个选择器用于所有浏览器。
优雅降解。删除特定于IE的代码,只允许旧IE用户看到稍微破坏的页面。只要它不影响可用性,它可能不是什么大问题。您可能没有那么多旧的IE用户(并且数字会继续下降),那些仍在使用旧IE的人习惯于看到这些天稍微破坏(或更糟)的网站。
重新排列您的布局,使用:first-child
代替:last-child
。 :first-child
有更好的支持(它可以追溯到IE7,尽管旧IE中存在漏洞)。
使用像SASS or Less这样的CSS编译器,这样您就可以用更合理的结构化形式编写CSS,然后在将其部署到站点时将其转换为真正的CSS代码。
希望其中一个解决方案适合您。我的建议是Selectivizr库,但上述任何一个都应该为您提供可行的解决方案。
答案 2 :(得分:0)
不是您的问题的确切答案,而是针对IE6&amp;可以找到IE7 here ,它告诉您可以在单个css文件中使用属性。
This再次提供了更复杂的解决方案。
再次,您可以在单个css文件中使用多个属性,如果浏览器不理解它,浏览器将忽略它。为不断增长的浏览器智能而欢呼。 : - )
答案 3 :(得分:0)
Conditional comments。您可以指定IE的版本,以便选择CSS