如何防止我的风格被覆盖在周围div上的另一种风格?

时间:2009-07-28 20:21:04

标签: html css css-selectors

看起来很简单,但这里有问题。

样式表如下:

#Content h1, #Content h2, #Content h3, #Content h4, #Content h5, #Content h6 {
  color: #405679;
}

h3#issueHeader {
  color: blue;
}

HTML就像这样:

<div id="Content">
  <h3 id="issueHeader">In This Issue:</h3>
</div>

而不是像我期望的那样覆盖内容选择器的我的issueHeader选择器,Firebug和我的眼球告诉我颜色是从div继承的,而 issueHeader 选择器被覆盖了。 Hunh?

6 个答案:

答案 0 :(得分:41)

您可以在h3#issueHeader上抛出!important属性以强制浏览器使用该样式

h3#issueHeader {
  color: blue !important;
}

但是,它仅在IE6中得到部分支持

<小时/> 此外,这应仅用作其他解决方案的最后手段。这是因为如果您网站的用户想要覆盖您的风格,重要的是成为一个有用的工具。请参阅此文章:Don't use "!important"

答案 1 :(得分:38)

css为具有更多specific选择器的元素赋予更多权重。因此,如果您希望#Content h3不要覆盖h3#issueHeader,请为其指定另一个选择器:例如#Content h3#issuesHeader

如果您的h1 ... hx元素通常是#405679,请将它们设置为不带#Content选择器的元素。然后在需要时使用更具体的选择器覆盖它们。

答案 2 :(得分:3)

尝试将选择器设置为:

#Content h3#issueHeader {
    color: blue;
}

这应该解决它。

答案 3 :(得分:1)

你正在拥有所谓的CSS特异性。这是一个很好的写法(使用星球引导),它解释了点的基础知识以及如何计算级联的内容:

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

答案 4 :(得分:0)

如果id =“issueHeader”重复,则可以执行此操作。

答案 5 :(得分:0)

您可以使用 Shadow DOM (阴影DOM),该元素将为元素添加完整的封装,然后不受任何全局样式的影响。 您可以在本文中找到有关此内容的更多信息:https://bitsofco.de/what-is-the-shadow-dom/