Skip to content

css 是从右往左解析的

css 为什么会从右往左解析呢?

下面举个例子:

假设有以下 HTML 结构:

html
<div class="container">
  <div class="box">
    <h2>Title</h2>
  </div>
</div>

以下样式表:

提醒

这里提醒一下,平时我们使用构建工具,会使用 css 预处理,写的 css 大多都是嵌套结构。但是被编译后的 css 最后还是变成了扁平化结构,因为只有这样浏览器才能认识并解析它。

css
/* 样式一 */
.container .box h2 {
  color: blue;
}
/* 样式二 */
.box .item {
  font-weight: bold;
}
/* 样式三 */
.item:hover {
  background-color: yellow;
}

对于 class 为 container 的标签,浏览器会应用样式一、二、三。

首先样式一的最右边 h2 选择器匹配不上,浏览器就直接跳过样式一了,然后检查样式二能否应用在该标签上。

而如果是从左往右解析,第一个 .container 类是匹配的,然后去检查接下来的 .box 类是否匹配,最后发现不匹配,然后浏览器才跳过该样式的解析。

这样从左往右解析就比从右往左解析多了一步。如果是很复杂的 css 选择器,可能不止一步。

所以说,之所以 css 从右往左解析,是因为能提高解析的效率。

Released under the MIT License.