影子 DOM

共 22 题
#

1. ::part 与 CSS Variables 在 Shadow DOM 外部样式穿透的工程价值

A CSS 变量不会穿透 Shadow 边界
B ::part 会破坏组件内部结构
C CSS 变量适合单部件覆盖,::part 适合全局主题
D ::part 用于精确选择内部命名部件 ✓ 正确答案
#

2. Shadow DOM 的闭合性(:host/::slotted/::part)

A ::slotted 用于选择内部未投射的节点
B ::part 用于选择插槽内容
C :host 在影子内部选择宿主元素 ✓ 正确答案
D 三者都允许外部无限制穿透内部
#

3. Shadow DOM 中的 :host 与 :host-context 的样式继承与重写

A :host-context 依据外部祖先元素选择宿主 ✓ 正确答案
B :host 只能设置 display,不能设置颜色
C 内部 :host 样式优先级永远高于外部
D :host-context 依据内部子元素选择
#

4. Slot 插槽(<slot name="...">)与 Web Components 组合

A 插槽内容会被移动到影子树中
B 插槽内容归属影子树
C 一个组件只能有一个插槽
D 未匹配具名插槽的子元素进入默认插槽 ✓ 正确答案
#

5. form-associated custom elements,formAssociated 标志与 ElementInternals(setFormValue、setValidity)如何让 Shadow DOM 自定义控件参与原生表单提交与校验?

A setValidity 无法与原生校验流程协作
B setFormValue 只影响显示不影响提交
C formAssociated 标志让元素参与表单提交与校验 ✓ 正确答案
D 无需 attachInternals 即可关联表单
#

6. Shadow DOM 的事件重定向与 composedPath

A 事件重定向使外部 target 变为宿主元素 ✓ 正确答案
B composedPath 不包含内部节点
C 非 composed 事件也能跨边界冒泡
D 事件重定向使 target 始终为内部节点
#

7. Scoped Element Registries 提案(多版本同名自定义元素共存)在微前端与组件库升级中的工程价值

A 它让自定义元素注册表保持全局唯一
B 它允许影子根内注册同名不同版本元素 ✓ 正确答案
C 它只适用于传统单页应用
D 它无法解决微前端组件冲突
#

8. Shadow DOM 的开放(open)与封闭(closed)

A closed 模式 shadowRoot 对外可访问
B open 模式 shadowRoot 对外可访问 ✓ 正确答案
C closed 模式保证绝对安全
D open 模式无法被外部调试
#

9. Declarative Shadow DOM 与流式 SSR/hydration 的配合,服务端渲染自定义元素的工程实现

A 它需要客户端 JS 才能创建影子根
B 它无法被搜索引擎索引
C 它通过 <template shadowrootmode> 声明影子 DOM ✓ 正确答案
D 它只适用于客户端渲染
#

10. Shadow DOM 的 :host(:hover) 与 :host-context() 在组件状态的应用

A :host(:hover) 匹配影子内部元素悬停
B :host-context() 匹配内部子元素
C :host-context() 依据外部祖先匹配宿主 ✓ 正确答案
D :host(:hover) 无法响应宿主悬停
#

11. Shadow DOM 的 <slot> fallback 内容与 named slot 的工程取舍

A 具名插槽通过 name 匹配对应 slot 属性 ✓ 正确答案
B fallback 内容在有内容投射时仍显示
C fallback 用于强制注入内容
D 一个作用域只能有一个插槽
#

12. Shadow DOM 的 getRootNode() 与 composedPath() 在事件溯源的工程实践

A composedPath 返回事件完整路径(含 shadow 内部节点) ✓ 正确答案
B getRootNode 永远返回 document
C composedPath 不包含内部节点
D getRootNode 无法返回 shadowRoot
#

13. Shadow DOM 的 Adopted Stylesheets(adoptedStyleSheets)在多实例样式复用的现代应用

A 一张样式表只能被一个 shadowRoot 使用
B adoptedStyleSheets 替代了所有 DOM 渲染
C 多实例可共享同一份 CSSStyleSheet ✓ 正确答案
D 它只能应用于 document,不能用于 shadowRoot
#

14. 可继承 CSS 属性穿过 Shadow 边界的规则,哪些属性(color、font、line-height)默认继承,:host 的 reset 与外部样式的协作边界?

A margin 会穿过 Shadow 边界继承
B 所有属性都穿透边界
C :host 无法控制继承
D color、font 等可继承属性会穿透边界 ✓ 正确答案
#

15. Shadow DOM(attachShadow、mode: open/closed)的样式与结构封装

A attachShadow 只提供样式封装,不封装结构
B open 模式下 shadowRoot 外部可访问 ✓ 正确答案
C closed 模式下 shadowRoot 外部可访问
D attachShadow 无法设置 mode
#

16. Shadow DOM 的内存占用与 SSR 序列化的边界

A Shadow DOM 不产生额外内存开销
B 所有组件都应使用 Shadow DOM
C DSD 序列化不会增加 HTML 体积
D adoptedStyleSheets 可减少多实例样式内存 ✓ 正确答案
#

17. Shadow DOM 在样式隔离与微前端的工程价值

A Shadow DOM 能隔离 JS 全局变量
B Shadow DOM 能拦截所有事件
C Shadow DOM 提供样式隔离,减少应用间样式冲突 ✓ 正确答案
D 微前端只需 Shadow DOM 即可完全隔离
#

18. CSS Shadow Parts(::part()、::slotted()、exportparts)的样式穿透

A ::part 是无条件穿透的全部样式
B ::slotted 选择内部未投射的节点
C exportparts 用于转发内部部件名给外部 ✓ 正确答案
D exportparts 无法用于嵌套组件
#

19. Shadow DOM 的 declarative Shadow DOM(<template shadowrootmode>)的工程价值

A 它必须依赖客户端 JS 创建影子根
B 它替代了自定义元素
C 它无法用于 SSR
D 它通过模板声明实现无 JS 的影子 DOM 渲染 ✓ 正确答案
#

20. Shadow DOM 的 MutationObserver 跨边界(host vs shadow)

A 宿主 observer 会自动观察影子内部变化
B 观察影子内部需在 shadowRoot 上单独建立 observer ✓ 正确答案
C MutationObserver 无法观察宿主插入
D 插槽变化只能通过 MutationObserver 感知
#

21. Shadow DOM 与 ARIA(无障碍)在跨树遍历的工程实践

A 无障碍树不会遍历影子内部
B 影子内部内容可被屏幕阅读器读取 ✓ 正确答案
C 跨树 aria-labelledby 引用完全不受限制
D 组件无需设置 role 即可无障碍
#

22. Shadow DOM 的 position: fixed 与浏览器渲染层的工程应用

A fixed 元素永远相对视口,不受祖先影响
B fixed 在 Shadow 内无法使用
C 祖先 transform 会改变 fixed 定位上下文 ✓ 正确答案
D 弹层只能渲染在 Shadow 内部