解决CSS样式冲突的⼏个办法(⼩结)
1. 细化选择符
通过使⽤组合器(Combinator)将选择器的描述写得更加精确(参考),例如对于下述代码⽚段,如果想给.cellphones中的.apple增加样式,只使⽤.apple,势必会对.fruit中的.apple也造成影响。
<div class="cellphones">
<div class="apple"></div>
</div>
<div class="fruit">
<div class="apple"></div>
</div>
可以使⽤后代组合器(Descendant Combinator)或⼦代组合器(Child Combinator)这种更为精确的描述。描述得越精确,优先级越⾼,优先级更⾼的描述会覆盖优先级较低的描述。
/* 后代组合器:所有后代节点 */
.cellphones .apple {
border: 1px solid black;
}
/* 更加精确的后代组合器 */
body .cellphones .apple {
border: 1px solid blue;
css样式表优先级最高}
/* ⼦代组合器:直接⼦节点 */
.cellphones > .apple {
border: 1px solid red;
}
如果给.apple按顺序加上上述全部样式,最终,边框将呈现蓝⾊。
详细的优先级规则参见
2. 再写⼀次选择器名
本质上是上⼀种情况的特例。例如对于.apple,添加如下样式:
.cellphones > .apple.apple {
border: 1px solid purple;
}
.cellphones > .apple {
border: 1px solid red;
}
最终,边框将呈现紫⾊。
3. 改变CSS样式表中的顺序
对于相同类型选择器指定的样式,在CSS⽂件中的顺序靠后的样式会覆盖之前的样式。
例如对于下述代码中的div元素,浏览器渲染的结果会是红⾊的:
<div class="redBorder" class="blackBorder"></div>
.blackBorder {
border: 1px solid black;
}
.redBorder {
border: 1px solid red;
}
需要注意的是,尽管在HTML⽂件中.blackBorder出现在.redBorder后,但优先级的判断是根据他们在CSS⽂件中的顺序。也就是说,CSS⽂件中更为靠后的.redBorder才会被采⽤。
4. 主动提升优先级(不建议)
还有⼀种简单粗暴但是并不建议的办法,就是在需要使⽤的样式后加上关键字!important可以将样式优先级提到极⾼。例如:
<div class="redBorder" class="greenBorder"></div>
.greenBorder {
border: 1px solid green !important;
}
.redBorder {
border: 1px solid red;
}
对于上述代码,边框将显⽰为绿⾊。
使⽤ !important 是⼀个⾮常不好的习惯,会破坏样式表中固有的级联规则,使得调试变得⾮常困难!
参考资料:
到此这篇关于解决CSS样式冲突的⼏个办法(⼩结)的⽂章就介绍到这了,更多相关CSS 样式冲突内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章,希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论