【发布时间】:2021-12-16 20:29:47
【问题描述】:
:focus 样式是否应该覆盖 :focus-visible?
我正在尝试使站点键盘可访问,并尽可能应用我自己的 :focus-visible 样式。
我的:focus-visible 样式已成功地与我的大多数按钮元素一起使用,但无法与我的“注销”按钮一起使用,其中一些 twitter 引导程序 focus 样式覆盖了我自己的 focus-visible 样式,尽管有引导导入语句优先级较低。
如何使:focus-visible 样式的优先级高于:focus 样式?
更新:
下面是 DevTools 屏幕截图的链接,其中列出的前 3 个样式表是 node_modules 文件夹中的标准引导程序。
第 4 个样式表是我自己的,它试图设置 :focus-visible 元素的样式。
Screenshot of Devtools summary
HTML 按钮:
`<button id="logOut" class="btn btn-dark btn-block mt-2" (click)="onLogout()"><i class="fa fa-sign-out-alt"></i>Log out</button>`
我的 SCSS:
`:focus-visible {
background-color: #143a84;
color: #fff;
}`
引导 SCSS:
`.btn-dark:focus, .btn-dark.focus {
color: #212529;
background-color: #cdcdcd;
border-color: #c7c7c7;
box-shadow: 0 0 0 0.2rem rgb(195 196 197 / 50%);
}`
目前,当我使用键盘点击按钮时,会应用引导程序 focus 样式,而不是我设置的 :focus-visible 样式。
【问题讨论】:
-
:focus 样式不会覆盖 :focus-visible。
-
@MeghnaBhuptani 从我读过的内容来看,我认为它并没有起作用,但后来无法弄清楚为什么这个注销按钮会出现这种情况。这不可能是特异性问题,因为它们应该是完全独特的样式,我已经检查以确保
!important不会影响它 -
请提供工作代码sn-p。
-
你确定它是覆盖而不是他们没有使用与你不同的属性(例如你使用
border而他们使用outline)。:focus-visible不会覆盖,所以focus样式仍将被应用。如果您可以创建一个演示问题的小提琴,我会很乐意向您展示如何解决它。 -
您好,感谢您的 cmets。我刚刚添加了 devtools 样式的屏幕截图以供参考,因为我不确定什么代码 sn-p 最有用。
标签: css sass focus accessibility focus-visible