CSS2选择器和样式覆盖

时间:2008-11-18 11:14:03

标签: html css

这是HTML:

<div id="testBlue">
    <span>hello</span>
    <span id="testGreen" class="testGreen">hello2</span>
</div>

如果我在CSS中设置:

#testBlue span { color:Blue; }    
.testGreen, #testGreen { color:Green; }

如何覆盖第二个SPAN中的常规样式?

我已经尝试了id和类选择器,但它没有覆盖它。

6 个答案:

答案 0 :(得分:9)

在CSS中,具有更高特异性的选择器会覆盖更通用的选择器。

在您的示例中,您为id =“testBlue”的div中的范围定义了一种样式。此选择器更具体比类的简单选择器 testGreen ,因此它获胜。您只需要一个比 #testBlue span 更具体的选择器,这不难发现:

#testBlue span.testGreen {
    color: green;
}

答案 1 :(得分:5)

不要使用重要的给它更多的重量

#testBlue span { color:Blue; } 
#testblue #testgreen{color:Red}

修改

我已经被教过了!重要的是不好的做法

css中的某些对象在决定应用规则时具有不同的权重

请参阅http://htmldog.com/guides/cssadvanced/specificity/

我认为使用重要但更好的做法来使用加权来实现特定性并没有错误

答案 2 :(得分:3)

#testGreen { color: red !important;}

.testGreen { color: red !important;}

要么覆盖继承的规则,要么!important会给予一个平等决定的一方更多的权重。

答案 3 :(得分:1)

span#testGreen
{
    color: green;
}

答案 4 :(得分:0)

您可以使用选择器

#testBlue * { color:Blue; } 

答案 5 :(得分:0)

你也可以使用标准的CSS DOM选择器(所以你可以删除类名),如下所示:

#testblue > span:first-child + span{}

testblue span这是直接的后代&amp;&amp; FIRST-CHILD NEXT SIBLING span