属性选择器与CSS类选择器共享特定级别的特异性。在你的例子中,你有input[type=number]
和.num
。
input[type=number]
具有0 0 1 1
特异性,它有在它两个选择器,一元件input
和属性[type=number]
。
.num
,具有0 0 1 0
的特异性,只有一个选择器,类。
由于input[type=number]
比.num
具有更高的特异性,它的风格将永远胜出,无论放置。如果input[type=number]
更改为[type=number]
,则放置会发挥作用,因为它们都具有0 0 1 0
的特异性,后者将胜出。
input {
padding: 0.25em 0.5em;
}
/* Specificity - 0, 0, 1, 1 */
input[type="number"] {
border-style: dotted;
}
/* Specificity - 0, 0, 1, 0 */
[type="number"] {
border: 1px dashed indianred;
}
/* Specificity - 0, 0, 1, 0 */
.num {
border-color: rebeccapurple;
}
/* Specificity - 0, 0, 1, 0 */
[type="number"] {
border-style: solid;
border-width: 2px;
}
<input type="number" class="num" name="number" value="0">
*注:我只使用了相同的CSS选择器两次演示目的。注意哪个border-style
胜出。尽管在dotted
之后试图应用dashed
和solid
,但由于特异性,两者均未应用。当特异性值相同时,应用哪个规则的层叠结构。
在您的问题中发布您的代码示例,而不是jsFiddle – j08691
我更新了帖子 – dclem
使用特定计算器,如https://specificity.keegan.st/。 – 2017-06-12 14:16:36