理解CSS | 青训营

121 阅读3分钟

选择器优先级 - 特异度

特异度越高,优先级越高

  1. 内联样式:在HTML元素的style属性中直接指定的样式。特异度最高,权重为 1000。
  2. ID选择器:通过ID选择器选择的元素。特异度较高,权重为 100。
  3. 类选择器、属性选择器和伪类选择器:通过类选择器(例如 .classname)、属性选择器(例如 type="text")或伪类选择器(例如 :hover)选择的元素。特异度较低,权重为 10。
  4. 元素选择器和伪元素选择器:通过元素选择器(例如 p、div)或伪元素选择器(例如 ::before)选择的元素。特异度最低,权重为 1。

在特异度计算中,每个部分的权重相加,产生一个特异度值。特异度值越高的规则,优先级越高,将被应用于元素。

p { color: blue; } /* 特异度:1 */ 
#unique-para { color: red; } /* 特异度:100 */ 
p#unique-para { color: green; } /* 特异度:101 */

CSS继承

CSS继承是一种样式传递机制,让子元素可以继承其父元素的某些样式属性。当在父元素上设置特定的样式属性时,子元素会自动继承这些样式,除非子元素自己定义了相同的样式并覆盖了继承的样式。继承可以让网页样式更加灵活和一致,简化样式设置过程。不过,并非所有属性都支持继承,只有特定的一些属性(如字体、文本样式等)才能被子元素继承。

以下是一些常见的可以继承的样式属性:

  1. 字体相关属性:font-familyfont-sizefont-stylefont-weight等。
  2. 文本相关属性:colortext-aligntext-decoration等。
  3. 行高:line-height属性。
  4. 可见性:visibility属性。
  5. 白空间:white-space属性。
  6. 元素的内容居中:text-align: center对非替换元素和img元素上的display: block
  7. 元素的高度(但不包括height: auto):在某些情况下,height属性也可以被继承,但不包括height: auto
  8. inherit

CSS初始值

CSS的初始值是指当没有为元素指定特定样式时,元素将应用的默认样式。每个CSS属性都有一个特定的初始值,这些值是浏览器规定的,并且在不同的浏览器中可能有所不同。

初始值通常是被定义为一种合理的默认状态,以便在没有显式样式的情况下,页面元素仍然可以以一种合理的方式显示。

例如,对于font-size属性来说,在大多数浏览器中,其初始值通常是medium,对于color属性,其初始值通常是浏览器的默认文本颜色,通常是黑色。

CSS求值过程

  1. 收集样式规则:浏览器将外部和内部样式规则收集起来,形成样式规则表。
  2. 选择匹配元素:浏览器根据CSS选择器匹配HTML元素。
  3. 计算特异度:对于匹配多个规则的元素,计算每个规则的特异度,以确定应用哪个样式。
  4. 应用样式:将确定的样式规则应用到元素。
  5. 继承:支持继承的样式属性会从父元素传递给子元素。
  6. 渲染:根据元素的样式计算布局和外观,并在浏览器窗口中渲染显示文档。