Safari 27.2 的 WebKit 新特性

Safari 27.2 的 WebKit 新特性

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

Safari 27.2 更新完善可定制 Select,新增 ::field-content 伪元素用于样式化选中项文本,并优化默认样式与弹窗定位;Grid Lanes 的 flow-tolerance 属性更名为 fit-tolerance(旧名暂作别名),用于控制布局容差;同时修复无障碍、动画、CSS、表单、媒体、网络、WebGPU、WebRTC 等 20 个问题。

🔎

延伸解读

可定制 Select 的样式控制更灵活

Safari 27.2 新增 ::field-content 伪元素,让开发者无需使用 <selectedcontent> 元素也能直接样式化选中项在按钮中显示的文本。同时,默认样式得到优化:按钮内容垂直居中更可靠,选中文本继承 text-overflow,选择器图标布局更简单且始终可见。这些改进降低了自定义 Select 的复杂度,但需注意这些特性仍处于标准打磨阶段,跨浏览器实现可能不完全一致。

Grid Lanes 属性更名,需尽快迁移

Grid Lanes 的 flow-tolerance 属性正式更名为 fit-tolerance,以更准确描述其控制布局容差的作用。旧名称暂时作为废弃别名保留,但文章建议尽快更新代码,Safari Web Inspector 可标记需要修改的地方。fit-tolerance 决定浏览器在放置下一项时对高度差异的容忍度,默认 1em。提高该值可让连续项留在相邻列,避免因微小高度差而跨页跳转,从而改善键盘用户的焦点移动体验。

20 项问题修复覆盖多个关键领域

本次更新修复了 20 个问题,涉及无障碍、动画、CSS、表单、HTML、JavaScript、媒体、网络、SVG、Web API、Web 扩展、WebGPU 和 WebRTC。例如,修复了 aria-labelledby 引用列表、表格等内容时无障碍名称缺失的问题;解决了 AudioContext.decodeAudioData() 对有效 AAC/M4A 文件报错、视频解码器失效后黑屏、WebCodecs VideoEncoder 处理 H.264 时停滞等媒体问题;还修复了 WebGPU 渲染捆绑包导致帧率骤降

❓

Q&A

Safari 27.2 中 ::field-content 伪元素有什么作用?

::field-content 伪元素用于样式化选中选项显示在页面上的文本,无需使用 <selectedcontent> 元素即可实现。

Grid Lanes 的 flow-tolerance 属性为什么改名为 fit-tolerance?

CSS 工作组认为 fit-tolerance 能更准确地描述其用途,因此将 flow-tolerance 重命名为 fit-tolerance。旧名称暂时作为废弃别名继续工作,但建议尽快更新代码。

fit-tolerance 属性具体控制什么?默认值是多少?

fit-tolerance 控制浏览器选择下一个项目放置位置的容差。当多个列(或行)的内容结束高度在容差范围内时,浏览器视为平局并选择第一个。默认值为 1em。增大容差可让连续项目保持在相邻列,避免因微小高度差而跳跃。

Safari 27.2 修复了哪些无障碍相关的问题?

修复了三个无障碍问题:1) 当包含元素被 aria-labelledby 或 aria-describedby 引用时,列表、表格、树和画布内容被从可访问名称或描述中遗漏;2) VoiceOver 在页面通过重新渲染而非追加 aria-live 区域流式传输内容时重复已宣布的文本;3) VoiceOver 在 iOS 上未将日期、时间、颜色输入控件识别为弹出按钮。

Safari 27.2 如何改进 Customizable Select 的默认样式和弹窗定位?

改进包括:按钮内容更可靠地垂直居中;选中选项文本继承 <select> 的 text-overflow;::picker-icon 的绘制方式更新,布局更简单;按钮使用 flex: 1 管理间距,确保选择器图标始终可见;大型选择器弹窗通过安全对齐保持在视口内。

Safari 27.2 在媒体方面修复了哪些问题?

修复了多个媒体问题:AudioContext.decodeAudioData() 对有效 AAC/M4A 文件失败并报 EncodingError;视频解码器失效后视频黑屏但音频继续播放;ManagedMediaSource 在寻址到未缓冲时间时不触发 startstreaming 事件导致播放停滞;媒体元素的 play() promise 在 SourceBuffer 包含明文未加密内容时未解析;WebCodecs VideoEncoder 对 H.264 Main 和 High 配置文件可能停滞无输出。

🏷️

标签

➡️

继续阅读