animation - Safari 在不相关的动画运行时更改字体粗细

标签 animation css safari webkit css-animations

我在我的页面上使用 css 动画,当动画运行时,Safari 似乎会更改页面上其他地方不相关的字体粗细。知道为什么会这样吗?所有其他浏览器都可以正常工作,包括像 Chrome 这样的 webkit 浏览器。

我在这里的视频中详细介绍了错误 - http://www.screenr.com/gZN8

站点也在这里 - http://airport-r7.appspot.com/但它可能会继续快速变化。

我在箭头图标上使用罗盘(@transition-property、@transition-duration)。没有对闪烁的标题应用任何转换。在 Mac 上 - 所以它可能是硬件加速,但我仍在努力弄清楚。

最佳答案

当您触发 GPU 合成时(例如,通过 CSS 动画),浏览器会将该元素发送到 GPU,但如果其顶部/左侧属性发生更改,也会将出现在该元素顶部的任何内容发送到 GPU。这包括在动画元素之后出现的任何 position:relative 元素。

解决方案是给动画元素 position:relative 和一个 z-index 使其高于一切。这样你就可以得到你的动画,但在不相关的元素上保持(高级 IMO)子像素字体渲染。

这是问题和解决方案的演示 http://www.youtube.com/watch?v=9Woaz-cKPCE&hd=1

更新:较新版本的 Chrome 会在 GPU 合成元素上保留子像素抗锯齿,只要该元素没有透明度,例如,背景没有透明或半透明像素。请注意,像 border-radius 这样的东西会引入半透明像素。

关于animation - Safari 在不相关的动画运行时更改字体粗细,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9733011/

相关文章:

javascript - Angular 动画: can't find query

页面没有焦点时javascript动画排队

html - 更改 MDC 按钮的容器填充颜色

jquery - 在 Chrome/WebKit/Safari 中禁用 anchor

android - 为什么 Android 浏览器在用户代理字符串中显示为 "Safari"和 "Chrome"?

jquery - 如何在 jquery 中级联动画

IOS/objective-c : code reduction within animations

html - 使用 CSS 变量反转颜色

html - 使 div 宽度等于它的兄弟?

javascript - Safari 浏览器使用 javascript 中的类报告错误