CSS 作用域
CSS 作用域模块定义了 CSS 作用域和封装机制,重点关注 Shadow DOM 作用域机制。
CSS 样式要么是全局作用域,要么是作用域限定为 影子树。全局作用域样式适用于节点树中与选择器匹配的所有元素,包括该树中的自定义元素,但不适用于构成每个自定义元素的影子树。选择器及其相关的样式定义不会在作用域之间泄露。
在影子树的 CSS 中,选择器不会选择树之外的元素,无论是全局作用域还是其他影子树。每个自定义元素都有自己的影子树,其中包含构成自定义元素的所有组件(但不包括自定义元素本身或“宿主”)。
有时能够从影子树内部的上下文对宿主进行样式设置会很有用。CSS 作用域模块通过定义以下选择器实现了这一点:
- 使影子树能够对其宿主进行样式设置。
- 使外部 CSS 能够对 Shadow DOM 中的元素进行样式设置(但仅当相关自定义元素设置为接受外部样式时)。
参考
选择器
指南
- Web 组件
-
Web 组件的介绍 — 各种用于创建可复用 Web 组件的技术 — 这些自定义元素的功能与代码的其余部分是封装的。
- 使用 Shadow DOM
-
Shadow DOM 基础知识,包括将 Shadow DOM 附加到元素、添加到 Shadow DOM 树以及样式设置。
- 使用模板和插槽
-
使用
<template>和<slot>元素定义可复用 HTML 结构,并在 Web 组件内部使用该结构。 - 使用自定义元素
-
Custom Elements API 介绍,用于创建封装功能的自定义元素的 JavaScript API。
相关概念
-
CSS
:defined伪类 -
CSS
::part伪元素 -
HTML
<template>元素 -
HTML
<slot>元素 -
HTML
slot属性 -
影子树 词汇表术语
-
DOM 词汇表术语
-
复合选择器 术语
-
选择器列表 术语
-
Web 组件 接口、属性和方法
CustomElementRegistry接口ElementAPIHTMLSlotElement接口HTMLTemplateElement接口ShadowRoot接口
规范
| 规范 |
|---|
| CSS 作用域模块级别 1 |
另见
- CSS 选择器模块
- CSS 伪元素 模块
- CSS 命名空间模块
- CSS shadow-parts 模块
- web.dev 上的模板、插槽和阴影 (2023)
- web.dev 上的自定义元素最佳实践 (2019)