聚焦元素时,轮廓以不同的颜色闪烁。如何让它正常工作?

Posted

技术标签:

【中文标题】聚焦元素时,轮廓以不同的颜色闪烁。如何让它正常工作?【英文标题】:When focusing on element, the outline blinks in different colours. How to make it work normally? 【发布时间】:2021-12-30 15:22:21 【问题描述】:

我在 Chrome、Edge 和 Canary 中遇到了 :focus-visible 的奇怪行为。我希望导航栏上的锚点在使用键盘聚焦时显示紫色轮廓。他们的班级包括outline: $the-purple-color auto 1px !important

但是,当我聚焦这些元素时,在很短的时间内,我得到一个黑色轮廓,然后立即切换到正确的颜色。这种黑色似乎来自带有伪类:focus-visible outline: -webkit-focus-ring-color auto 1px; 的“用户代理样式表”,其中-webkit-focus-ring-color 似乎是黑色的。我相信这是黑色轮廓的来源,因为如果我关闭自定义类,它将默认为“用户代理样式表”。

我在网上没有发现这种现象。如何将轮廓保持为一种纯色而不闪烁到默认颜色?

编辑:这是代码:

<header class="main-header">
  <div class="row">
    <div class="col col-12">
      <nav class="navbar">
        <div>
          <ul>
            <li class="nav-item">
              <a>Home</a>
            </li>
          </ul>
        </div>
      </nav>
    </div>
  </div>
</header>
header 
  &.main-header 
    .navbar 
      li 
        a 
          &:focus-visible 
            // $menu-hover-color: #bf00ff
            outline: $menu-hover-color auto 1px !important;
          
        
      
    
  

编辑:我已经尝试过的事情清单:

更改了十六进制颜色的变量。 将变量更改为另一种颜色。 将*:focus-visible 的轮廓标准化为0。 将*:focus-visible 的轮廓标准化为另一种颜色。我仍然得到黑色闪烁。 给包装lioutline-colour 而不是紫色和黑色,看看黑色闪烁是否被此元素拾取。

【问题讨论】:

你能附上你的代码吗? 我编辑了我的帖子以添加代码。 【参考方案1】:

问题是另一个班级正在添加一个transition: ... all,这会产生意想不到的后果。

【讨论】:

以上是关于聚焦元素时,轮廓以不同的颜色闪烁。如何让它正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改未聚焦的textInputLayout的轮廓或边框的颜色?

如何更改 VS 2010 中的轮廓悬停颜色?

聚焦时如何从单选框中删除蓝色轮廓?

iOS7 UIButton图像闪烁

Flutter:如何修复并为轮廓按钮添加边框和颜色?

当 enable=true 时 TextInputLayout 轮廓颜色的颜色不同,然后是黑色,启用 false 时比浅灰色