2012-03-31 102 views
16

如何覆盖其他样式表中指定的样式?没有重写样式!重要

我不想用!重要标签来覆盖它们。我宁愿指定一个新的样式表,把样式放在那里。这可以通过更改样式表的加载顺序来实现吗?

+1

为什么是Twitter的自举标签已移除?我认为这与这个问题有关。 – 2012-03-31 14:11:06

+0

@AndresIlich,另一个样式表不一定是'twitter-bootstrap'。 – Starx 2012-03-31 14:25:03

+0

@Starx我明白,但最初提到这个框架的问题,与海报案件无关吗? – 2012-03-31 14:32:50

回答

59

这取决于。 CSS代表层叠样式表,并且有样式应用于的特定顺序,覆盖以前的样式。没有太多的细节:

  • 如果你的规则具有相同的特征,只需加载你的样式表第二,一切都会正常工作。
  • 如果您的规则具有更高的特异性,则顺序无关紧要。
  • 如果您的规则具有较低的特异性,您需要修改它们以匹配。

那么,什么是特异性?基本上,它是规则中每个选择器的总和。所以这个:

a { 
    background-color: black; 
    color: white; 
} 

有比这少的特异性:

body a { 
    color: orange; 
} 

。 ID选择器比类选择器具有更高的特异性,它们与伪类选择器具有相同的特异性,它们比标记选择器具有更高的特异性。所以,如果所有的内容包含在<div>contentid,你将能够覆盖一个风格,看起来像这样:

body a { 
    border: 0; 
} 

有了:

#content a { 
    border: 1px solid black; 
} 
+0

令人难以置信的答案。这解决了我的问题。希望我可以多次投票! – Hendrik 2012-04-01 11:03:51

+0

很好的解释,谢谢! – 2014-10-06 12:23:24

+0

但我被告知使用ID选择器的样式是不好的做法。 ID选择器应该只用于JS? – Matthew 2015-06-14 05:37:25

2

应该首先加载boostrap样式表,然后再加载你的样式表,这样你的覆盖将被选中。

这被称为“级联”中,从文档:

级联

这是要掺混由一些样式表语言如CSS,以允许从几个来源风格信息中提供的功能 在一起。例如,这些可以是企业风格准则, 一组文档通用的样式,以及特定于单个 文档的样式。通过单独存储这些样式表,样式表可以重复使用,从而简化了创作过程,并更有效地使用了网络缓存。 级联定义了一个有序的样式表顺序,其中 规则在后面的表格中具有比以前更高的优先顺序。不是 所有样式表语言都支持级联。

0

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

<p class="example"> 
    This is a <strong>test</strong>. 
</p> 

strong { color: red; } 
p strong { color: green; } 
p.example strong { color: blue; } 

该文本将是蓝色的。规则的顺序无关紧要。

+3

这不是一个很好的方式来给出一个答案 – sandeep 2012-03-31 13:58:55

+0

,但它是一个很好的链接,说明在星球大战的基础上的特异性:) – roger 2012-03-31 14:08:21

+0

这是更好的,如果你举例说明OP的权力问,然后给一个链接作为参考。 – sandeep 2012-03-31 14:12:48

1

如果您可以增加specificity of styles,则可以在不使用!important的情况下执行此操作。

例如:

HTML

<div id="selector"> 
    <a>Hello</a> 
    <a class="specific">Hi</a> 
</div> 

CSS

div a {} 

将被忽略,如果你给里面#selector

.specific { } 

在这里,我一个特定的类这是一个demo解释我的观点。基本上,这个想法是尽可能地定义样式。