2015-05-13 51 views
0

這是我的代碼:如何補償具有不同偏移量的動畫的速度?

$('.element').click(function() { 
    var offsetTop = $('.destination').offset().top; 
    $('html,body').stop(true, false).animate({ scrollTop: offsetTop }, 800); 
}); 

我觸發不同的(垂直)的地方我的網頁上的驗證碼。 由於偏移改變,到目的地的速度不同(我點擊的越多,動畫越快)。

你會如何補償這部動畫?每個垂直/偏移值具有相同的速度?

這裏有一個例子:http://jsfiddle.net/o2oq4y38/1/

點擊1,並採取滾動速度的照顧。點擊8,看看它有多慢。

+0

將此動畫應用於點擊並停止以前的動畫 – madalinivascu

+0

沒有示例,很難理解您的意思。如果我明白你的意思,那麼,因爲速度是距離和時間的乘積,所以你需要減小距離或增加動畫時間。 –

+0

好的,例子來了...... – markzzz

回答

2

您必須根據offset動態計算speed動畫。

$('.element').click(function() { 
    var offsetTop = $(this).offset().top, 
     destinationTop = $('.destination').offset().top, 
     speed = ((destinationTop - offsetTop)/$(window).height()) * 800; 
     // Speed calculation according to the distance to cover 

    $('html,body').stop(true, false).animate({ 
     scrollTop: destinationTop 
    }, speed); 

}); 

演示:https://jsfiddle.net/tusharj/o2oq4y38/2/

這將滾動從頁面上的任何地方用相同的速度之上。

+1

不知道你是否明白我的意思。檢查我發佈的示例。在你的情況下,速度總是相同的價值,這應該改變我猜... – markzzz

+0

@markzzz檢查更新的答案 – Tushar

相關問題