• 技术文章 >web前端 >css教程

    css样式冲突怎么办

    醉折花枝作酒筹醉折花枝作酒筹2021-07-15 09:42:03原创81

    解决方法: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样式冲突怎么办的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:css
    上一篇:纯CSS如何实现血轮眼+轮回眼特效(代码详解) 下一篇:css如何设置所有标签
    第16期线上培训班

    相关文章推荐

    • css3如何实现图片平移• css如何加空格• css怎么设置文本框宽度• 怎么用css实现左右运动效果• 纯CSS如何实现血轮眼+轮回眼特效(代码详解)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网