如何在使用position: fixed
元素按下鼠標按鈕時逐漸向下滾動視口?在mousedown上逐漸滾動,直到mouseup
4
A
回答
2
在這裏你可以jQuery.animate()結合setTimeout()和clearTimeout()做到這一點:
$('.button').on('mousedown', function() {
console.log('Start Animate');
(function smoothSrcroll() {
console.log(Math.max($('html').scrollTop(), $('body').scrollTop()));
$('html, body').stop().animate({
scrollTop: Math.max($('html').scrollTop(), $('body').scrollTop()) + 100
}, 1000, 'linear', function() {
window.timeout = setTimeout(smoothSrcroll(), 0);
});
})();
}).on('mouseup', function() {
console.log('Stop Animate');
$('html, body').stop();
clearTimeout(window.timeout);
});
我針對$('html, body')
,這樣它會在Firefox和Chrome瀏覽器。這有點棘手,因爲animate()
實際上運行兩次,因爲兩個選擇器。爲了解決這個問題,我使用了jQuery.stop()。由於Firefox可以使用$('html').scrollTop()
而Chrome使用$('body').scrollTop()
,我使用Math.max()來計算增量。該功能在完成時自行執行,並在釋放鼠標時使用clearTimeout()
和jQuery.stop()
。
+0
工程很好,謝謝!有沒有辦法讓它更平滑些? –
+0
@ScottHunter在默認的jQuery庫中增加了一些補充腳本。實際上只有3種設置:線性,擺動和默認設置。您可以找到創建更平滑過渡的腳本。 – Daerik
相關問題
- 1. 如何連續滾動開始mousedown直到mouseup?
- 2. Internet Explorer 11:在滾動條上觸發的MouseUp-MouseDown
- 3. 滾動按鈕逐漸向下滾動
- 4. 在mouseup上停止滾動
- 5. Mouseup和Mousedown
- 6. 在滾動div逐漸淡出淡出
- 7. MouseDown或MouseUp事件?
- 8. 滾動div直到mousedown上的最後一個div
- 9. MouseDown事件直到MouseUp時纔會傳遞,當拖動源存在時
- 10. JQuery如何顯示,隱藏像滾動mousedown()和mouseup()
- 11. 嘗試逐漸向下滾動,並在遞增時向上滾動
- 12. 在網頁上逐漸移動元素
- 13. javascript如何在mousedown上不斷移動元素並停止在mouseup上移動
- 14. Javascript mouseup和mousedown事件
- 15. 區分點擊vs mousedown/mouseup
- 16. mouseDown和mouseUp時重繪NSButton
- 17. 區分mouseup mousedown和點擊
- 18. jQuery在mousedown上的平滑滾動
- 19. 在mousedown上更改div圖像並在mouseup上還原
- 20. 防止在MouseDown後發生MouseUp/MouseClick
- 21. 處理事件mouseDown和mouseUp在Cocoa
- 22. 在mousedown元素外部檢測mouseup
- 23. mouseup在mousedown後未被觸發
- 24. 在jQuery中既有mousedown/mouseup也有dblclick
- 25. 在jQuery中mousedown後mouseup沒有開火
- 26. mousedown上的Webkit滾動條錯誤
- 27. 在MouseDown上顯示MessageBox會吃掉MouseUp事件
- 28. jquery在幾個圖像上添加mouseup和mousedown事件
- 29. mousedown和mouseup綁定和解除mousedown處理程序
- 30. 如何解決mouseup和mousedown問題?
滾動時,鼠標光標不會脫離它們按住的元素嗎?如果你的意思是「點擊」而不是持有,那麼檢查一下:[Javascript平滑滾動而不使用jQuery](https://stackoverflow.com/questions/10063380/javascript-smooth-scroll-without-the-use -jquery)或[this](https://www.sitepoint.com/smooth-scrolling-vanilla-javascript/) –
謝謝,但它會是一個固定的元素,他們按住 –