【发布时间】:2011-02-26 08:44:14
【问题描述】:
我正在编写一堆 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 是无效的,尽管它可能“有效”。
【问题讨论】:
-
那为什么不使用
class呢?假设#content是作为表的父级的容器元素,#content .mytables tr td仍将比原始选择器更具体 -
是的,这也可以,但我不想对其添加任何进一步的限制,因为 PHP 类可以在任何 PHP 环境中工作,我不想指定特定于 WP 的#内容 ID。
标签: css css-specificity