我正在编写一些PHP类,这些类将用于创建Wordpress插件,但也可以在任何其他环境中使用。在单独测试我的脚本后,一切似乎都很好,但是当我为它创建一个WP插件时,我预见到了CSS冲突。我最初计划使用特异性来解决这些问题,但并不总是这样做。这是默认的WP主题:
#content tr td {
border-top: 1px solid #E7E7E7;
padding: 6px 24px;
}
如果我尝试指定td没有填充,除非我向表中添加ID而不是类,否则它将无效。我见过流行的插件,它们在每个CSS属性上实现了!important规则,而不是使用ID来实现特异性。哪个最好?我知道!important规则应该谨慎使用,但是在我的表中添加一个ID似乎违背了语义,因为这个表的多个实例会有相同的ID:
文档的ID属性 语言允许作者分配 一个元素实例的标识符 文件树。
http://www.w3.org/TR/CSS2/selector.html#id-selectors
修改 另一种方法也可能是将所有内容包装在带有ID的div中,但如果存在规则#content #main td或类似内容,它仍然会超过我的#someid td。此外,如下所述,让两个元素共享相同的ID是无效的,尽管它可能“有效”。
答案 0 :(得分:3)
正如我在评论中所说,如果 #content
是包装器,您可以在选择器中包含#content
规则以及类来覆盖原始样式元素(它应该是,因为如果被添加到所有表元素,那么将不会有任何方法向WordPress帖子添加多个表,这将是......很奇怪)。
无论如何,如果您 选择将id
添加到多个元素,并在您的媒体资源上使用!important
,我会使用!important
作为简单的原因是虽然!important
可能会使您的样式表无法维护,但添加多个id
也可能会破坏页面上使用的任何JavaScript,并且无法保证所有浏览器中的ID选择器实现都可以容纳多个元素同样id
,所以后果更严重。
基本上,选择一种高度无意义但有效的做法和无效的,未定义的行为。