【问题标题】:color transition on page load in ChromeChrome中页面加载时的颜色过渡
【发布时间】:2014-07-19 19:17:26
【问题描述】:

我在链接上设置了一些全局颜色,在颜色上设置了过渡:

a {
  color: blue;
  transition: color 300ms linear; }

现在,稍后在我的代码中,我在导航中的链接上有一些更具体的样式:

nav a { color: red; }
nav a:hover { color: black; }

HTML 看起来像这样:

<nav>
  <ul>
    <li><a href="#">Link 1</a></li>
    <li><a href="#">Link 2</a></li>
    <li><a href="#">Link 3</a></li>
  </ul>
</nav>

以下内容按预期工作:

  • 导航中的链接继承颜色过渡
  • 当导航中的链接悬停时,它们的颜色会随着平滑过渡而变化

问题是: 当页面在 Chrome 中加载时,链接以默认颜色或我设置的全局链接颜色开始(我不确定是哪一种),然后过渡立即开始,链接更改为正确的颜色。

该问题似乎特定于 Google Chrome。我试图在 JSfiddle 中重新创建该问题,但它在小提琴中运行良好。

有没有办法阻止页面加载时发生的转换?

【问题讨论】:

  • 你能提供一个小提琴吗?
  • impossible to recreate 只是使用提供的代码。请提供足够的代码来重现您的问题。另外,将nav a 移到a 之前有什么问题?它具有更高的特异性,因此在之后并不重要
  • @BerdiyaOnur 该问题无法在小提琴中重新创建。
  • 我已经编辑了我的问题,使其更加具体和清晰。这个问题似乎只发生在谷歌浏览器中。我正在运行版本 36。
  • 这似乎是一个依赖于标记的错误。我有一个存在此问题的页面,但无法以更简单的版本重现。当前运行版本 40。Firefox 很好。

标签: css google-chrome transition


【解决方案1】:

我也遇到过同样的问题,但有时我注意到初始转换无法开始,在我的按钮上留下了无意的颜色。

然后,我在 css-tricks 上找到了这篇文章,它解决了我的问题。

http://css-tricks.com/transitions-only-after-page-load/

这个想法是在加载 dom 之前禁用所有动画。如果您使用的是 Angular,您可以使用 ng-init 或任何指令删除该类。

希望这会有所帮助。

【讨论】:

  • 啊是的,这不是一个坏主意!感谢您找到链接。遗憾的是,某些浏览器默认会这样做 - 看到它试图转换到您告诉它作为元素的默认状态的状态没有意义,因此显然应该是您看到的第一个版本.
  • CSS 过渡的重点是能够在没有 JavaScript 的情况下制作动画。这个解决方案是一个非常不幸的 hack。
  • 对我来说,不能与 scrollscpy (BS4) 结合使用,但这是个好技巧。
【解决方案2】:

好吧,我研究了如何在元素父元素上设置条件,相对选择器是:has():parent:not(),但它们都不能解决问题。
所以我认为,你找不到一个干净的解决方案。 (如果我错了,我会很高兴)
但作为替代解决方案,我有两个想法!

首先,将transition 置于悬停状态。
在这种情况下,您不会看到任何 css 覆盖的转换,如下所示:

a:hover { 
    transition: all 1s; //with venders
    color: #666; 
}

nav a:hover { 
    transition: all 1s; //with venders
    color: #AAA; 
}  

其次,您可以在&lt;a&gt;&lt;/a&gt; 标签上放置类,然后选择它们,例如:

a.parentIsNotNav {
    ...
}

a.prentIsNav {
    ...
}

【讨论】:

  • 建议的解决方案不起作用,因为它只会从旧颜色过渡到新颜色,而不是相反的方式
  • @ZachSaucier;首先,有两个想法,然后,在解决页面加载问题后的第一个想法中,您可以简单地通过 js 在 onload() 中添加过渡到主范围。我说它们不是您正在寻找的干净解决方案,它们是替代品!
  • @MeTe-30 感谢您的帮助,但这不是我想要的解决方案。您的第一个解决方案将意味着在悬停完成时链接颜色不会转换回其原始状态,这实际上是在改变效果。我不确定您要在第二个想法中实现什么目标,但我看不出它是如何工作的。
猜你喜欢
  • 2015-05-10
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 2012-08-01
相关资源
最近更新 更多