:focus-visible
和Bootstrap有问题。我正在做的项目使用Bootstrap,它有button:focus:not(:focus-visible)
和button:focus:not(.focus-visible)
按钮。在我的css中,我有:
button {
&:focus-visible {
outline: var(--outline-size) var(--outline-style) var(--outline-color);
}
}
字符串
但是我的:focus-visible
没有显示。当我检查按钮并执行Force element state:focus时,它显示(如预期):
button:focus:not(:focus-visible) {
outline: 0;
}
button:focus:not(.focus-visible) {
outline: 0; //crossed out
}
型
当我执行Force element state:focus-visible时,我得到了:focus-visible的样式。但是,当我切换到按钮时,:focus-visible
没有显示。如果我在dev tools中取消选中button:focus:not(.focus-visible)
,:focus-visible
将显示在选项卡上。据我所知,:focus
不应该覆盖:focus-visible
,那么我做错了什么?任何帮助都非常感谢!
1条答案
按热度按时间o2gm4chl1#
基本上,这就是正在发生的事情:https://jsfiddle.net/eaL3vrmf/
个字符
好吧,那就specificity问题。
button:focus:not(.focus-visible)
具有特异性0-2-1
,而您的button:focus-visible
只有0-1-1
(https://specificity.keegan.st)所以你需要增加你自己选择器的特异性(除非你想使用jucky!important
)一个简单的方法让你的选择器和现有的选择器一样专一,是添加一个类选择器-或一个:not()
与一个无意义的类的按钮将永远不会得到在现实中。如果你的规则在框架中的现有规则之后,这将起作用--因为现在两个选择器都有相同的特异性。如果不是这样的话,那么你就需要增加你自己的一个更具体的。