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

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 可以正常工作:)

【问题讨论】:

    标签: jquery google-chrome jquery-animate


    【解决方案1】:

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

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

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

    3. 来防止文本更改(更一致)
    4. 您可以使用图像而不是文本、png 或 svg,这意味着文本不可编辑 webtext

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

    这是 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 无关,它是基于硬件的
    • 好吧,我会尝试修复它,如果我找到解决方案,我会发布,谢谢你的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2010-11-16
    • 2011-07-14
    • 2011-04-09
    • 1970-01-01
    • 2012-08-14
    • 2020-01-06
    相关资源
    最近更新 更多