JavaScript中獲取滾動條高度的多種方法詳解

一、直接獲取滾動條高度

window.pageYOffset
document.documentElement.scrollTop || document.body.scrollTop

可以直接通過window.pageYOffset或document.documentElement.scrollTop || document.body.scrollTop獲取頁面滾動條在Y軸上的滾動距離(單位為像素),這兩個屬性均可兼容大多數主流瀏覽器。

代碼示例:

var scrollHeight = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
console.log('滾動高度:' + scrollHeight);

二、jQuery獲取滾動條高度

$(window).scrollTop()

使用jQuery框架也可以輕鬆獲取滾動條高度,只需要調用$(window).scrollTop()即可返回滾動條在Y軸上的滾動距離(單位為像素)。

代碼示例:

var scrollHeight = $(window).scrollTop();
console.log('滾動高度:' + scrollHeight);

三、滾動事件獲取滾動條高度

document.addEventListener('scroll', function(){
  console.log('滾動高度:' + window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
})

通過監聽滾動事件,實時獲取滾動條的高度,可以提高用戶體驗。

代碼示例:

document.addEventListener('scroll', function(){
  var scrollHeight = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  console.log('滾動高度:' + scrollHeight);
});

四、節流優化滾動條高度獲取

function throttle (fn, delay) {
  let last;
  return function () {
    const context = this;
    const args = arguments;
    const now = +new Date();
    if (!last || now > last + delay) {
      fn.apply(context, args);
      last = now;
    }
  }
}

document.addEventListener('scroll', throttle(function(){
  var scrollHeight = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  console.log('滾動高度:' + scrollHeight);
}, 300));

如果在滾動事件中直接寫獲取滾動條高度的代碼,會造成事件的頻繁觸發,造成頁面卡頓。為了優化性能,可以對滾動事件進行節流,控制事件的觸發間隔,提高用戶體驗。

代碼示例:

function throttle (fn, delay) {
  let last;
  return function () {
    const context = this;
    const args = arguments;
    const now = +new Date();
    if (!last || now > last + delay) {
      fn.apply(context, args);
      last = now;
    }
  }
}

document.addEventListener('scroll', throttle(function(){
  var scrollHeight = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  console.log('滾動高度:' + scrollHeight);
}, 300));

五、滾動到底部加載更多

document.addEventListener('scroll', throttle(function(){
  var scrollHeight = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  var pageHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
  if (scrollHeight + window.innerHeight >= pageHeight) {
    console.log('已滾動到頁面底部,執行加載更多操作');
  }
}, 300));

在一些需要加載更多數據的場景中,可以通過監聽滾動事件判斷滾動條是否到達頁面底部,從而自動觸發加載更多的操作。

代碼示例:

document.addEventListener('scroll', throttle(function(){
  var scrollHeight = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  var pageHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
  if (scrollHeight + window.innerHeight >= pageHeight) {
    console.log('已滾動到頁面底部,執行加載更多操作');
  }
}, 300));

六、總結

本文介紹了JavaScript中獲取滾動條高度的多種方法,包括直接獲取滾動條高度、jQuery獲取滾動條高度、滾動事件獲取滾動條高度、節流優化滾動條高度獲取和滾動到底部加載更多等方面。無論是在滾動監測、懶加載、無限加載還是製作瀑布流等方面都是必不可少的技術。開發者可根據項目需求選擇合適的方法,提高網頁加載速度和用戶體驗。

原創文章,作者:JJMMD,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/372982.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JJMMD的頭像JJMMD
上一篇 2025-04-25 15:26
下一篇 2025-04-25 15:26

相關推薦

  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python獲取當前日期的多種方法

    本文介紹如何使用Python獲取當前日期,並提供了多種方法,包括使用datetime模塊、time模塊以及第三方庫dateutil等。讓我們一步一步來看。 一、使用datetime…

    編程 2025-04-29
  • Python生成隨機數的多種方法

    本文將從以下幾個方面詳細介紹如何使用Python生成隨機數。 一、random模塊的使用 Python內置的random模塊能夠生成偽隨機數,使用該模塊,可以生成隨機數、隨機整數等…

    編程 2025-04-29
  • 帶滾動條的文本框

    本文將從多個方面對帶滾動條的文本框進行詳細的闡述,包括實現方式、功能特點、優點及注意事項。 一、實現方式 帶滾動條的文本框可以通過使用HTML和CSS實現,具體代碼如下: <…

    編程 2025-04-27
  • Python獲取APP數據的多種方式

    如果您需要對APP進行分析、數據採集、監控或者自動化測試,那麼您一定需要獲取APP的數據。本文將會介紹一些Python獲取APP數據的方式。 一、使用ADB工具獲取APP數據 AD…

    編程 2025-04-27
  • Python獲取字符串首字母的多種方法

    本文將從多個方面詳細闡述Python獲取字符串首字母的方法,包括切片、正則表達式、字符串方法、以及自定義函數。 一、切片 切片是Python中常用的基本操作之一,通過對字符串執行切…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25

發表回復

登錄後才能評論