# @csstools/postcss-cascade-layers 中文文档

规范地址：https://npmcn.com/package/%40csstools/postcss-cascade-layers/

版本：6\.0\.2
npm 元数据更新时间：2026-10-05T19:58:08.664Z
中文译文更新时间：2026-11-11T03:27:05.424Z
软件包许可：MIT-0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40csstools/postcss-cascade-layers
原文对照：https://npmcn.com/package/%40csstools/postcss-cascade-layers/?lang=original
项目主页：https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-cascade-layers#readme
源码仓库：https://github.com/csstools/postcss-plugins

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：19.9 kB，6 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=20\.19\.0
- 运行依赖：2 个
- peer 依赖：postcss ^8\.4
- 首次发布：2022-05-12T13:10:05.799Z
- 最新版本发布：2026-10-05T19:58:08.388Z
- 近 30 天下载量：28192613（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：25（近 12 个月 3 个）

## 中文简介

CSS 中使用级联层

## 安装

```sh
npm install @csstools/postcss-cascade-layers
```

也可以使用：`pnpm add @csstools/postcss-cascade-layers`、`yarn add @csstools/postcss-cascade-layers`、`bun add @csstools/postcss-cascade-layers`

## README

# PostCSS 叠加层 [![PostCSS Logo](https://postcss.github.io/postcss/logo.svg)](https://github.com/postcss/postcss)

`npm install @csstools/postcss-cascade-layers --save-dev`

[PostCSS 叠加层](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-cascade-layers) 让您使用 `@layer` 之后 [分层规格](https://www.w3.org/TR/css-cascade-5/#layering)。关于层的更多信息,请查看 [CSS 叠加层完整指南](https://css-tricks.com/css-cascade-layers/) 米里亚姆·苏珊娜著.

```css

target {
    color: purple;
}

@layer {
    target {
        color: green;
    }
}


/* becomes */


target:not(#\#) {
    color: purple;
}

target {
        color: green;
    }

```

## 如何运作

[PostCSS 叠加层](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-cascade-layers) 创造特异性的"层".

它对您所有的风格都应用了额外的特异性,基于:

-   找到最具体的选择器
-   定义地层的顺序

```css
@layer A, B;

@layer B {
    .a-less-specific-selector {
        /* styles */
    }
}

@layer A {
    #something #very-specific {
        /* styles */
    }
}

@layer C {
    .a-less-specific-selector {
        /* styles */
    }
}
```

最具体的选择器 :

-   `#something #very-specific`
-   `[2, 0, 0]`
-   `2 + 1` - > (中文) `3` 确保没有重叠

层定义的顺序:

-   `A`
-   `B`
-   `C`

| 层 | 前一次调整 | 具体调整 | 选择器 |
| --- | --- | --- | --- |
| `A` | `0` | `0 + 0 = 0` | 不详 |
| `B` | `0` | `0 + 3 = 3` | `:not(#\#):not(#\#):not(#\#)` |
| `C` | `3` | `3 + 3 = 6` | `:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#):not(#\#)` |

这种方法让更重要的(后)层总是凌驾于不太重要的(更早)层上.  
层层内部有足够的空间 让每个选取者按预期工作 并覆盖.

更多层次的特异性会更长 `:not(...)` 要生成的选择器 .

> \[大 [PostCSS 叠加层](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-cascade-layers) 假设处理您的完整 CSS 捆绑.  
> 如果您的构建工具单独处理文件或并行处理文件, 输出将是不正确的 .  
> 使用 [`@csstools/postcss-bundler`](https://github.com/csstools/postcss-plugins/tree/main/plugin-packs/postcss-bundler) 财务报告和审定财务报表 `@import` 语句是在此插件处理之前确保您的 CSS 捆绑的一种方法 .

## 使用量

添加 [PostCSS 叠加层](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-cascade-layers) 对您的项目:

```bash
npm install postcss @csstools/postcss-cascade-layers --save-dev
```

当作一个 [邮政](https://github.com/postcss/postcss) 插件 :

```js
const postcss = require('postcss');
const postcssCascadeLayers = require('@csstools/postcss-cascade-layers');

postcss([
    postcssCascadeLayers(/* pluginOptions */)
]).process(YOUR_CSS /*, processOptions */);
```

## 选项

### 关于RevertLayer关键词

这个 `onRevertLayerKeyword` 选项启用警告,如果 `revert-layer` 已使用. 正在转换 `revert-layer` 对于此插件中较旧的浏览器是不可能实现的 .

默认为 `warn`

```js
postcssCascadeLayers({ onRevertLayerKeyword: 'warn' }) // 'warn' | false
```

```css
/* [postcss-cascade-layers]: handling "revert-layer" is unsupported by this plugin and will cause style differences between browser versions. */
@layer {
    .foo {
        color: revert-layer;
    }
}
```

### 关于有条件规则的变动

这个 `onConditionalRulesChangingLayerOrder` 如果在条件规则中以多个不同的顺序声明了地层,选项将启用警告. 在此插件中无法为旧浏览器正确转换这些层 .

默认为 `warn`

```js
postcssCascadeLayers({ onConditionalRulesChangingLayerOrder: 'warn' }) // 'warn' | false
```

```css
/* [postcss-cascade-layers]: handling different layer orders in conditional rules is unsupported by this plugin and will cause style differences between browser versions. */
@media (min-width: 10px) {
    @layer B {
        .foo {
            color: red;
        }
    }
}

@layer A {
    .foo {
        color: pink;
    }
}

@layer B {
    .foo {
        color: red;
    }
}
```

### 进口规则

这个 `@import` at-rule 也可以与级联层一起使用,具体用于创建类似的新层:

```css
@import 'theme.css' layer(utilities);
```

如果您的 CSS 使用 `@import` 有层层,你还需要 [邮政进口](https://github.com/postcss/postcss-import) 插件 。 仅此插件无法处理 `@import` 规则.

此插件会在发现时提醒您 [邮政进口](https://github.com/postcss/postcss-import) 没有改变`@import` 规则.

```js
postcssCascadeLayers({ onImportLayerRule: 'warn' }) // 'warn' | false
```

### 贡献者

此插件的作者是 [奥卢·尼伊-阿沃苏西](https://github.com/oluoluoxenfree) 财务报告和审定财务报表 [萨娜·贾韦德](https://github.com/sanajaved7) 从 [怪鸟](https://github.com/oddbird) 还有罗曼·门克.

## 常见问题

### @csstools/postcss-cascade-layers 是什么？

CSS 中使用级联层

### 如何安装 @csstools/postcss-cascade-layers？

在项目目录运行 npm install @csstools/postcss-cascade-layers，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：postcss（^8\.4）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @csstools/postcss-cascade-layers 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @csstools/postcss-cascade-layers 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @csstools/postcss-cascade-layers 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20\.19\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @csstools/postcss-cascade-layers 可以商用吗？

@csstools/postcss-cascade-layers 使用 MIT-0 许可。声明的许可为 MIT-0，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### @csstools/postcss-cascade-layers 的下载量有多少？

根据 npm 官方下载统计，@csstools/postcss-cascade-layers 在 2026/10/11 – 2026/11/09 这 30 天内被下载 28,192,613 次，日均约 939,754 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @csstools/postcss-cascade-layers 还在维护吗？

最新版本 6\.0\.2 发布于 2026/10/06（1 个月前）；至今共发布 25 个版本，其中过去 12 个月发布了 3 个；首次发布于 2022/05/12。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

