[英]Webkit Opacity Transition Issues with Text
在div
内部,我有一个图像,后跟文本,其font-weight
为900。 在我的本地托管环境中,我使用的是自定义字体,但对于上面的小提琴,我选择了“永远如此时尚”的Comic Sans来说明我的观点。 在发生任何事情之前,我将整个div的不透明度设置为0.7。 然而,在上空盘旋div
,我想要的一切的不透明度来完全不透明。
我注意到仅在Webkit浏览器中(在Chrome上比在Safari上更明显),在div
标签上下移动时,文本的重量似乎会发生变化。 实际上,文本的权重当然没有任何变化。 但是,仔细阅读后,您会看到文本仅在悬停时显示为所需的重量,但不会处于非悬停状态。
当然我觉得我可以用Comic Sans来减轻情绪。 这是一个屏幕截图,以帮助解释问题:
这不是不透明度本身的问题(实际上,在@ Zoltan的例子中将其变回1并不会改变我的任何事情)。
问题在于转换,webkit可以使用两种抗锯齿模式:
这意味着当使用子像素抗锯齿渲染元素并对其应用动画时,webkit会在动画持续时间内暂时切换为灰度,然后在完成后返回子像素。
鉴于子像素抗锯齿导致字体面积稍重,您会得到不需要的伪像。
要解决此问题,请将此添加到您的css:
html {
-webkit-font-smoothing: antialiased;
}
这会强制灰度抗锯齿和所有文本,您将看不到切换。
(最终结果: http : //jsfiddle.net/ErVYs/9/ )
一个可能的解决方案是将不透明度转换为1
,但是.999
- http://jsfiddle.net/ErVYs/2/
div {
width: 200px;
text-align: center;
opacity: 0.7;
transition: opacity ease-in 0.25s;
-webkit-transition: opacity ease-in 0.25s;
-moz-transition: opacity ease-in 0.25s;
-o-transition: opacity ease-in 0.25s;
}
div:hover {
opacity: .999;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.