【问题标题】:Webkit text aliasing gets weird during CSS3 animationsWebkit 文本别名在 CSS3 动画期间变得奇怪
【发布时间】:2012-07-20 08:35:31
【问题描述】:

这是一个时髦的。而且我确信它与 webkit 相关,因为它似乎只是 Chrome 版本 20.0.1132.57 和 Safari 5.1.7 中的问题。我上传了一个简短的视频来解释这个问题,因为几乎不可能通过文字来解释。

视频: http://youtu.be/0XttO-Diz2g

短版: 在 CSS3 动画期间,定位元素(绝对或相对)内的文本似乎会更改其抗锯齿。动画运行时会变粗。

注意: 这与缩放的元素在动画中变得模糊不同。 (this issue)

有什么想法、解决方法等吗?

【问题讨论】:

  • 相关代码在视频中,不过我会尽快尝试在jsFiddle中重新创建。
  • 视频链接失效了。
  • 证明问题的 jsfidle 是 here(由 this similar question 提供)。
  • 不幸的是,除了将这些元素的字体渲染一直降级为“抗锯齿”之外,目前似乎没有解决方案,就像下面 Ian 回答中的技巧一样,或者确保他们和他们的任何祖先都没有相对/绝对定位。

标签: css webkit css-animations


【解决方案1】:

更新:我在下面的旧答案有效,但这只是解决问题的一种黑客方式。相反,请阅读此内容以了解其他元素受到影响的原因:http://jsbin.com/efirip/5/quiet。简而言之:一个动画元素应该被放置在它自己的堆栈上下文中,方法是给它一个z-index

旧答案:

它与 WebKit 相关。老实说,我不确定它为什么会这样做,我认为这也是一个错误。您可以通过向页面上的任何元素添加任何与 3D 相关的 CSS3 声明来阻止它。示例:

body {
    -webkit-transform: translateZ(0);
}

或者:

body {
    -webkit-backface-visibility: hidden;
}

这些声明的存在导致 WebKit 对动画使用硬件加速,从而防止您指出的问题。

【讨论】:

  • 哇。那行得通。你到底是怎么想出来的?干得好!
  • 这似乎也影响了字体的初始抗锯齿。当我设置-webkit-font-smoothing: subpixel-antialiased; 时,这些似乎会修改字体的外观。
  • 当与 twitter bootstrap 一起使用时,此解决方法会在右侧提供一个小滚动条。
  • -webkit-backface-visibility 有背景附件问题:在 chrome 中修复
  • -webkit-backface-visibility: hidden 在 Chrome 38 中引入错误:crbug.com/422143
猜你喜欢
  • 2013-02-14
  • 1970-01-01
  • 2011-09-11
  • 2023-03-22
  • 2011-09-27
  • 2020-01-27
  • 2011-03-15
  • 2013-11-12
  • 2021-03-10
相关资源
最近更新 更多