当多个CSS样式应用到同一个元素时,这些样式之间可能存在对同一个属性的不同格式设置,当发生冲突时,浏览器通过遵循以下原则来解决CSS冲突。
优先级原则
优先级原则:指的是优先级最高的样式有效,其中行内样式>内嵌式样式|链接外部样式,即行内样式的优先级最高,而内嵌式样式和链接外部样式的优先级由它们出现的位置决定,谁出现在后面谁的优先级就高。在同类型的样式中,选择器之间也存在不同的优先级,选择器的优先级规定为:ID选择器>class选择器|伪类选择器|属性选择器>元素选择器|伪元素选择器>通配符选择器|子元素选择器|相邻兄弟选择器,即ID选择器的优先级最高。
最近原则
最近原则:主要是针对继承样式,越靠近格式化的元素的父类样式,优先级越高。如:<div><p>…</p></div>,给<p>标签设置样式,它的优先级就高于<div>标签样式。
同一属性的样式定义,后面定义的样式会覆盖前面定义的样式。
此外,把!important加在样式的后面,可以提升样式的优先级为最高级(高过内联样式)
如何解决css冲突?
具体解决方法
1、细化选择符
假如全局是这样来定义一个元素的样式的:.abc {background:#000},同时这个class为abc的元素是隶属于某个元素的,比如下面这样的html代码结构
<div class="container"> <div class="abc"></div> </div>
那么在细化css里面,只需要在.abc前面加多一个父元素的选择符就行了:
.container .abc {background:#fff}
这样.container .abc的优先级就大于了.abc,自然细化css里面的background设置也就不会被全局CSS覆盖了~~
2、提升css样式的优先级
这种方法个人不太推荐,相对而言会简单粗暴一些。同样是上面的例子,在细化CSS里面,只要在样式后面加一个!important,例如这样:
.abc {background:#fff !improtant;}
这个样式的优先级就会默认提升到顶级,全局样式就无法影响到它了。
3、改变多个CSS样式的加载顺序
这种方法比较简单,就是只要把细化css加载在全局css之后就行了,这样后面的样式就会自动覆盖前面的样式。不过如果你的html里面这两个样式表的加载顺序是先细化后全局的话,就要稍微调整一下代码才行。
更多web前端开发知识,请查阅 HTML中文网 !!
以上就是如何解决css冲突?的详细内容,更多请关注易知道|edz.cc其它相关文章!