2012-02-10 45 views
18

我有几个样式表。第一个样式表是一些我想用作默认样式的样式表。取决于几个因素,用于生成页面的代码可能包含一些样式表,其中的值应覆盖默认值。css样式表定义的顺序是否重要?

如果我使用这个,我可以相信默认样式表中的值将被其他样式表中的值覆盖吗?我使用类选择器,并将名称匹配时覆盖值。

<link href="defaults.css" rel="stylesheet" type="text/css"/> 
<link href="valuestooverridedefaults.css" rel="stylesheet" type="text/css"/> 

这需要适用于所有浏览器,包括手机。如果可能,我想避免使用“!important”。

谢谢!

+2

哇,伙计们。这是很多相同的答案。笑反正@乔恩,你会发现这篇文章有用。它非常清楚地解释了一切。 http://hungred.com/useful-information/css-priority-order-tips-tricks/ – 2012-02-10 17:06:40

回答

16

有一个定义cascade其中的样式排序和应用。 当声明具有相同的的重要性(权重),来源特定性则后者声明获胜。大多数的答案涉及重要性特异性这里而不是起源

以下是有关CSS Cascades一些很好的幻灯片。

+2

仅供参考。链接到幻灯片已经死了。 – Seagull 2015-01-27 10:07:37

+0

可能是这样的:http://css.maxdesign.com.au/#downloadable – Jellema 2015-08-18 11:55:09

+1

这是我见过的CSS最好的学习资源。为我工作。 – raarts 2017-03-17 08:02:39

2

是的,这就是样式表的工作原理。最后一个胜利。

只要确保默认样式表的特异性不超过您的覆盖。是的,如果可以的话,请避免!这很愚蠢。

2

如果我使用这个,我可以相信默认样式表 中的值将被其他样式表中的值覆盖吗?我正在使用 类选择器,并且将在名称匹配时覆盖值。

正如您所指出的,当第二张选择器与第一张选择器相同时,答案为“是”。

使用!important将是例外,所以请避免使用它,正如您也注意到的那样。

3

如果选择器是相同的,则最后一次加载优先,就像在相同样式表中两次声明同一个类一样。

3

如果你已经在不止一个CSS文件中定义样式选择,从最后加载CSS文件中的样式将采取

2

是的 - 线索是“级联”样式表的名称。因此,内联样式将覆盖头中定义的样式,并且头中的样式将覆盖样式表中的样式。最后一个样式表加载可能会覆盖之前加载的样式。如果你使用类似萤火虫或镀铬的检查员,它会告诉你每一种风格来自哪里,或者哪些风格已经过时。

2

简单的答案是肯定的。任何重新向页面下方声明的样式将覆盖在页面加载中声明的类。

为此,类的第二个声明必须在继承中。

类似.content {}和.body .content {}的类在继承样式时可能会有不同的表现。