我很好奇为什么第二种颜色会被第一种颜色覆盖?有没有办法通过不添加!important
或将其包装在正文类中?
body.football h3 {
color: #a07a40;
}
footer h3 {
color: white;
}
答案 0 :(得分:7)
如果存在两个针对同一元素的选择器,则级联样式表将采用分层方案。更具体的一个将优先。
然而,你的身体可能不应该像这样上课,这是最好的做法。它乞求头痛。
您的选择:
快速而肮脏,您可以使用后代选择器>
来指定直接子项。例如:
body.football > h3 {
color: #a07a40;
}
footer > h3 {
color: white;
}
<body class="football">
<h3>Football is the Bees Knees</h3>
<footer>
<h3>Hi Ma Hi Pa</h3>
</footer>
</body>
或者,根据您的OP,您还可以将正文内容包装在一个部分或div中,并将样式应用于IE:
section#football h3 {
color: #a07a40;
}
footer h3 {
color: white;
}
<body>
<section id="football">
<h3>Football Yo</h3>
</section>
<footer>
<h3>Yo Football</h3>
</footer>
</body>
编辑:我应该补充一点,两个元素之间的空格意味着你将要点击所有作为父元素后代的元素。
答案 1 :(得分:1)
它被覆盖,因为css将使用最具体的选择器而非任何其他选择器。
要解决此问题,您需要使用!important
标记或更改页脚选择器更具体,最简单的方法是使用ID。
一个例子:
#footer h3{
color: white;
}
<footer id='footer'><h3></h3></footer>
答案 2 :(得分:0)
CSS喜欢在不太具体的声明上更喜欢更具体的声明。没有看到附带的HTML可能有点难以确定,但很可能是因为你的body.football声明更具体。
答案 3 :(得分:0)