vue上实现左右关联滚动
创始人
2024-05-31 20:24:31
0

先看效果:
在这里插入图片描述

代码:

其中scrollUtil.js:

const scrollUtil = {/*** 滚动到目标offsetTop* @param {*} targetOffsetTop 目标offsetTop*/scrollTo: function (targetOffsetTop) {// 当前offsetToplet scrollTop =document.documentElement.scrollTop || document.body.scrollTop;// 定义一次跳50个像素,数字越大跳得越快,但是会有掉帧得感觉const STEP = 50;// 判断是往下滑还是往上滑if (scrollTop > targetOffsetTop) {// 往上滑smoothUp();} else {// 往下滑smoothDown();}// 定义往下滑函数function smoothDown() {// 如果当前 scrollTop 小于 targetOffsetTop 说明视口还没滑到指定位置if (scrollTop < targetOffsetTop) {// 如果和目标相差距离大于等于 STEP 就跳 STEP// 否则直接跳到目标点,目标是为了防止跳过了。if (targetOffsetTop - scrollTop >= STEP) {scrollTop += STEP;} else {scrollTop = targetOffsetTop;}document.body.scrollTop = scrollTop;document.documentElement.scrollTop = scrollTop;// 屏幕在绘制下一帧时会回调传给 requestAnimationFrame 的函数// 关于 requestAnimationFrame 可以自己查一下,在这种场景下,相比 setInterval 性价比更高requestAnimationFrame(smoothDown);}}// 定义往上滑函数function smoothUp() {if (scrollTop > targetOffsetTop) {if (scrollTop - targetOffsetTop >= STEP) {scrollTop -= STEP;} else {scrollTop = targetOffsetTop;}document.body.scrollTop = scrollTop;document.documentElement.scrollTop = scrollTop;requestAnimationFrame(smoothUp);}}},
};export default scrollUtil;

注意:样式要加box-sizing配置,消除border的影响,否则左边index根据页面滚动定位会不准确
在这里插入图片描述

没加box-sizing,offsetTopArr的打印结果:
在这里插入图片描述

加了box-sizing,offsetTopArr的打印结果:
在这里插入图片描述

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...