CSS规则未被覆盖

时间:2014-09-03 22:00:41

标签: css

我遇到了一个奇怪的问题,在Mac上的Safari / Chrome / Firefox上似乎没有正确应用CSS规则。

给出以下html代码:

<table id="table" border="1">
    <tr>
        <td id="cell">
            Hello
        </td>
    </tr>
</table>

然后以下css代码按预期工作(如单元格中没有填充):

td { padding: 10px; }
#cell { padding-top: 0px; }

但是这个没有:

#table td { padding: 10px; }
#cell { padding-top: 0px; }

(在线试用:http://jsfiddle.net/xkduyk7m/

我希望两种版本的CSS在这种情况下产生相同的效果,但在第二种情况下,稍后添加并适用于特定单元格的规则不会覆盖第一个规则。

为什么?

3 个答案:

答案 0 :(得分:4)

每个css选择器都有一个值&#34; weight&#34;。组合使它相互覆盖,当它们匹配时,写入顺序将定义优先级。

以下是W3关于如何计算优先顺序的文档:http://www.w3.org/TR/CSS2/cascade.html#specificity

答案 1 :(得分:2)

Css规则不受限制。更具体的css选择器将覆盖另一个不太具体的。地方仅用于具体的情况。

在您的情况下,#table td#cell更具体,因此不会被覆盖。 如果您使用#table #cell,则应该可以使用

答案 2 :(得分:0)

你的问题是#table td {padding:10px;将以#table td {padding-top:10px;填充右:10px的;填充底:10px的;填充左:10px的;通过浏览器。这优先于#cell {padding-top:0px; }。尝试其中一个失败的选项

选项1

#table td { padding: 10px 10px 10px 10px; }
#table #cell { padding: 0px 10px 10px 10px; }

选项2

#table td { padding: 10px; }
#table #cell { padding-top: 0px !important; }

很抱歉使用堆栈溢出Android应用程序进行粗体扩展,并且哈希使其大胆抱歉