这是CSS:
.parent div {
height: 25px;
width: 25%;
}
.child {
width: 50% !important;
height: 50px !important;
}
这是HTML:
<body>
<div class="parent">
<div class="child">
<p>CHILD</p>
</div>
</div>
</body>
浏览器从上到下执行CSS。我了解了CSS层次结构,并据此确定了应该应用其代码的类。无论如何,它将应用.parent div代码。 我怎么了?
答案 0 :(得分:2)
更具体地讲解CSS并删除所有!important
:
.parent div.child {
width: 50%;
height: 50px;
}
应该可以正常工作
答案 1 :(得分:1)
您正在使用.parent div
,这意味着它将对嵌套在.parent
类内的所有div应用样式
<div class="parent">
<p>This will not be affected as it's not div tag</p>
<span>This will not be affected as it's not div tag</span>
<div>This will be affected</div>
<div class="child">This affects also</div>
</div>
这就是为什么它仅将.child
类的样式应用于!important
的原因,因为您必须覆盖子类。
以下是您可以使用的一些变体:
.parent {
height: 25px;
width: 25%;
}
.child {
width: 50%;
height: 50px;
}
.parent {
height: 25px;
width: 25%;
}
.parent .child {
width: 50%;
height: 50px;
}
答案 2 :(得分:1)
!important实际上用于覆盖任何其他CSS规则,这些规则也可能适用于应用!important的元素,这可以确保不应用影响相同属性的其他css规则,从而确保样式标记为!important是适用的标记。
正如其他人所述,导致问题的原因是由于您使用了CSS选择器和组合器
答案 3 :(得分:1)
.parent div
具有比.child
高的特异性。
但是,如果您使用.parent .child
而不是仅仅使用.child
,那么它的特异性比.parent div
高,因此您无需添加!important
,就像这样:
.parent .child {
width: 50%;
height: 50px;
}
一些有关CSS特异性的有用读物: