js控制滾動(dòng)條滾動(dòng)的兩種簡(jiǎn)單方法
方法一
JavaScript 可以通過(guò)操作 scrollTop 屬性來(lái)控制元素的滾動(dòng),以下是一個(gè)簡(jiǎn)單的示例代碼:
var element = document.getElementById('myElement'); // 獲取需要滾動(dòng)的元素
element.scrollTop = 100; // 滾動(dòng)到距離頂部100像素的位置在上面的示例中,首先通過(guò) document.getElementById 獲取需要滾動(dòng)的元素,然后設(shè)置 scrollTop 屬性為需要滾動(dòng)到的位置,即可實(shí)現(xiàn)控制滾動(dòng)條滾動(dòng)。
如果需要平滑滾動(dòng),可以使用 window.requestAnimationFrame 方法來(lái)實(shí)現(xiàn)動(dòng)畫(huà)效果,示例代碼如下:
var element = document.getElementById('myElement'); // 獲取需要滾動(dòng)的元素
var targetPosition = 100; // 滾動(dòng)到距離頂部100像素的位置
var duration = 500; // 滾動(dòng)動(dòng)畫(huà)的持續(xù)時(shí)間(毫秒)
var startTime = null; // 動(dòng)畫(huà)開(kāi)始時(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); // 開(kāi)始滾動(dòng)動(dòng)畫(huà)在上面的示例中,首先獲取需要滾動(dòng)的元素和目標(biāo)位置,然后設(shè)置動(dòng)畫(huà)的持續(xù)時(shí)間。在 scrollTo 函數(shù)中,通過(guò)計(jì)算當(dāng)前進(jìn)度和位置,來(lái)實(shí)現(xiàn)平滑的滾動(dòng)效果。在滾動(dòng)動(dòng)畫(huà)未完成時(shí),調(diào)用 window.requestAnimationFrame 方法來(lái)繼續(xù)滾動(dòng),直到動(dòng)畫(huà)完成為止。
方法二
獲取滾動(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)的兩種簡(jiǎn)單方法的文章就介紹到這了,更多相關(guān)js控制滾動(dòng)條滾動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IE的事件傳遞-event.cancelBubble示例介紹
關(guān)于event.cancelBubble,Bubble就是一個(gè)事件可以從子節(jié)點(diǎn)向父節(jié)點(diǎn)傳遞,下面有個(gè)不錯(cuò)的示例,大家可以感受下2014-01-01
Firefox下提示illegal character并出現(xiàn)亂碼的原因
Firefox下提示illegal character并出現(xiàn)亂碼的問(wèn)題,時(shí)間是是因?yàn)榫幋a的問(wèn)題導(dǎo)致。2010-03-03
詳解JS去重及字符串奇數(shù)位小寫(xiě)轉(zhuǎn)大寫(xiě)
本篇文章主要介紹了詳解JS去重及字符串奇數(shù)位小寫(xiě)轉(zhuǎn)大寫(xiě) ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12
in.js 一個(gè)輕量級(jí)的JavaScript顆?;K加載和依賴(lài)關(guān)系管理解決方案
近一年來(lái),國(guó)內(nèi)外都十分熱衷于異步加載的研究,為了加快頁(yè)面的載入速度,無(wú)阻塞加載Javascript的方法和框架成為了前端開(kāi)發(fā)的焦點(diǎn)和亮點(diǎn)之一。2011-07-07
淺談layui框架自帶分頁(yè)和表格重載的接口解析問(wèn)題
今天小編就為大家分享一篇淺談layui框架自帶分頁(yè)和表格重載的接口解析問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
微信小程序?qū)崿F(xiàn)展示評(píng)分結(jié)果功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)展示評(píng)分結(jié)果功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
基于JavaScript實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01

