use*_*707 6 html css css-selectors css-specificity css3
我正在尝试修改我的HTML,JavaScript和CSS3考试; 我对CSS选择器有点困惑,并且优先考虑.
我有以下CSS:
table { border: 1px solid black; }
tr:nth-child(odd) { background-color: red; }
tr td:nth-of-type(even) { background-color: blue; }
td { background-color: green; }
Run Code Online (Sandbox Code Playgroud)
我认为无论最后出现什么都是优先考虑的,所以在我看来,表格中的所有单元格都是绿色的.
然而,根据第n个类型选择器,偶数单元格仍为蓝色.即使我将它放在顶部并移除绿色td线,蓝色仍然显示在中间,只有奇数单元格显示为红色.
有人可以解释为什么nth-of-type似乎先于其他一切?
这是一个例子:
table { border: 1px solid black; }
tr:nth-child(odd) { background-color: red; }
tr td:nth-of-type(even) { background-color: blue; }
td { background-color: green; }Run Code Online (Sandbox Code Playgroud)
<table style="width: 100%;">
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
<td>80</td>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
<td>80</td>
</tr>
</table>Run Code Online (Sandbox Code Playgroud)
这里发生的是选择器特异性.
以下选择器类型列表是通过增加特异性:
- 通用选择器(例如
*)- 类型选择器(例如
h1)
类选择器(例如.example)
属性选择器(例如[type="radio"])- 伪类(例如
:hover)- ID选择器(例如
#example)- 内联样式(例如
style="font-weight:bold")
在您的示例中,伪选择器:nth-of-type(even/odd)是类别3,它优先,因为只有同意选择器type selectors(类别2.1).
与该链接背后可用的MDN信息不同,我已经更正了该类型,类和属性选择器实际上具有相同的特异性.