【问题标题】:jQuery animation working fine in FF but badly in all other browsersjQuery 动画在 FF 中运行良好,但在所有其他浏览器中运行不佳
【发布时间】:2013-09-25 10:38:04
【问题描述】:

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

这个左右 div 动画在 Firefox 中运行良好,但在任何其他浏览器中都无法正常运行。在其他浏览器中,div 完全从 l-r 移动,但 没有任何动画(这包括:chrome、opera、safari 等)。但是,关闭/重新打开动画在 所有 浏览器中都很好,所以这不是问题。

所以,我正在寻求帮助的只是窗口加载 div 动画 - 可以告知为什么它在 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;
}

【问题讨论】:

    标签: javascript jquery firefox animation browser


    【解决方案1】:

    不要在.nav-slider 的css 中使用right:100%,而是使用left:-100%

    见:this fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多