javascript - 开发组件时如何解决CSS被覆盖的问题
PHP中文网
PHP中文网 2017-04-10 15:34:43
[JavaScript讨论组]

页面引入组件时,页面上的CSS覆盖了组件的CSS,如何解决这种情况呢

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(5)
黄舟

问题:页面上的CSS覆盖了组件的CSS

你说的意思应该是页面上定义CSS,但是被优先继承,导致外部链接中的组件CSS失效

被优先继承,导致失效的原因有几个:

  1. 引用的样式名称冲突,比如页面内的class和组件内的class一样
  2. 或者使用了行内样式,如style="color:red",这个优先级很高,会覆盖其他样式
  3. 页面内的class命名过于简单,如class="menu"class="nav",因为这些是HTML5的新元素,有些组件库会做默认设置

解决方案

其实想要避免这些问题很简单
1. 代码编写规范,不使用行内样式
2. 编写样式时,采用模块化的命名规范,这里引荐Alice的命名规范,比如:

HTML

<p class="ui-box">
   <h3 class="ui-box-title ui-box-title-hover"></h3>
   <p class="ui-box-conent"></p>
</p>

CSS

.ui-box {}
.ui-box-title {}
.ui-box-title-hover {}
.ui-box-conent {}
大家讲道理

这个肯定是页面的样式和组件的样式名称是一样导致的,再者就是在class或id一样的情况下组件css的优先级没有页面css对应的优先级高。
对应的解决办法就是修改页面的css和组件css冲突的部分的名称,或者把组件的css优先级调整到大于页面css的优先级。

天蓬老师
  1. 把组件的样式放后面;
  2. 给组件的样式加上!important;
PHP中文网

组件的css后引入。 如果权重还是没有页面的高。

建议给组件css都 套上一个 id, 这样比较好一点。正好也给你的组件用上同一个id.方便隔离。

伊谢尔伦

覆盖》不明白什么意思
!important加上还会覆盖吗》》》》

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号