jQuery fadeIn和fadeOut在chrome中滞后但在Firefox中没有

时间:2014-04-30 19:47:15

标签: jquery html css css3 google-chrome

我有一个叠加层,应该在用户点击按钮后淡入淡出。我正在使用jQuery fadeIn和fadeOut。但是,这样做时铬的显着滞后,而在Firefox中,动画运行顺畅。

这是我的HTML:

<div class="overlay">
    <div class="overlay_profile">
        <div class="overlay_contents">
            <div class="overlay_profile_info">
                <img src="images/avatars/1.gif" />
                <div class="overlay_profile_info_text_username">
                    Qub1
                </div>
                <div class="overlay_profile_info_text_other">
                    Level 1
                </div>
            </div>
        </div>
    </div>
    <div class="overlay_close">X</div>
</div>
<div class="overlay_shadow"></div>

我的CSS:

.overlay {
    display: none;
    padding: 20px;
    position: fixed;
    top: 150px;
    right: 150px;
    bottom: 100px;
    left: 150px;
    z-index: 2;
    background: #978470;
    border: 3px solid #CCC;
    border-radius: 20px;
    box-shadow: 0 0 20px #000, inset 0 0 10px #6A5C4E;
}

.overlay_shadow {
    display: none;
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1;
    background: rgba(0, 0, 0, 0.5);
}

和JavaScript:

$(document).ready(function(){
    $(".menu_arrow").add(".overlay_close").add(".overlay_shadow").click(function() {
        if($(".overlay").is(':visible')) {
            $(".overlay").add(".overlay_shadow").fadeOut("normal");
        } else {
            $(".overlay").add(".overlay_shadow").fadeIn("normal");
        }
    });
});

有没有人知道为什么铬会滞后?这是CSS3的大量使用吗?

感谢任何帮助!

1 个答案:

答案 0 :(得分:11)

尝试将这些规则添加到您的课程中:

{
    -webkit-transform: translatez(0);
    -moz-transform: translatez(0);
    -ms-transform: translatez(0);
    -o-transform: translatez(0);
    transform: translatez(0);
}

这会强制/欺骗Chrome将CSS3操作发送到GPU,这样可以加快速度。

我想这只是因为Chrome不像Firefox那样对它转移到GPU上有点害羞。