欢迎访问宙启技术站
智能推送

强大的CSS:focus-visible伪类真的太6了!

发布时间:2023-05-17 09:58:38

CSS 的 :focus 伪类是用来为具有焦点的元素制定样式的,比如输入框获得焦点时可以改变其边框颜色等。但是,在用户使用键盘和鼠标切换焦点时,往往会出现一些不必要的视觉效果,这些效果通常不是我们想要的。例如,当我们点击一个链接时,链接会出现一个虚线边框,这在表单元素上看起来很自然,但是在其他元素上出现这个样式时,就变得很奇怪了。

此时,我们就需要使用 :focus-visible 伪类了,这个伪类只会在用户通过键盘或程序获取焦点时才应用,而不会在用户通过鼠标或其他非键盘交互(例如纯 CSS 悬停)时应用,所以它可以帮助我们消除那些不必要的焦点效果,在视觉上缩小键盘和鼠标导航之间的差距。

下面我来详细介绍一下 :focus-visible 伪类的用法和优点。

## 用法

使用 :focus-visible 伪类有两种方法:

### 1. 直接使用

可以通过以下方式直接使用 :focus-visible 伪类:

:focus-visible {
  outline: 2px solid red;
}

当元素的内容由键盘或程序输入事件获得焦点时,元素将出现一个红色的描边,当元素通过鼠标点击或其他非键盘事件获得焦点时,这个样式将不会应用。

### 2. 组合使用

也可以将 :focus:focus-visible 伪类组合起来使用,这样可以兼容不支持 :focus-visible 的浏览器:

:focus:not(:focus-visible) {
  outline: none;
}

:focus-visible {
  outline: 2px solid red;
}

这里的 条规则会将所有非 :focus-visible 的焦点元素的描边去掉,第二条规则会只为 :focus-visible 元素添加描边样式,这样通过鼠标等非键盘事件获得焦点的元素不会出现描边。

## 优点

使用 :focus-visible 伪类的主要优点如下:

### 1. 提高可访问性

:focus-visible 伪类可以提高页面的可访问性,因为它使键盘和鼠标导航具有相同的视觉效果,这样用户就可以根据自己的偏好选择不同的交互方式,而不会因为视觉效果的不同而导致不必要的困惑。

### 2. 提高用户体验

使用 :focus-visible 伪类可以提高用户体验,因为它可以使用户在使用键盘时更方便地找到焦点元素,而不必再关注到底哪个元素具有焦点。

### 3. 简化 CSS 代码

通过使用 :focus-visible 伪类,可以简化 CSS 代码,因为不需要再手动设置样式来消除那些不必要的焦点效果,这些样式将自动应用到通过键盘或程序获取焦点的元素上。

## 总结

focus-visible 伪类的使用可以提高页面的可访问性和用户体验,同时也可以简化 CSS 代码。如果您正在使用键盘导航设计网站,这将是非常好的选择,为用户提供一种更统一的用户体验,特别是对于身体上有不便的人。