html - 浏览器中的默认焦点大纲是如何实现的?
问题描述
浏览器中的默认焦点大纲是如何实现的?
我说的是在当前具有焦点的元素周围显示的实线或虚线边框。
我以为它只是浏览器应用的CSS轮廓,例如
:focus {
outline: black dotted 1px;
}
但我注意到,如果我尝试使用 CSS 自定义焦点轮廓,它的外观会发生变化,但在某些情况下行为也会发生变化。
请参阅我关于内部 div 链接的焦点大纲的问题,例如:
(简而言之,如果你有复杂内容的链接并应用你自己的焦点大纲,事情会变得很奇怪)
显然,浏览器不仅仅将上面的简单 CSS 应用于焦点轮廓。他们必须做更多的事情来使默认值的工作与它一样好,无论它应用于哪个元素。
有谁知道它是如何工作的?
我可以做些什么来使我的自定义焦点轮廓的行为与默认焦点轮廓相同吗?
解决方案
这个问题相当古老,但是在搜索我想尝试回答的大纲时,我遇到了好几次。
根据大纲 - CSS:层叠样式表 | 在MDN中,轮廓的声明分为三个部分:颜色、样式和宽度,默认值为:
.outline {
outline: medium auto currentColor;
outline: medium auto invert;
}
根据另一个 SO answer,WebKit 浏览器有自己的大纲样式,这使得我的整个答案:
.outline {
outline: medium auto currentColor;
outline: medium auto invert;
outline: 5px auto -webkit-focus-ring-color;
}
笔记:
medium
在我的 Safari 中呈现为 3px,这显然不是 5px。- 颜色
-webkit-focus-ring-color
呈现为rgb(0, 103, 244)
。
推荐阅读
- javascript - 使用 Elementor 标头模板时,有没有办法在标头中放置一些自定义代码
- java - 我可以从不同区域的 LocalDateTime 获得正确的日期时间吗?
- math - 从大二进制数转换时十进制值的哈希冲突概率
- python-3.x - pyinstaller 的问题并没有显示我创建的所有内容
- flutter - 如何从数据库 sql 中获取值,然后将其放入带控制器的 Switch() 中
- java - 为什么我的 JDBC SQLite 数据库中的“@”附近出现 java.sql.SQLException?
- php - Woocommerce - 删除自定义费用
- selenium-webdriver - Jmeter Groovy webdriver By.xpath
- javascript - 当我单击下一个或上一个时,缩略图不会更改
- kiwi-tcms - 我在哪里可以找到关于 json-rpc 的 kiwi tcms 参数信息?