您好,欢迎访问一九零五行业门户网

css样式冲突怎么办

解决方法:1、细化选择符,将选择器的描述写得更加精确;2、再写一次选择器名;3、改变css样式表中的顺序;4、主动提升优先级,在需要使用的样式后加上关键字“!important”。
本教程操作环境:windows7系统、css3&&html5版、dell g3电脑。
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;}/* 子代组合器:直接子节点 */.cellphones > .apple { border: 1px solid red;}
如果给.apple按顺序加上上述全部样式,最终,边框将呈现蓝色。
详细的优先级规则参见css 优先级
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样式冲突怎么办的详细内容。
其它类似信息

推荐信息