如何監測html元素的scroll bottom事件

  • 不存在scrollBottom事件

有很多場合我們需要scrollBottom事件來監測滾動條是否滾動到頁面或者父元素底部。例如頁面的lazy load,當滾動到底部時自動加載一部分內容。但是html dom本身是沒有這個事件的。同樣,以操作dom聞名的jquery也沒有提供支持。


  • 下面是我總結的方法,如有不對請多多指教。

  • 1.準備知識

scrollHeight屬性,表示元素內部的內容的高度。

$(dom)表示jquery選定的元素,$(dom).scrollTop(),此方法返回內容滾動過的距離。傳入數字參數可以設定這個距離,且當參數 小於等於0時,滾動條滾動到頂部;

反之,當參數高於元素實際內容高度時,滾動條滾動到底部。

$(dom).height()返回元素顯示區域的高度。

下圖標註了上面三個高度的具體含義。

  • 2.理解了上面的知識,我們接下來要做的事情就很簡單了。

從上圖可知,當滾動條向下滾動時,scrollTop不斷變大,當滾動到底部時,scrollTop+height的和剛好和scrollHeight相等。所以我們只需要在元素的scroll事件中對這三個值做此比較就可以了。

  • 3. 簡單的控制scroll bar到底部或者頂部。

到頂部:$(dom).scroll(0)

到底部:$(dom).scroll(Number.MAX_SAFE_INTEGER)。設定一個不可能到達的值,滾動條就乖乖滾到最下面了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章