【问题标题】:Firefox link color flickers when using transition with :hover and :visited使用带有 :hover 和 :visited 的过渡时,Firefox 链接颜色闪烁
【发布时间】:2018-05-21 20:27:25
【问题描述】:

我正在 Firefox 49.0(在 Linux Mint 下)测试以下代码:

a{
  font-size:50px;
  color:gray;
  font-weight:1000;
  transition:color 1s;
}
a:hover{
  color:black;
}
a:visited{
  color:lightgray;
}
<a href="">VISITED LINK</a><br>
<a href="https://google.com/randomtext">LNK NOT VISITED</a>

Here is a codepen 如果你更喜欢。如果代码不清楚:我希望链接在访问时保持浅灰色,未访问时为灰色,悬停未访问链接时为黑色。另外,我想在这些颜色之间进行转换。

但是,firefox 似乎在悬停时首先将 :hover 规则应用于访问过的链接,然后是 :visited 规则,并在这些规则之间进行转换,从而导致闪烁。

我似乎找不到解决方法。

编辑:Chrome 以我想要的方式显示它。

【问题讨论】:

  • 您是否尝试过颠倒 :hover:visited 声明?
  • @pdoherty926 我当然有。在这种情况下, :hover 会覆盖 :visited 并且链接在悬停时显示为黑色,而不会闪烁(因为它应该是 css 选择器优先级的性质)。

标签: css firefox


【解决方案1】:

这似乎是一个 Firefox 错误,没有正确处理过渡。

【讨论】:

  • 请添加错误报告编号/链接/标识符。
  • @buhtz 我昨天没找到。也许应该创建一个新错误,或者我只是没有找到现有错误(这不会是第一次发生)
  • 请指定错误的状态。这是未报告的
  • 我找到了,据报道:bugzilla.mozilla.org/show_bug.cgi?id=868975 仍然,我想要一个解决方法
  • 2013年报过,至今未修复:/
【解决方案2】:

我找到了解决方法: 您需要将悬停状态添加到已访问状态。请参阅下面的代码。

a {
	text-decoration: none;
	color: #000000;
	transition: .3s color;
}

a:hover, a:visited:hover {
	color: #9097a0;
}
&lt;a href="https://stackoverflow.com/" target="_blank"&gt;Demo Link&lt;/a&gt;

【讨论】:

  • 这仍然不是一个完整的解决方案,因为您仍然无法在 :visited 和 :hover 状态之间进行转换。见codepen.io/anon/pen/LmoaQa(绿色可见)。颜色立即切换到默认颜色并从那里过渡到:visited:hover。但是谢谢,这已经成功了一半,比闪烁要好得多。
  • 是的,没错
猜你喜欢
  • 2011-12-09
  • 1970-01-01
  • 2015-08-05
  • 2012-09-02
  • 1970-01-01
  • 2021-11-16
  • 2011-12-15
  • 2013-10-31
  • 2018-05-14
相关资源
最近更新 更多