:focus-visible
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022 .
当元素匹配
:focus
伪类并且客户端 (UA) 的启发式引擎决定焦点应当可见 (在这种情况下很多浏览器默认显示“焦点框”。) 时,
:focus-visible
伪类将生效。
这个选择器可以有效地根据用户的输入方式 (鼠标 vs 键盘) 展示不同形式的焦点。
请注意 Firefox 通过较旧的前缀伪类
:-moz-focusring
支持类似的功能。更多细节请参考
:-moz-focusring
页面。
语法
:focus-visible {
/* ... */
示例
基本示例
在这个例子中,
:focus-visible
选择器利用客户端 (UA) 的行为决定是否匹配。比较一下,当你用鼠标点击控件和用键盘 tab 切换控件有何不同。请注意元素的表现与具有
:focus
样式的元素的区别。
<input value="Default styles" /><br />
<button>Default styles</button><br />
<input class="focus-only" value=":focus only" /><br />
<button class="focus-only">:focus only</button><br />
<input class="focus-visible-only" value=":focus-visible only" /><br />
<button class="focus-visible-only">:focus-visible only</button>
cssinput,
button {
margin: 10px;
.focus-only:focus {
outline: 2px solid black;
.focus-visible-only:focus-visible {
outline: 4px dashed darkorange;