2014-08-30 112 views
-1

當我使用下面的代碼時,它變得非常糟糕。Javascript動畫()滾動不能按預期工作

動畫完成後,我滾動並翻動頁面(文檔)。

$(document).ready(function(){ 
    $(' .nav, .learn-more').click(function(event){ 
     $('html, body').animate({ 
     scrollTop: $("#"+event.target.id+".featurette").offset().top 
     }, 1000); 
    }); 
}); 

請參閱演示Codecademy

+0

您的意思是'$(文件).ready'不'(文件).ready'? – soktinpk 2014-08-30 20:59:07

+0

歡迎來到StackOverflow。這是一個專業的問答網站。請訪問[如何問](http://stackoverflow.com/help/how-to-answer)網站。 – afzalex 2014-08-30 21:08:49

回答

0

彈跳發生在動畫尚未完成且腳本會保持頁面滾動時,然後您嘗試反向滾動,並且由於jQuery動畫的工作方式,您的反滾動會被繼續重置的滾動動畫。

看着你的linked example,我發現你的動畫爲什麼會跳動。您使用的連接單擊處理程序的選擇是​​,並在你的HTML,有2個.nav S,一個是另一個的孩子:

<div class="nav">
        <div class="container">
                <ul class="pull-leftnavnav-pills">
                        <li><a id="" href="#">Home</a></li>

正因爲如此,動畫被稱爲兩次,導致閃爍。您應該將選擇器修改爲$('.nav .nav, .learn-more'),或使用更獨特的東西,如$('.nav.nav-pills, .learn-more')

$('.nav .nav, .learn-more').click(function(event){ 
    $('html, body').animate({ 
     scrollTop: $("#"+event.target.id+".featurette").offset().top 
    }, 2000); 
}); 

這裏的代碼共享您選擇的平臺的固定代碼:http://www.codecademy.com/DJDavid98/codebits/GSoDQf

+0

我相信它完成了動畫。檢查這個類似的例子和我的:[另一個測試](http://www.codecademy.com/Zachzhao/codebits/Nko89X/) – Zachzhao 2014-08-31 02:09:49

+0

@Zachzhao當我等待動畫完成後,我可以滾動頁面一般。 – SeinopSys 2014-08-31 10:23:48

+0

我的意思是這個:[test](http://www.codecademy.com/Zachzhao/codebits/Apcux4) – Zachzhao 2014-08-31 18:03:37