讨论:focus伪类选择器和聚焦后外框边框的设置}这种样式设置,当元素被聚焦时,会显示外边框,让用户知道当前浏览器的焦点位置,但是样式外边框往往冗余且丑陋,所以开发者往往会选择去掉外边框,即设置:focus{outline:0;}。但是,不建议去掉焦点外边框,因为这会导致用户在使用键盘上的Tab键定位焦点时,不知道自己焦点在哪里。在这种情况下,用户的体验会很差。关于这一点,可以参考《绝不要删除样式的外边框》和《为你的网站设置有用和可用的焦点指示器样式》两篇文章(注:两篇文章均为英文)。我们面临的问题,其实简单来说,我们不希望点击聚焦时出现外边框,因为样式很难看,但是我们又想在使用键盘聚焦时显示外边框,因为不这样做会影响用户体验,前端领域一直在探索如何解决这个问题。以前只能用JS来判断焦点,现在可以用CSS4中新增的:focus-visible伪类选择器来处理了。接下来,许继将简要介绍这两种方案的特点和局限性。:focus-visible选择器:focus-visible是CSS4新增的伪类选择器,与:focus伪类选择器非常相似,都是在标签节点获得焦点时生效,唯一的区别是:focus伪类selector类选择器不区分引起焦点的操作,只要被焦点就会生效,而:focus-visible伪类选择器只有在键盘引起焦点时才会生效,但是可编辑元素比如
普通标签通过点击获得焦点,边框为红色,
通过键盘的Tab键获得焦点,边框为绿色。
Inputable将始终匹配:focus-visible选择器,
无论什么动作引起焦点,边框都将是绿色。
点击触发焦点时无外边框,
触发焦点时显示红色轮廓键盘。