js控制滾動(dòng)條滾動(dòng)的兩種簡單方法

    目錄 方法一 方法二 總結(jié) 方法一 JavaScript 可以通過操作 scrollTop 屬性來控制元素的滾動(dòng),以下是一個(gè)簡單的示例代碼: var element = document.getElementById('myElement'); // 獲取需要滾動(dòng)的元素e
    目錄
    • ?方法一
    • ?方法二
    • 總結(jié)

    ?方法一

    JavaScript 可以通過操作?scrollTop?屬性來控制元素的滾動(dòng),以下是一個(gè)簡單的示例代碼:

    var element = document.getElementById('myElement'); // 獲取需要滾動(dòng)的元素
    element.scrollTop = 100; // 滾動(dòng)到距離頂部100像素的位置

    在上面的示例中,首先通過?document.getElementById?獲取需要滾動(dòng)的元素,然后設(shè)置?scrollTop?屬性為需要滾動(dòng)到的位置,即可實(shí)現(xiàn)控制滾動(dòng)條滾動(dòng)。

    如果需要平滑滾動(dòng),可以使用?window.requestAnimationFrame?方法來實(shí)現(xiàn)動(dòng)畫效果,示例代碼如下:

    var element = document.getElementById('myElement'); // 獲取需要滾動(dòng)的元素
    var targetPosition = 100; // 滾動(dòng)到距離頂部100像素的位置
    var duration = 500; // 滾動(dòng)動(dòng)畫的持續(xù)時(shí)間(毫秒)
    var startTime = null; // 動(dòng)畫開始時(shí)間
     
    function scrollTo(timestamp) {
      if (!startTime) startTime = timestamp;
      var progress = timestamp - startTime;
      var position = Math.min(progress / duration * targetPosition, targetPosition);
      element.scrollTop = position;
      if (progress < duration) {
        window.requestAnimationFrame(scrollTo);
      }
    }
     
    window.requestAnimationFrame(scrollTo); // 開始滾動(dòng)動(dòng)畫

    在上面的示例中,首先獲取需要滾動(dòng)的元素和目標(biāo)位置,然后設(shè)置動(dòng)畫的持續(xù)時(shí)間。在?scrollTo?函數(shù)中,通過計(jì)算當(dāng)前進(jìn)度和位置,來實(shí)現(xiàn)平滑的滾動(dòng)效果。在滾動(dòng)動(dòng)畫未完成時(shí),調(diào)用?window.requestAnimationFrame?方法來繼續(xù)滾動(dòng),直到動(dòng)畫完成為止。

    ?方法二

    ?獲取滾動(dòng)距離

    window.addEventListener('scroll', () => {
        scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
      })
    const ScrollTop = (number = 0, time) => {
      if (!time) {
        document.body.scrollTop = document.documentElement.scrollTop = number;
        return number;
      }
      const spacingTime = 20; // 設(shè)置循環(huán)的間隔時(shí)間  值越小消耗性能越高
      let spacingInex = time / spacingTime; // 計(jì)算循環(huán)的次數(shù)
      let nowTop = document.body.scrollTop + document.documentElement.scrollTop; // 獲取當(dāng)前滾動(dòng)條位置
      let everTop = (number - nowTop) / spacingInex; // 計(jì)算每次滑動(dòng)的距離
      let scrollTimer = setInterval(() => {
        if (spacingInex > 0) {
          spacingInex--;
          ScrollTop(nowTop += everTop);
        } else {
          clearInterval(scrollTimer); // 清除計(jì)時(shí)器
        }
      }, spacingTime);
    }

    調(diào)用示例

    ScrollTop(scrollTop, 500)

    總結(jié)

    到此這篇關(guān)于js控制滾動(dòng)條滾動(dòng)的兩種簡單方法的文章就介紹到這了,更多相關(guān)js控制滾動(dòng)條滾動(dòng)內(nèi)容請(qǐng)搜索技圈網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持技圈網(wǎng)!

    聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評(píng)論
    更多 網(wǎng)友評(píng)論0 條評(píng)論)
    暫無評(píng)論

    返回頂部

    主站蜘蛛池模板: 亚洲国产福利精品一区二区| 色精品一区二区三区| 人妻精品无码一区二区三区| 无码AⅤ精品一区二区三区| 国产成人综合亚洲一区| 中文字幕一区二区三区免费视频 | 国精无码欧精品亚洲一区| 国产成人亚洲综合一区| 国模无码人体一区二区| 日韩在线一区高清在线| 青青青国产精品一区二区| 日本一区二区三区在线观看视频 | 精品深夜AV无码一区二区老年| 一区在线免费观看| 精品视频一区二区| 日本高清一区二区三区| 亚洲福利一区二区| 亚洲国产成人一区二区精品区| 色综合视频一区二区三区 | 日韩人妻无码免费视频一区二区三区| 99久久精品国产高清一区二区 | 亚洲国产成人久久一区WWW | 国产精品乱码一区二区三区| 亚洲AV无码一区二区三区电影 | 日韩视频免费一区二区三区| 一本一道波多野结衣AV一区| 亚洲一本一道一区二区三区| 精品国产a∨无码一区二区三区| 精品乱码一区二区三区四区| 一本大道在线无码一区| 国产精品一区不卡| 亚洲一区二区高清| 日韩人妻精品一区二区三区视频| 久久久精品人妻一区亚美研究所| 人妻体内射精一区二区三区| 日本高清一区二区三区| 日韩AV无码一区二区三区不卡毛片 | 国产自产对白一区| 国产日韩高清一区二区三区| 精品一区二区久久| 精品一区二区三区水蜜桃|