原生JS基于window.scrollTo()封装垂直滚动动画工具函数

这篇文章主要介绍了关于原生js基于window.scrollto()封装垂直滚动动画工具函数 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

概要:

原生JS基于window.scrollTo()封装垂直滚动动画工具函数,可应用与锚点定位、回到顶部等操作。

封装原因:
在vue项目中,遇到需要实现垂直滚动效果的需求,初步想到的方法有两个:
1:使用window.scrollTo()方法,但是这个方法是没有动画效果的,需要手动封装一下。
2:使用JQuery的动画函数,缺点比较明显:需要引入JQuery。
显然,选择第一种好很多。

以下为封装window.scrollTo()的方法scroll(),文件名为scroll.js

// Created by xiaoqiang on 30/05/2018./** * @param {numeber} currentY 需要移动的dom当前位置离网页顶端的距离 * @param {number} targetY 需要移动的dom当前位置离要移到的位置的距离 */function scroll (currentY, targetY) {  // 计算需要移动的距离  let needScrollTop = targetY - currentY  let _currentY = currentY  setTimeout(() => {    // 一次调用滑动帧数,每次调用会不一样    const dist = Math.ceil(needScrollTop / 10)    _currentY += dist    window.scrollTo(_currentY, currentY)    // 如果移动幅度小于十个像素,直接移动,否则递归调用,实现动画效果    if (needScrollTop > 10 || needScrollTop < -10) {      scroll(_currentY, targetY)    } else {      window.scrollTo(_currentY, targetY)    }  }, 1)}// 暴露此方法export default scroll

登录后复制

使用方法

比如在vue中,可以这样用:
import scroll form ‘@/common/util/scroll.js’
随后在响应触发事件的函数中调用scroll(),需要传入两个参数,比如:

      methods: {        test () {          const scrollHeight = document.getElementsByClassName('scroll-element')[0].offsetTop          const currentY = document.documentElement.scrollTop || document.body.scrollTop          scroll(currentY, scrollHeight)        }      }

登录后复制

有错误或不清晰或可以改进的地方欢迎指出,O(∩_∩)O~~

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

JS实现归并排序

vue 实现数字滚动增加效果

Jquery添加loading过渡遮罩

以上就是原生JS基于window.scrollTo()封装垂直滚动动画工具函数的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2746905.html

(0)
上一篇 2025年3月8日 04:14:19
下一篇 2025年2月24日 21:28:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS实现堆排序

    这篇文章主要介绍了关于js实现堆排序,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 堆的预备知识 堆是一个完全二叉树。 完全二叉树: 二叉树除开最后一层,其他层结点数都达到最大,最后一层的所有结点都集中在左边(左边结点排列满…

    2025年3月8日 编程技术
    100
  • react 官网动画库(react-transition-group)的新写法

    这篇文章主要介绍了关于react 官网动画库(react-transition-group)的新写法 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 一、react-transition-group 一个官网提供的动画过度库…

    编程技术 2025年3月8日
    200
  • node爬取拉勾网数据并导出为excel文件

    这篇文章主要介绍了关于node爬取拉勾网数据并导出为excel文件,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 前言 之前断断续续学习了node.js,今天就拿拉勾网练练手,顺便通过数据了解了解最近的招聘行情哈!node方…

    2025年3月8日 编程技术
    200
  • async/await 并行请求和错误处理

    这篇文章主要介绍了关于async/await 并行请求和错误处理,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 async 顺序 并发请求 使用async的时候,代码执行的顺序很容易出错,比如我们要同时发起两个请求,可能会写…

    2025年3月8日
    200
  • 用Node编写RESTful API接口

    这篇文章主要介绍了关于用node编写restful api接口 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 前言 本文将通过一个todo list前后端分离的小项目来讲解如何用Node创建符合RESTful风格的API接…

    2025年3月8日
    200
  • Javascript装饰器的用法

    这篇文章主要介绍了关于javascript装饰器的用法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 最近新开了一个Node项目,采用TypeScript来开发,在数据库及路由管理方面用了不少的装饰器,发觉这的确是一个好东西…

    编程技术 2025年3月8日
    200
  • 如何解决JS高程中的垃圾回收机制与常见内存泄露的问题

    这篇文章主要介绍了关于如何解决js高程中的垃圾回收机制与常见内存泄露的问题,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 前言 起因是因为想了解闭包的内存泄露机制,然后想起《js高级程序设计》中有关于垃圾回收机制的解析,之前…

    编程技术 2025年3月8日
    200
  • 如何禁止JavaScript对象重写

    这篇文章主要介绍了关于如何禁止javascript对象重写,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 译者按: 使用Object.preventExtensions()、Object.seal()和Object.free…

    编程技术 2025年3月8日
    200
  • ES6 Class 继承与 super的介绍

    这篇文章主要介绍了关于es6 class 继承与 super的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Class 继承与 super class 可以 extends 自另一个 class。这是一个不错的语法,技…

    2025年3月8日 编程技术
    200
  • jQuery-Ajax请求Json数据并加载在前端页面

    这篇文章主要介绍了关于jquery-ajax请求json数据并加载在前端页面,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Ajax技术应用广泛,这种异步加载技术,无需刷新网页即可更新网站内容,全局或者局部均可,所以大家应该…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论