欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何用純js實(shí)現(xiàn)返回頁面頂部功能

 更新時(shí)間:2024年06月21日 08:56:23   作者:Rattenking  
頁面返回頂部是在Web中常見的效果,在一個(gè)很長的頁面中,頁面返回頂部按鈕可以方便用戶回到頁面的頂部,增強(qiáng)用戶體驗(yàn),這篇文章主要給大家介紹了關(guān)于如何用純js實(shí)現(xiàn)返回頁面頂部功能的相關(guān)資料,需要的朋友可以參考下

1. 需求場(chǎng)景

點(diǎn)擊頁面中的浮標(biāo),頁面自動(dòng)返回頂部。

2. 需求實(shí)現(xiàn)分析

  • 直接使用 body 或者 documentElement 的 scrollTop 屬性,直接設(shè)置為 0;就能返回頁面頂部;
  • 使用 window.scrollTo 方法,實(shí)現(xiàn)返回頁面頂部。

3. 方案一:直接返回頂部

3.1 代碼邏輯分析

  • 獲取返回頂部按鈕;
  • 當(dāng)頁面滾動(dòng)時(shí)顯示或隱藏返回頂部按鈕;
    2.1 獲取當(dāng)前滾動(dòng)的位置;
    2.2 判斷是否超過設(shè)置的顯示距離,超過就顯示,否則就隱藏;
  • 滾動(dòng)到頂部。

3.2 代碼實(shí)現(xiàn)

      function scrollToTop({elem, speed = 5, top = 0, showDistance = 500, callback}) {
        // 獲取返回頂部按鈕
        let backToTopButton = document.getElementById(elem);
        // 當(dāng)頁面滾動(dòng)時(shí)顯示或隱藏返回頂部按鈕
        window.onscroll = function() {
          // 獲取當(dāng)前滾動(dòng)的位置
          let currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
          // 判斷是否超過設(shè)置的顯示距離,超過就顯示,否則就隱藏
          if (currentScroll  > showDistance) {
            backToTopButton.style.display = "block";
          } else {
            backToTopButton.style.display = "none";
          }
        };
        // 滾動(dòng)到頂部
        backToTopButton.addEventListener("click", function() {
          document.body.scrollTop = 0;
          document.documentElement.scrollTop = 0;
        });
      }

3.3 總結(jié)

  • 由于直接設(shè)置 scrollTop 為 0,因此執(zhí)行過程不夠平滑,直接返回頂部,體驗(yàn)不好!

4. 方案二:平滑滾動(dòng)

4.1 代碼實(shí)現(xiàn)分析

  • 獲取返回頂部按鈕;
  • 當(dāng)頁面滾動(dòng)時(shí)顯示或隱藏返回頂部按鈕;
    2.1 獲取當(dāng)前滾動(dòng)的位置;
    2.2 判斷是否超過設(shè)置的顯示距離,超過就顯示,否則就隱藏;
  • 平滑滾動(dòng)到頂部;
    3.1 獲取當(dāng)前滾動(dòng)的位置;
    3.2 如果當(dāng)前不在頂部,則開始滾動(dòng)動(dòng)畫;
    3.3 到達(dá)指定位置,執(zhí)行回調(diào)函數(shù);
  • 滾動(dòng)函數(shù);
    4.1 獲取當(dāng)前滾動(dòng)的位置;
    4.2 如果當(dāng)前不在頂部,則開始滾動(dòng)動(dòng)畫;
    4.3 控制滾動(dòng)速度。

4.2 代碼實(shí)現(xiàn)

     function scrollToTop({elem, speed = 5, top = 0, showDistance = 500, callback}) {
        // 獲取返回頂部按鈕
        let backToTopButton = document.getElementById(elem);
        // 當(dāng)頁面滾動(dòng)時(shí)顯示或隱藏返回頂部按鈕
        window.onscroll = function() {
          // 獲取當(dāng)前滾動(dòng)的位置
          let currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
          // 判斷是否超過設(shè)置的顯示距離,超過就顯示,否則就隱藏
          if (currentScroll > showDistance) {
            backToTopButton.style.display = "block";
          } else {
            backToTopButton.style.display = "none";
          }
        };
        // 平滑滾動(dòng)到頂部
        backToTopButton.addEventListener("click", function() {
          // 獲取當(dāng)前滾動(dòng)的位置
          let currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
          // 如果當(dāng)前不在頂部,則開始滾動(dòng)動(dòng)畫
          if (currentScroll > top) {
            window.requestAnimationFrame(smoothScroll); // 運(yùn)行動(dòng)畫
          } else {
            // 到達(dá)指定位置,執(zhí)行回調(diào)函數(shù)
            callback && callback();
          }
        });
		// 滾動(dòng)函數(shù)
        function smoothScroll() {
          // 獲取當(dāng)前滾動(dòng)的位置
          let currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
          // 如果當(dāng)前不在頂部,則開始滾動(dòng)動(dòng)畫
          if (currentScroll > top) {
            window.requestAnimationFrame(smoothScroll);
            window.scrollTo(0, currentScroll - (currentScroll / speed)); // 控制滾動(dòng)速度
          }
        }
      }

4.3 總結(jié)

  • 實(shí)現(xiàn)了平滑滾動(dòng)到頂部;
  • 在滾動(dòng)完成后執(zhí)行回調(diào)函數(shù)。

5. 注意

  • 使用CSS來添加一些過渡效果會(huì)讓滾動(dòng)更加平滑,并增強(qiáng)用戶體驗(yàn)??梢蕴砑右韵翪SS代碼:
html {
  scroll-behavior: smooth;
}

總結(jié) 

到此這篇關(guān)于如何用純js實(shí)現(xiàn)返回頁面頂部功能的文章就介紹到這了,更多相關(guān)js返回頁面頂部?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談javascript的url參數(shù)parse和build函數(shù)

    淺談javascript的url參數(shù)parse和build函數(shù)

    下面小編就為大家?guī)硪黄獪\談javascript的url參數(shù)parse和build函數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • 小程序?qū)崿F(xiàn)頁面多級(jí)來回切換的示例代碼

    小程序?qū)崿F(xiàn)頁面多級(jí)來回切換的示例代碼

    這篇文章主要為大家詳細(xì)介紹了小程序如何頁面多級(jí)來回切換支持滑動(dòng)和點(diǎn)擊操作,文中的實(shí)現(xiàn)步驟講解詳細(xì),快跟隨小編一起動(dòng)手嘗試一下吧
    2022-07-07
  • JavaScript幾種形式的樹結(jié)構(gòu)菜單

    JavaScript幾種形式的樹結(jié)構(gòu)菜單

    今天我主要講3種不同展示的JavaScript樹結(jié)構(gòu)菜單,分別是懸浮層樹(Tree)、右鍵菜單樹(ContextMenu)和節(jié)點(diǎn)樹(TreeMenu),目前都支持無限級(jí)層次。
    2010-05-05
  • 詳解ES6 export default 和 import語句中的解構(gòu)賦值

    詳解ES6 export default 和 import語句中的解構(gòu)賦值

    這篇文章主要介紹了詳解ES6 export default 和 import語句中的解構(gòu)賦值,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • UserData用法總結(jié) lanyu出品

    UserData用法總結(jié) lanyu出品

    前一段做音樂和鏈接保存項(xiàng)目時(shí)用到了UserData,現(xiàn)在上線后效果不錯(cuò),就把UserData的一些用法總結(jié)出來,大家一同分享。
    2010-07-07
  • js實(shí)現(xiàn)同一頁面多個(gè)運(yùn)動(dòng)效果的方法

    js實(shí)現(xiàn)同一頁面多個(gè)運(yùn)動(dòng)效果的方法

    這篇文章主要介紹了js實(shí)現(xiàn)同一頁面多個(gè)運(yùn)動(dòng)效果的方法,涉及javascript操作頁面元素運(yùn)動(dòng)效果的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • JavaScript Canvas實(shí)現(xiàn)井字棋游戲

    JavaScript Canvas實(shí)現(xiàn)井字棋游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript Canvas實(shí)現(xiàn)井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • VS2008中使用JavaScript調(diào)用WebServices

    VS2008中使用JavaScript調(diào)用WebServices

    這篇文章主要介紹了VS2008中使用JavaScript調(diào)用WebServices,需要的朋友可以參考下
    2014-12-12
  • 原生js實(shí)現(xiàn)類似fullpage的單頁/全屏滾動(dòng)

    原生js實(shí)現(xiàn)類似fullpage的單頁/全屏滾動(dòng)

    這篇文章主要介紹了利用原生js實(shí)現(xiàn)類似fullpage的全屏滾動(dòng)的實(shí)現(xiàn)方法,文中給出了完整的實(shí)例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考價(jià)值,需要的朋友們可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • javascript preload&lazy load

    javascript preload&lazy load

    最近需要用到預(yù)加載和延遲加載的東東,就參考寫了一個(gè)。支持跨頁面,支持超時(shí)設(shè)置與依賴設(shè)置。
    2010-05-05

最新評(píng)論