页面可见性检测演示 - Visibility API
实时显示当前页面可见状态,当切换标签页时记录时间并给出日志。
UD5工具箱
使用 Tab 键和鼠标点击分别测试下方元素,观察 :focus 与 :focus-visible 的行为差异。
自定义 :focus-visible 样式,仅Tab键导航时显示蓝色焦点环,鼠标点击不显示。
:focus 是 CSS 伪类,当元素获得焦点时总是匹配,无论焦点是通过键盘、鼠标还是触摸获得。
:focus-visible 是较新的 CSS 伪类,仅当元素获得焦点且浏览器认为应该显示焦点指示器时才匹配。通常,通过键盘(Tab键)导航时会触发,而鼠标点击通常不会触发。
这解决了长久以来的用户体验问题:鼠标用户不希望看到丑陋的焦点环,但键盘用户需要它来进行无障碍导航。
这是浏览器的有意为之。对于文本输入框(<input>、<textarea>),浏览器认为即使是鼠标点击,显示焦点指示器也是合理的——因为用户需要知道光标在哪里输入文字。
这种行为因浏览器而异:
最佳实践是同时定义两个伪类,确保在各种情况下都有合适的焦点指示:
/* 移除默认焦点样式 */
.my-element:focus {
outline: none;
}
/* 键盘导航时显示明显的焦点环 */
.my-element:focus-visible {
outline: 3px solid #3b82f6;
outline-offset: 2px;
box-shadow: 0 0 0 3px rgba(59,130,246,0.3);
}
这样,鼠标点击不会显示焦点环(保持界面干净),但键盘导航用户能看到清晰的焦点指示。
截至2024年,所有现代浏览器都支持 :focus-visible:
对于旧浏览器,可以使用 focus-visible polyfill 来提供支持。
推荐使用 :focus-visible 的场景:
仍需使用 :focus 的场景:
:focus-visible 是可访问性最佳实践的重要组成部分:
简而言之,:focus-visible 让界面既美观又可访问,是现代化Web开发的推荐做法。
实时显示当前页面可见状态,当切换标签页时记录时间并给出日志。
加载大量DOM元素,对比启用和不启用content-visibility: auto时的渲染时间和滚动体验。
验证 Origin Trial 令牌的有效性与作用域,显示令牌启用的实验功能列表及过期时间。
渲染网页在Windows强制颜色模式下的样式,协助调试和适应系统高对比度主题。
输入 origin trial token,解析出启用的特性、域名和过期时间。
显示一系列石原色觉测试图,框选所见数字,初步判断色觉异常。
可视化为视频添加时间点字幕文本,导出标准WebVTT文件或JSON。
将已有戒指放在屏幕圆圈上比对,或测量指围,转换为美/英/欧/中式号数。
在线检测输入的文本是否为正反读都相同的回文,忽略标点、空格和大小写。
使用Eyedropper API激活系统取色器,拾取屏幕任意位置的颜色值。
实时显示当前浏览器窗口分辨率、屏幕分辨率、像素比(DPR)和色彩深度等信息。
提供代码评审和文档评审的通用检查项,标出等级并生成评审报告。
搜索各类编程语言、框架和工具的矢量图标,点击复制其HTML或SVG代码。
分析页面结构,提示哪些长列表区域适合添加content-visibility: auto优化。
设定FCP、LCP、CLS等指标值,模拟计算PageSpeed Insights得分估算。
将压缩的SQL语句按标准缩进美化,关键字高亮,兼容MySQL/PostgreSQL等方言。
输入事件名称与年代,自动生成美观的横向时间轴图,打印用于学习展示。
输入字体名或从列表选择,在示例文本上立刻看效果,获得@import代码。
将输入文本渲染为点阵式打印机风格的像素字体图片,可调整针头密度和纸张颜色。
悬浮在页面上的虚拟直尺和量角器,可测量屏幕元素的角度和像素距离。
按时间点添加事件,生成美观的垂直或水平时间轴HTML/CSS代码。
输入单词列表,生成随机排列的字母矩阵并标记位置,支持打印成单词搜索练习题。
选择颜色、透明度等特征,缩小可能的水晶种类范围并展示图片。
让文字拥有磨砂背景,可视化调整模糊度和颜色,输出CSS backdrop-filter代码。
显示渐小条纹,测试你能分辨的最小视角,对照理论视网膜细胞密度。
利用简单的边缘检测或熵分析,自动将图片裁剪到保留视觉主体的大小。
创建可选择的时间段,参与者勾选自己方便的时间,自动计算最佳交集。
输入自定义单词列表,生成填满随机字母的单词搜索矩阵,并导出为打印格式。
填空式生成通用服务条款,涵盖账号、知识产权、免责等,创业初期参考。
全屏彩色时间显示,文字缓慢移动回弹,类似经典屏幕保护程序,可做桌面装饰。