我的应用程序中的绝大多数a
都具有自定义:focus
样式,因此它们具有outline: none
。但是,在某些情况下,我没有一个好的自定义替代品,我想覆盖我的自定义样式并使用浏览器的默认焦点样式。
我尝试使用:
div.where-i-want-this-style a:focus {
outline: initial;
}
但这并没有给我一个大纲。事实上,当我从级联中的较高位置移除outline: none;
并切换此行时,我发现此行实际上导致大纲消失。
我的理论是initial
这里实际上使用的是a
的初始轮廓,而不是专注的 a
。该值基本上是none
。
我能提供的价值是否类似于outline: default-focus-outline
?
答案 0 :(得分:5)
为了记录,我发现在Chrome中可以使用的功能,而不是Firefox:
a:focus {
outline-style: none;
}
div.where-i-want-this-style a:focus {
outline-style: auto;
}
这是有效的,因为Chrome outline-style
的初始值非常简单(auto
),将该部分设置为none
就足以禁用默认大纲。
不幸的是,Firefox似乎使用了一种截然不同的方法来设置其默认焦点样式。如果我正在阅读Firebug,它可能无法在CSS中表达,这意味着一旦覆盖它就无法将其恢复。一旦我发现我没有费心去检查任何其他浏览器。
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您定义轮廓样式,并想“恢复”为:focus上的默认用户代理样式,这将有所帮助。您会发现使用初始属性(例如.myClass:focus {outline:initial;})的跨浏览器问题。我建议改用此属性:
.myClass:focus {
outline: 1px dotted #212121;
outline: 5px auto -webkit-focus-ring-color;
}
希望这会有所帮助!