选择器优先级 - 特异度
特异度越高,优先级越高
- 内联样式:在HTML元素的style属性中直接指定的样式。特异度最高,权重为 1000。
- ID选择器:通过ID选择器选择的元素。特异度较高,权重为 100。
- 类选择器、属性选择器和伪类选择器:通过类选择器(例如 .classname)、属性选择器(例如 type="text")或伪类选择器(例如 :hover)选择的元素。特异度较低,权重为 10。
- 元素选择器和伪元素选择器:通过元素选择器(例如 p、div)或伪元素选择器(例如 ::before)选择的元素。特异度最低,权重为 1。
在特异度计算中,每个部分的权重相加,产生一个特异度值。特异度值越高的规则,优先级越高,将被应用于元素。
p { color: blue; } /* 特异度:1 */
#unique-para { color: red; } /* 特异度:100 */
p#unique-para { color: green; } /* 特异度:101 */
CSS继承
CSS继承是一种样式传递机制,让子元素可以继承其父元素的某些样式属性。当在父元素上设置特定的样式属性时,子元素会自动继承这些样式,除非子元素自己定义了相同的样式并覆盖了继承的样式。继承可以让网页样式更加灵活和一致,简化样式设置过程。不过,并非所有属性都支持继承,只有特定的一些属性(如字体、文本样式等)才能被子元素继承。
以下是一些常见的可以继承的样式属性:
- 字体相关属性:
font-family、font-size、font-style、font-weight等。 - 文本相关属性:
color、text-align、text-decoration等。 - 行高:
line-height属性。 - 可见性:
visibility属性。 - 白空间:
white-space属性。 - 元素的内容居中:
text-align: center对非替换元素和img元素上的display: block。 - 元素的高度(但不包括
height: auto):在某些情况下,height属性也可以被继承,但不包括height: auto。 - inherit
CSS初始值
CSS的初始值是指当没有为元素指定特定样式时,元素将应用的默认样式。每个CSS属性都有一个特定的初始值,这些值是浏览器规定的,并且在不同的浏览器中可能有所不同。
初始值通常是被定义为一种合理的默认状态,以便在没有显式样式的情况下,页面元素仍然可以以一种合理的方式显示。
例如,对于font-size属性来说,在大多数浏览器中,其初始值通常是medium,对于color属性,其初始值通常是浏览器的默认文本颜色,通常是黑色。
CSS求值过程
- 收集样式规则:浏览器将外部和内部样式规则收集起来,形成样式规则表。
- 选择匹配元素:浏览器根据CSS选择器匹配HTML元素。
- 计算特异度:对于匹配多个规则的元素,计算每个规则的特异度,以确定应用哪个样式。
- 应用样式:将确定的样式规则应用到元素。
- 继承:支持继承的样式属性会从父元素传递给子元素。
- 渲染:根据元素的样式计算布局和外观,并在浏览器窗口中渲染显示文档。