html - ID 属性的属性选择器是否不如 ID 选择器具体?

标签 html css css-selectors css-specificity

我需要做什么才能使 [id^=value] 选择器具有与常规 ID 相同的特异性,为什么它不等于或大于? (考虑到我也给了它 html)

html div[id^="blue"] {
    background-color: blue
}

#blue4 {
    background-color: red
}

jsfiddle: http://jsfiddle.net/bjwe6yr0/1/

最佳答案

属性选择器总是不如 ID 选择器具体;它的特异性值不会根据属性名称而改变。选择器只将特定的属性名映射到类选择器和ID选择器;属性选择器是一个通用概念,不包含任何此类映射。

复杂选择器具有 ID 特异性的唯一方式是它包含一个或多个 ID 选择器。除了实现限制,理论上不可能用任意数量的属性选择器或任何其他类型的简单选择器覆盖单个 ID 选择器。

以下是您的两个选择器的比较:

/* 1 attribute, 2 types -> specificity = 0-1-2 */
html div[id^="blue"] {
    background-color: blue
}

/* 1 ID                 -> specificity = 1-0-0 */
#blue4 {
    background-color: red
}

即使添加 html 也无济于事,因为它只是一个类型选择器。将其更改为 :root,您将获得一个伪类,它同样特定于属性选择器,因此仍然不如 ID 特定。

关于html - ID 属性的属性选择器是否不如 ID 选择器具体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32868028/

相关文章:

javascript - 过滤产生字符的按键事件

css - 您将如何使用 CMS 管理此布局

JQuery:类型错误:对象 0 没有方法 'attr'

regex - 为什么 Selenium 在连字符之前插入反斜杠?

javascript - 使用 innerhtml 显示下拉列表文本而不是值

javascript - 我应该如何显示完整图像,而不在 div 中调整它的大小?

php - HTML、PHP 和 MYSQL 图片彼此相邻

css - 我想要元素的ID作为div的背景

html - CSS - "Reverse"元素 float - 如何将它们保持在底部?

css - 无法使用 CSS 选择器单击带有 Selenium RC 的按钮