【问题标题】:CSS transition flickers with a:visited in Safari, Chrome, and Firefox, but not OperaCSS 过渡在 Safari、Chrome 和 Firefox 中闪烁,但在 Opera 中没有:visited
【发布时间】:2011-12-09 20:13:45
【问题描述】:

(对于支持 CSS 过渡的浏览器,包括最新版本的 Firefox、Safari 和 Chrome。奇怪的是,这个问题在 Opera 中没有出现。)

有没有其他人注意到这一点?当您在 a:link 上放置颜色转换时,a:visited 在显示 a:hover 颜色之前转换为 a:link 颜色。看看吧:

http://jsfiddle.net/Mgzv9/2/

这种颜色闪烁可以避免吗?

【问题讨论】:

  • 最新的 Chrome 甚至没有对访问过的链接进行转换...

标签: css anchor css-transitions


【解决方案1】:

我一直在努力解决这个问题。

问题是,这个问题实际上很难重现。

好的,那么会发生什么,有时在加载/刷新链接颜色转换的页面时,颜色首先从默认浏览器链接颜色转换为 CSS 定义的颜色。当我从磁盘打开 HTML 时,它实际上并没有发生,但是如果我将它放在服务器(甚至是本地服务器)中,那么就会出现这个问题。

要重现问题,请创建一个 HTML,添加一个样式表并为链接定义一个转换,如下所示:

a {
  color: red;
    -webkit-transition: color .5s linear;
    -moz-transition: color .5s linear;
    -o-transition: color .5s linear;
    -ms-transition: color .5s linear;
    transition: color .5s linear;
}

a:hover {
  color: green;
}

...然后将样式表包含在您的 HTML 中。

将文件放在服务器上,然后尝试在 Chrome 中打开页面,尝试刷新站点,有时您应该首先看到页面加载时默认蓝色的过渡。

在解构了一些网站后,似乎没有问题,我想出了这个简单的解决方案。

如果您也包含一些 Javascript 文件,那么只需将 Javascript 包含 AFTER 您的 CSS 包含。

即使在样式表之后只包含一个空的 JS 文件,它也可以工作。

希望这会有所帮助!

【讨论】:

  • 多么有趣。我没有发现你的 Javascript 修复有什么不同。例如,查看 soulmastery.net。我也没有发现查看本地文件和服务器文件之间有任何区别。 Safari 5.1.2 和 Firefox 8.0.1(运行 OS X Lion)中仍然存在问题。幸运的是,Chrome 似乎已经解决了这个问题(在 15.0.874.121 中)。
  • 该错误/功能(很难说,因为它显然是某些预期行为的结果)在 Chrome 25 和 FF 24 中仍然存在 - 但修复工作正常。我把我的 JS 放在 head 标记之外,(你当然应该把它放在 css 链接之后)——它有效!引用:“头部中的任何事情都必须在加载主体之前完成,因此将 javascript 放在那里通常是一个坏主意。如果您在加载主体时需要一些东西,或者想要加快一些 ajax,那么它会是适合放在头上。”这适用于例如wp_head() [WordPress],应该在 之前。
【解决方案2】:

我在使用颜色时从未见过这种情况。但是是的,在baground中使用图像时会发生这种情况。这是加载时间的bcoz,可以通过在一张大图像中使用所有过渡图像并使用baground-position属性控制图像来避免。

【讨论】:

  • 这发生在三个最新的浏览器中;查看 JSFiddle。
猜你喜欢
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 2011-07-16
  • 2014-08-01
  • 2012-11-27
  • 1970-01-01
相关资源
最近更新 更多