jQuery动画在FF中运行良好,但在所有其他浏览器中都很糟糕

时间:2013-09-25 10:38:05

标签: javascript jquery firefox animation browser

我在窗口加载时有一个从屏幕左侧到全屏宽度的大型div动画(通过setTimeout延迟2秒后触发的功能)。 div有一个按钮,然后关闭/重新打开所述div。

这个左右div动画在Firefox中工作正常,但在任何其他浏览器中都无法正常工作。在其他浏览器中,div完全从l-r移动但没有任何动画(这包括:chrome,opera,safari,ie)。但是,所有浏览器中的关闭/重新打开动画很好,所以没有概率。

所以,这只是我正在寻求帮助的窗口加载动画 - 可以建议为什么它在FF中没问题但在其他所有浏览器中都没有?这是一个小提琴示例html / js / css(按此顺序):

http://jsfiddle.net/2nvhP/3/

<header id="masthead" class="masthead-anim">
    <div class="nav-slider">
        <div class="nav-slider-content clearfix">
            <h1 class="hide-text brand-logo">Brand</h1>
        </div> <!--/.nav-slider-content-->
        <a href="#" class="nav-slider-button nav-open"></a>
    </div> <!--/.nav-slider-->
    <a href="#" class="nav-slider-button-static nav-open"></a>
</header>

$(window).load(function(){

    var navSliderFlag = 0;
    var navSlider = $('div.nav-slider');
    var navButton = $('a.nav-slider-button');   
    var navButtonStatic = $('a.nav-slider-button-static');

    console.log ('navSliderFlag = ' + navSliderFlag);
    navButtonStatic.html('<span class="hide">OPEN</span>');
    navButton.html('<span class="hide">CLOSE</span>');

    // Function to animate the primary nav on window load
    function navSlideAnim() {
        navSlider.animate({
            left: 0
        }, 1000, "swing");
        //}, 750, "easeOutQuad");
        navButtonStatic.css("left", "-80px");
        navButton.removeClass('nav-open');
        navSliderFlag = 1;
        console.log ('navSliderFlag = ' + navSliderFlag);
    }

    // Pause the anim for 2 seconds
    setTimeout(navSlideAnim, 2000);

    // Open the navbar - i may be removing this completely later
    navButtonStatic.on('click', function(){
        navSlideAnim();
    });

    // Open the navbar and anim
    navButton.on('click', function(){
        $(this).html('<span class="hide">CLOSE</span>');
        $(this).parents('.nav-slider').animate({
            "left": "-=99.99%"
        }, 1000, "swing", function(){
            $(this).removeClass('nav-open');
            navButtonStatic.animate({
                left: 0
            }, 500, "swing");
            navSliderFlag = 0;
            console.log ('navSliderFlag = ' + navSliderFlag);
        });
    });
});

html,
body {
    margin: 0;
    height: 100%;
    background: #ccc;
    color: #232323;
    font-family: Helvetica, Arial, sans-serif;
}
a {
    color: #fff;
}
#masthead {
    padding: 80px 0 0;
}

/* Anim nav */
.nav-slider {
    background: #fff;
    margin: 0 80px 0 0;
    position: relative;
    right: 100%;
}
.nav-slider-content {
    width: 940px;
    margin: 0 auto;
    padding: 40px 0 30px 75px;
}
.nav-slider-button,
.nav-slider-button.nav-open,
.nav-slider-button-static.nav-open,
.scrollup {
    position: absolute;
    top: 0;
    right: -80px;
    width: 80px;
    height: 80px;
    background: #3F3E3E;
}
.nav-slider-button-static.nav-open {
    left: 0;
    top: 80px;
}

1 个答案:

答案 0 :(得分:0)

而不是right:100%上的.nav-slider使用left:-100%使用{{1}}。

请参阅:this fiddle