加入收藏 | 设为首页 | 会员中心 | 我要投稿 泉州站长网 (https://www.0595zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

CSS样式冲突怎么办?有什么处理方法?

发布时间:2022-01-20 16:09:33 所属栏目:语言 来源:互联网
导读:这篇文章主要给大家分享CSS样式冲突的解决方法的内容,本文给大家介绍了几种技巧,还有示例供大家参考,感兴趣的朋友可以参考看看,接下来就跟随小编来学习吧。 1. 细化选择符 通过使用组合器(Combinator)将选择器的描述写得更加精确(参考CSS选择器 - MDN
       这篇文章主要给大家分享CSS样式冲突的解决方法的内容,本文给大家介绍了几种技巧,还有示例供大家参考,感兴趣的朋友可以参考看看,接下来就跟随小编来学习吧。
 
      1. 细化选择符
 
      通过使用组合器(Combinator)将选择器的描述写得更加精确(参考CSS选择器 - MDN  ),例如对于下述代码片段,如果想给.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 是一个非常不好的习惯,会破坏样式表中固有的级联规则,使得调试变得非常困难!

(编辑:泉州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读