现代 UI 与排版渲染

共 42 题
#

1. <dialog> showModal 的焦点陷阱(focus trap)、top layer 渲染与 ::backdrop 样式化的协作,以及非模态 show() 的差异

A showModal() 使 dialog 进入 top layer,焦点被限制在对话框内,::backdrop 可样式化遮罩 ✓ 正确答案
B show() 与 showModal() 都会进入 top layer 并锁定焦点
C ::backdrop 是 dialog 的子元素,受 z-index 影响
D 模态 dialog 按 Esc 会直接触发 close 事件,无法阻止关闭
#

2. View Transitions API 的 document.startViewTransition 在 SPA 路由切换时的视觉连续性与 Promise-based 钩子

A updateCallbackDone 在 DOM 更新回调完成后 resolve,finished 在过渡结束时 resolve ✓ 正确答案
B ready 在 DOM 更新回调执行完毕时立即 resolve
C updateCallbackDone 在过渡动画结束后才 resolve
D 三个 Promise 同时 resolve
#

3. CSS :has() 选择器作为父选择器在折叠菜单、卡片可选状态与表单校验错误展示的工程价值

A :has() 只能匹配直接子元素
B :has() 匹配时无任何性能成本
C :has() 只能用于表单元素
D :has() 可基于后代或兄弟状态反向匹配祖先,适合折叠菜单、选中态与校验联动 ✓ 正确答案
#

4. CSS :focus-visible 与 :focus-within 在键盘可达性、焦点环管理与无障碍的协作

A :focus-visible 通常匹配键盘等非指针输入引起的聚焦,:focus-within 匹配自身或后代聚焦 ✓ 正确答案
B :focus-within 只在键盘聚焦时匹配
C :focus-visible 与 :focus-within 语义完全相同
D 两者都不能用于容器元素
#

5. View Transitions 的 ::view-transition-group/::view-transition-image-pair 伪元素在路由切换的视觉定制

A image-pair 负责元素的位置与尺寸动画
B group 负责新旧快照的混合,image-pair 负责几何变换
C group 负责几何变换,image-pair 负责新旧快照的混合显示 ✓ 正确答案
D 视图过渡只有一层伪元素,无法定制
#

6. :has() 在 CSS-only 的表单联动校验(如确认密码匹配)与 JavaScript 校验的取舍

A 密码匹配等值比较仍需 JS,:has() 适合承担状态级联动样式 ✓ 正确答案
B :has() 无法基于表单控件状态做任何联动
C 纯 CSS 可直接比较两个输入框的值是否相等
D 使用 :has() 后必须完全移除 JavaScript 校验
#

7. CSS 变量与 @property 类型注册在 View Transitions 过渡中的离散动画支持

A 未注册的 CSS 变量也能被 transition 平滑插值
B @property 只影响变量作用域,不影响动画
C @property 注册 syntax 后自定义属性可按数值类型参与插值动画 ✓ 正确答案
D 注册为 custom-ident 的变量同样可以平滑插值
#

8. font-display(block/swap/fallback/optional)各取值对 FOIT/FOUT 的控制行为,以及它们对 LCP 与 CLS 的不同影响

A optional 几乎不阻塞文本渲染,弱网下可能完全放弃自定义字体 ✓ 正确答案
B swap 在字体就绪前使用回退字体,就绪后交换,能避免所有布局偏移
C block 值让文本立即用回退字体显示
D 所有 font-display 取值对 LCP 的影响完全相同
#

9. 可变字体(variable fonts)的注册轴(wght/wdth/ital/opsz)与 font-variation-settings 连续取值能力,相较多个静态字重文件的体积与请求收益

A wght/wdth/ital/opsz 是常见注册轴,font-variation-settings 可连续取值 ✓ 正确答案
B 可变字体每个字重都必须单独请求一个文件
C font-variation-settings 只能取整数
D 可变字体文件体积必然大于多份静态字体之和
#

10. @font-face 的 unicode-range 分包机制与浏览器按需下载子集的行为,如何与 preload 协同避免首屏字体缺字

A unicode-range 会把整个字体文件一次性全量加载
B preload 字体无需与 @font-face 的 crossorigin 保持一致
C 浏览器只下载页面实际字符所覆盖的子集,preload 可提前加载关键子集 ✓ 正确答案
D unicode-range 只影响字体名称
#

11. Popover API(popover 属性、popovertarget、::backdrop)的顶层渲染与点击外部关闭

A popover 元素默认渲染在普通文档流中
B manual 模式同样支持点击外部关闭
C auto 模式弹出层渲染于 top layer,点击外部可自动关闭 ✓ 正确答案
D Popover API 不能使用 ::backdrop 样式
#

12. 关键字体 preload 与 font-display 的协作,以及 preload 跨域字体时 crossorigin 属性缺失导致的重复下载问题

A preload 字体请求无需考虑 CORS 模式
B 跨域字体 preload 必须带 crossorigin,否则可能与 @font-face 请求模式不一致而重复下载 ✓ 正确答案
C font-display 与 preload 不能同时使用
D 同源字体 preload 永远不需要 crossorigin
#

13. CSS Custom Highlight API(::highlight、CSS.highlights)

A Custom Highlight 会把高亮文本包裹进 span 标签
B ::highlight 的优先级始终低于普通文本样式
C 通过 CSS.highlights 注册命名高亮,再用 ::highlight() 伪元素设置样式,且不改动 DOM ✓ 正确答案
D Custom Highlight 无法高亮跨节点的文本
#

14. color-scheme 与 light-dark 函数在系统主题跟随与设计令牌响应

A color-scheme 只影响页面背景色
B 设置 color-scheme 后原生控件渲染不会改变
C light-dark() 只能用于根元素
D light-dark() 根据 used color-scheme 从两个参数中返回对应颜色,配合 color-scheme 实现主题化 ✓ 正确答案
#

15. CSS Custom Highlight API 在文本搜索高亮、IME 选区、翻译遮罩的应用

A 搜索高亮必须把命中文本替换为 mark 元素
B Custom Highlight 可反复更新 Range 实现搜索、IME 与翻译遮罩,且不改变 DOM 结构 ✓ 正确答案
C Custom Highlight 的 Range 在文本编辑后自动保持有效
D 同一页面只能注册一个 Highlight
#

16. <details>/<summary> 的原生折叠实现与局限

A details/summary 是零 JS 的折叠方案,但动画、状态持久化与复杂无障碍需增强 ✓ 正确答案
B 原生 details 展开收起自带平滑动画
C details/summary 无法通过键盘操作
D summary 不能自定义任何样式
#

17. scrollbar-gutter: stable 与 scrollbar-color 在布局稳定性与暗色主题的工程价值

A scrollbar-gutter: stable 会移除滚动条占位
B scrollbar-color 与暗色主题无关
C scrollbar-color 只能设置一种颜色
D scrollbar-gutter: stable 固定预留滚动条沟槽,避免出现或消失引发的布局抖动 ✓ 正确答案
#

18. caret-color/accent-color/interactivity: inert 在现代控件原生的样式化

A accent-color 只能影响文本颜色
B inert 元素仍可被 Tab 聚焦
C inert 只能用于表单控件
D caret-color 控制文本插入符颜色,accent-color 控制原生控件强调色,inert 禁用整棵子树的交互 ✓ 正确答案
#

19. command 与 commandfor 属性在键盘可发现的菜单/按钮激活

A commandfor 用于指定命令执行后的跳转地址
B command 属性只能用于 a 标签
C commandfor 指向目标元素、command 声明命令,浏览器自动绑定点击激活,提升键盘可发现性 ✓ 正确答案
D 使用 command 后按钮失去键盘聚焦能力
#

20. CSS font-size-adjust 与 text-decoration-skip-ink 的细节优化

A font-size-adjust 用于设置字体的字重
B font-size-adjust 按 x-height 缩放回退字体以保持视觉字号一致 ✓ 正确答案
C text-decoration-skip-ink: none 会让下划线在字母笔画处断开
D text-decoration-skip-ink 只影响中文文本
#

21. CSS Anchor Positioning 与 Floating UI(JS 库)

A Anchor Positioning 依赖 JavaScript 计算位置
B position-try-fallbacks 可在锚点定位溢出时按顺序尝试多个候选位置 ✓ 正确答案
C Floating UI 无法处理视口翻转
D 使用 Anchor Positioning 后必须移除所有 JS
#

22. CSS Container Style Queries(@container style(...))在父容器主题切换与设计令牌继承的应用

A style() 查询只能针对视口宽度
B 使用 style() 查询必须设置 container-type: size
C @container style(--theme: dark) 在祖先 --theme 为 dark 时匹配,可实现容器粒度主题切换 ✓ 正确答案
D style() 查询支持比较任意 CSS 属性值
#

23. Interest Invokers(interestfor/interesttarget)在无 JS 悬停触发(tooltip/preview)的应用与渐进增强

A interesttarget 只支持触摸设备
B 使用 interesttarget 必须同时引入 JS 库
C interesttarget 声明悬停目标后,浏览器可向目标元素派发 interest 事件并进入 interest 状态 ✓ 正确答案
D interest 事件不支持键盘聚焦触发
#

24. CSS 原生轮播(::scroll-button()/::scroll-marker())的能力边界、浏览器支持与无障碍考量

A ::scroll-button() 生成翻页按钮,::scroll-marker() 生成页码指示器,但能力有限且支持仍属实验性 ✓ 正确答案
B 原生轮播已支持自动播放与无缝循环
C 原生轮播无需滚动容器
D 原生轮播完全解决了无障碍问题
#

25. :has() 选择器在 Safari/Firefox 全量支持后,复杂表单联动与状态化选择器的写法范式

A :has() 无法配合 :checked 使用
B 用状态伪类作为 :has() 参数驱动容器样式是常见范式,但需控制选择器复杂度与性能 ✓ 正确答案
C 使用 :has() 后无需再考虑旧浏览器
D :has() 参数必须是元素选择器,不能是伪类
#

26. Container Queries 与 Style Queries 的边界,哪些场景仍需 JS 介入

A Container Queries 可以查询内容自身决定的 auto 尺寸
B 引入容器查询后应移除所有 ResizeObserver
C Style Queries 可以查询任意属性
D 尺寸查询需要容器具有确定尺寸,内容驱动测量与复杂交互仍需 JS ✓ 正确答案
#

27. :scope 与 @scope 在大型应用 CSS 架构中的样式隔离策略

A @scope 会增加选择器特异性
B :scope 只适用于 Shadow DOM
C @scope 只能用于页面根元素
D :scope 在 @scope 中匹配作用域根元素,@scope 可将样式限定在指定子树内 ✓ 正确答案
#

28. View Transitions API 的 cross-document 模式在 MPA 站点升级到软 SPA 的工程范式

A cross-document 过渡要求站点必须改造为 SPA
B 页面声明 @view-transition { navigation: auto } 后,同源导航可启用跨文档视图过渡 ✓ 正确答案
C 跨文档过渡不支持任何自定义动画
D 跨文档过渡不受同源策略限制
#

29. CSS Nesting 原生支持的工程边界(哪些场景仍需预处理器)

A 原生 CSS 嵌套支持任意选择器片段拼接
B 原生嵌套能减少重复书写,但 mixin、运算与自动前缀等仍需预处理器 ✓ 正确答案
C 原生嵌套可替代所有预处理器能力
D 原生嵌套只能用于样式重置
#

30. :where() / :is() 优先级控制与 specificity 调试在大型项目中的工具链

A :where() 特异性恒为 0,适合编写可被覆盖的基线样式 ✓ 正确答案
B :is() 与 :where() 的特异性完全相同
C :is() 的特异性取参数中的最低值
D 特异性问题无法通过工具检测
#

31. Popover API 与顶层渲染的 focus 行为、可访问性陷阱与渐进增强策略

A auto Popover 打开时浏览器会移动焦点,但复杂内容仍需补充语义与焦点管理 ✓ 正确答案
B Popover 关闭后焦点不会恢复
C Popover 打开后背景元素自动 inert,无需处理
D Popover API 在所有浏览器都完全可用
#

32. selectlist 与自定义下拉的浏览器原生方案当前的可用范围

A selectlist 允许定制外观并保留选择语义与键盘交互,但浏览器支持仍有限,需降级方案 ✓ 正确答案
B selectlist 已完全取代原生 select
C selectlist 无法用键盘操作
D selectlist 与 div 自研组件完全相同
#

33. text-rendering、font-kerning 与 font-feature-settings(liga/dlig/tnum)在连字、字距调整与等宽数字排版中的各自职责

A font-feature-settings 用于控制渲染速度
B font-kerning 与 OpenType 特性无关
C text-rendering 是渲染级开关,font-kerning 控制字距,font-feature-settings 开关 OpenType 特性 ✓ 正确答案
D 'tnum' 用于开启连字
#

34. font-synthesis 控制浏览器伪粗体/伪斜体的行为,以及字体缺少对应字重轴时的渲染质量取舍

A font-synthesis: none 表示总是合成粗体
B 字体缺粗体时浏览器永远直接报错
C font-synthesis 只影响中文
D 浏览器合成的伪粗体与伪斜体质量较差,font-synthesis 可控制是否允许合成 ✓ 正确答案
#

35. 系统字体栈(system-ui/-apple-system)与 @font-face local() 本地字体回退的工程取舍与一致性风险

A system-ui 在所有平台渲染完全一致
B 使用系统字体栈不需要设置回退字体
C local() 一定能加载到目标字体
D local() 引用本机字体可避免下载,但跨设备不可控,系统栈性能好却存在平台差异 ✓ 正确答案
#

36. @font-face 的 ascent-override/descent-override/line-gap-override 与 size-adjust 在消除备用字体与 Web 字体行高差(防 CLS)的应用

A 度量覆盖属性与 size-adjust 可让备用字体与 Web 字体的度量一致,减少字体交换引发的 CLS ✓ 正确答案
B size-adjust 只能放大不能缩小
C ascent-override 只影响字体颜色
D 这些属性无法解决字体加载期间的行高差异
#

37. font-optical-sizing 与 opsz 轴在响应式排版(小字号增强对比度)的作用

A font-optical-sizing: auto 会按字号自动设置 opsz 轴,小字号时增强笔画对比度 ✓ 正确答案
B font-optical-sizing 只影响字体颜色
C opsz 轴与字号无关
D 所有字体都支持 opsz 轴
#

38. CSS 自定义属性(@property)的注册、动画与类型推导在 design token 体系中的演进

A @property 只能注册颜色变量
B @property 声明 syntax 后自定义属性可参与 calc 与动画,并支持类型校验 ✓ 正确答案
C 自定义属性注册后不能继承
D @property 与普通变量完全等价
#

39. dialog 的 close/cancel 事件、Esc 关闭行为与 form method="dialog" 的取值回传

A cancel 事件在对话框关闭后触发
B close 事件可以 preventDefault 阻止关闭
C Esc 不会触发 cancel 事件
D form method="dialog" 提交后对话框关闭,returnValue 保存回传值 ✓ 正确答案
#

40. CSS Fonts Level 4 的 font-palette 与 @font-palette-values 在 COLRv1 彩色字体主题化的工程价值

A font-palette 用于设置字重
B @font-palette-values 可重定义 COLRv1 字体的调色板,font-palette 选择应用哪套 ✓ 正确答案
C COLRv1 字体不支持任何主题化
D 彩色字体无法参与 design token
#

41. document.fonts(Font Loading API)的 load/check/ready 在字体加载编排与首屏文字渲染控制的应用

A check() 会阻塞页面直到字体加载完成
B document.fonts 只能加载系统字体
C load() 返回 Promise 可主动加载指定字体,check() 查询可用性,ready 在所有字体就绪后 resolve ✓ 正确答案
D ready 在每加载一个字体时就 resolve
#

42. 字体文件长缓存(immutable)与字体更新时的版本化命名策略

A 字体文件应设置短缓存以便每次更新
B immutable 会导致字体永远无法更新
C 字体更新不需要改变文件名
D immutable 长缓存配合内容哈希命名可实现不变即缓存、更新即换 URL ✓ 正确答案