站長資訊網
        最全最豐富的資訊網站

        實例講解js如何實現dom元素橫向及縱向滾動的動畫

        本篇文章給大家介紹js如何實現dom元素橫向、縱向滾動的動畫,希望對需要的朋友有所幫助!

        通過settimeout實現的滾動動畫,支持反復點擊變快

        支持水平滾動和豎直滾動,快速點擊會將上次未滾動完的距離疊加,滾動的時間不變,滾動的速度會變快

        使用方式

        1、復制下方代碼;

        2、導出對應的方法 movingColumn – 豎直滾動 moving–水平滾動

        3、函數接收3個參數 dom: 要滑動的元素 space: 點擊一次要滾動的距離 istop/isLeft 是否向上/左滾動

        功能修改

        const hz = 60 在規定時間分幾次滾動到目標位置 60是人肉眼可識別的刷新率

        每次滾動的時間為 settime里的1ms * hz = 60ms

        let timer:any = null // 定時器 let TargetLocation = -1 // 上一次點擊應該滾動到的目標位置 let toltalSpace = 0 // 本次要滾動的距離  /**  * @info 豎直滾動  * @info 滾動動畫 hz 刷新率 可以修改滾動的速度  * @params dom:要滾動的元素; space 要滾動的距離; istop 滾動的方向; */ const movingColumn = (dom:HTMLDivElement, space: number, istop:boolean) => {    // 用戶快速點擊 則把上次未滾動的距離與本次滾動結合再一起   if (timer && TargetLocation !== -1) {     toltalSpace += TargetLocation - dom.scrollTop     // 計算本次的目標距離     if(istop) {       TargetLocation = dom.scrollTop + toltalSpace + space     } else {       TargetLocation = dom.scrollTop + toltalSpace - space     }   } else if (!timer) {     toltalSpace = 0     TargetLocation = -1   }    if (istop) {     toltalSpace -= space   } else {     toltalSpace += space   }    // 獲取本次的目標位置   const position = dom.scrollTop   TargetLocation = position + toltalSpace    clearInterval(timer)   timer = null   const hz = 60   let i = 1   timer = setInterval(() => {     dom.scrollTop = position + i * toltalSpace / hz     ++i     if (i >= hz) {       clearInterval(timer)       timer = null       dom.scrollTop = TargetLocation // 位置修正       toltalSpace = 0       TargetLocation = -1     }   }, 1) }   /**  * @info 水平滾動  * @info 滾動動畫 hz 刷新率 可以修改滾動的速度  * @params dom:要滾動的元素; space 要滾動的距離; isLeft 滾動的方向; */ const moving = (dom:HTMLDivElement, space: number, isLeft:boolean) => {    // 用戶快速點擊 則把上次未滾動的距離與本次滾動結合再一起   if (timer && TargetLocation !== -1) {     toltalSpace += TargetLocation - dom.scrollLeft     // 計算本次的目標距離     if(isLeft) {       TargetLocation = dom.scrollLeft + toltalSpace + space     } else {       TargetLocation = dom.scrollLeft + toltalSpace - space     }   } else if (!timer) {     toltalSpace = 0     TargetLocation = -1   }    if (isLeft) {     toltalSpace -= space   } else {     toltalSpace += space   }    // 獲取本次的目標位置   const position = dom.scrollLeft   TargetLocation = position + toltalSpace    clearInterval(timer)   timer = null   const hz = 60   let i = 1   timer = setInterval(() => {     dom.scrollLeft = position + i * toltalSpace / hz     ++i     if (i >= hz) {       clearInterval(timer)       timer = null       dom.scrollLeft = TargetLocation // 位置修正       toltalSpace = 0       TargetLocation = -1     }   }, 1) }  export {   moving,   movingColumn }

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 中文字幕无码久久精品青草| 亚洲AV无码精品色午夜果冻不卡 | 国产乱码精品一品二品| 国内精品视频九九九九| 久久精品草草草| 国产精品无码无在线观看| 无码精品人妻一区| 国产精品户外野外| 一区二区三区精品| 精品国产麻豆免费人成网站| 精品无码久久久久久尤物| 亚洲国产精品综合久久网络| 国产亚洲精品国看不卡| 欧美精品免费观看二区| 国产精品2019| 91老司机深夜福利精品视频在线观看| 午夜精品久久久久久中宇| 亚洲七七久久精品中文国产| 日韩欧美国产精品第一页不卡| 精品水蜜桃久久久久久久| 国产在线精品国自产拍影院| 国产精品成人69XXX免费视频| 丝袜美腿国产精品视频一区 | 永久无码精品三区在线4| 欧美精品一区二区三区免费观看 | 国产一成人精品福利网站| 国产精品国产亚洲精品看不卡| 精品一区二区三区自拍图片区| 日韩精品无码中文字幕一区二区| 亚洲国产综合精品一区在线播放| 青青青青久久精品国产h久久精品五福影院1421 | 3D动漫精品啪啪一区二区下载| 精品久久久久久国产潘金莲| 精品免费久久久久久久| 精品国产乱码一区二区三区| 国语自产少妇精品视频蜜桃| 国产精品扒开腿做爽爽爽视频| 精品久久久久香蕉网| 2021国产成人精品国产| 国产精品嫩草视频永久网址| 久久精品国产69国产精品亚洲|