固定文本在 chrome 上 jquery 动画淡入淡出时变得奇怪

Posted

技术标签:

【中文标题】固定文本在 chrome 上 jquery 动画淡入淡出时变得奇怪【英文标题】:FIXED Text Getting weird when jquery animate fade on chrome 【发布时间】:2012-04-15 03:59:26 【问题描述】:

JavaScript

$(function() 

    $('#lol').hover(function() 

        $(this).stop().animate(opacity:0.5);

    ,function() 

        $(this).stop().animate(opacity:1);

    );

);

CSS

#lol 
padding:20px; background-color:#FF0000; color:#FFF; font-size:15px; font-family:arial; width:300px; opacity:1; filter:alpha(opacity=100); position:relative;

HTML

<div id="lol">text</div>

在 Firefox 和 Internet Explorer 中它可以正常工作,但在 Chrome 中,文本在淡入淡出时会变得很奇怪——看起来该文本正在丢失 cleartype。

我该如何解决?

褪色效果如何:Click to see

解决方案: 设置 -khtml-opacity:0.99;在 mouseleave 上将其设置为 0.99。 safari 和 chrome 可以正常工作:)

【问题讨论】:

【参考方案1】:

你不能为了快乐而修复它,但你确实有选择。

    将 webkit 背面设置为隐藏(与下面一样,我也发现这修复了许多 webkit 显示错误)http://jsfiddle.net/FSkXL/

    将元素设置为 0.9 而不是 1。这将通过保持“奇怪”http://jsfiddle.net/7YNhM/

    来防止文本更改(更一致)

    您可以使用图像而不是文本、png 或 svg,这意味着文本不可编辑 webtext

    画布标签,大量额外的复杂性

这是 chrome 如何呈现文本的基本部分,但没有一个干净的方法来解决它。

【讨论】:

到目前为止,我的客户对选项 1 最满意。 我有一个问题:'将 webkit 背面设置为隐藏',我没有看到任何更改。 检查小提琴。没有它的淡入淡出之前的文本“更大胆”。然后当褪色发生时,它就没有那么大胆了。对于有问题的 css,文本在两种状态下都不是粗体。【参考方案2】:

它对我来说很好用:文本不会改变。其他人可以通过查看jsFiddle 来证实。

但是我以前遇到过这个错误。我发现,对于动画,Chrome 有时会使文本模糊或变形(CSS3 过渡也是如此)。我认为这与您的硬件加速和图形设置有关。

正如this post 中的另一位用户所指出的,Chrome 似乎在处理 jQuery 的 hover() 事件时遇到了困难,所以也许您可以使用不同的方法:

$(function() 
   $("#lol").
   mouseenter(function()$(this).animate(opacity:0.5, 900);).
   mouseleave(function()$(this).animate(opacity:1, 900););
);

您也可以尝试使用 CSS3 复制相同的功能:

#lol

   opacity:1;

#lol:hover

   transition: opacity:0.5;
   -moz-transition: opacity:0.5; /* Firefox 4 */
   -webkit-transition: opacity:0.5; /* Safari and Chrome */
   -o-transition: opacity:0.5; /* Opera */

【讨论】:

尝试使用 CSS3 过渡,我已经用示例 CSS 更新了我的解决方案 我正在使用这个文档类型:ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 看看我的第一行中的 jsFiddle,如果你在那里遇到同样的错误,这与 Doctype 无关,它是基于硬件的 好吧,我会尝试修复它,如果我找到解决方案,我会发布,谢谢你的帮助:)

以上是关于固定文本在 chrome 上 jquery 动画淡入淡出时变得奇怪的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 样式属性元素操作动画效果尺寸位置操作

jQuery 动画填充在 Chrome 中无法正常工作

防止固定位置元素在 jQuery 动画期间闪烁

jQuery 动画在 Internet Explorer 中不起作用/行为异常

jQuery 滚动延迟(滞后)在 chrome 上但在 firefox 上平滑

jquery动画效果