1

我已经设置了以下示例:http: //jsfiddle.net/SXEty/

<style>
table td, th { padding: 8px; text-align: left; }
table td:nth-child(1) { color: red; }
table td { color: blue }
</style>
...
<table>
    <tr><th>Name</th><th>Age</th><th>City</th></tr>
    <tr><td>Bob</td><td>27</td><td>Los Angeles</td></tr>
    <tr><td>Charlie</td><td>34</td><td>San Diego</td></tr>
    <tr><td>Daniel</td><td>41</td><td>San Francisco</td></tr>
</table>

我很好奇为什么第一列是红色而不是蓝色。

在我的 CSS 中,我将每个第一个孩子设置为“红色”。但随后我的下一行 CSS 将每个元素设置为“蓝色”。CSS的第二行(颜色:蓝色)不会覆盖上一行(颜色:红色)吗?还是 nth-child 属性具有优先权?如果它确实有优先权,那么所有浏览器都这样吗?

4

2 回答 2

5

因为td:nth-child(1)比刚才更具体td

我建议使用 Star Wars 主题对 CSS 特异性进行很好的概述

http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html

在此处输入图像描述

于 2013-02-25T23:08:48.857 回答
3

因为是更具体的选择器,所以即使后面声明了后者table td:nth-child(1),它也会优先。table td

有趣的是,如果您使用 来定位父 ID table td,则所有内容都会变为蓝色 - 即使table td:nth-child(1)稍后在 CSS 表中声明也是如此。

在此处输入图像描述 http://jsfiddle.net/mLrAf/2/

于 2013-02-25T23:09:15.887 回答