在CSS中有三个特别重要的特性,其分别是:层叠性、继承性、优先级。
层叠性
层叠性是指当对同一个元素应用多个样式规则时,这些规则会根据一定的规则相互叠加,最终决定元素的样式。简单来说,就是多个CSS规则作用于一个元素时,它们的样式属性会 “层叠” 在一起,浏览器会根据优先级等规则来确定最终显示的样式。
优先级规则:
- 内联样式的优先级最高: 联样式是直接写在HTML元素的
style
属性中的样式,如<p style="color: red;">,那么此时不管在外部的CSS怎么定义p的颜色,p的颜色都只会是红色。 - ID选择器的优先级大于类选择器大于标签选择器: 如果有一个元素同时被 ID 选择器、类选择器和标签选择器定义了样式。那么这个元素的样式会按照ID选择器->类选择器->标签选择器的顺序设置,因为ID选择器的优先级大于类选择器大于标签选择器。
- 在优先级相同的情况下,后面的样式规则覆盖前面的同名样式规则: 假如说一个HTML文档既有内部样式表(写在<style>标签中的CSS代码),又有外部样式表,那么最终展示的样式将会是内部样式表中的样式,因为后面的样式规则覆盖前面的同名样式,内部样式表中的样式规则在文档流中位于后面。
继承性
CSS中的继承和Java中的很像,子标签会继承父标签的某些样式,如文本颜色、字号等,简单的理解就是“子承父业”,恰当利用继承性可以简化CSS的代码,降低CSS样式的复杂性。子元素可以继承父元素的部分样式(如:text系列、font系列、line系列的属性以及color属性等)。子元素中的属性会覆盖掉父元素中相同的属性。
可以看到p标签继承了div中的color属性,所以说显示的文本是红色的。
但是假如说给p标签单独设置颜色属性,就会覆盖掉继承的属性:
优先级
当同一个元素指定多个选择器时,就会有优先级的产生。若选择器相同,则根据层叠性执行;若选择器不同,则根据选择器的优先级执行:!important>行内样式(元素中的style属性)>id选择器>类选择器(伪类选择器)>元素选择器>继承和通配选择。