vue 实现 dragover拖拽到页面底部时元素自动向下滚动

news/2024/11/30 6:48:01/

公司要求做一个类似于企业微信的日程功能
在这里插入图片描述
然后呢 日程组件 需要能拖拽时间段创建
在这里插入图片描述
这里 我们使用 dragstart+dragend+dragover 记录被拖动位置完成的
如果没接触过 可以查看我的文章
vue记录鼠标拖拽划过位置并将划过位置变色

这里的话 其实可以在@dragover中做操作
界面上
@dragover=“mouseup”
mouseup函数里面加上

mouseup(event) {event.preventDefault();//这中间写你的业务逻辑const pageHeight = document.documentElement.scrollHeight;const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;const clientHeight = document.documentElement.clientHeight || window.innerHeight;if (scrollTop + clientHeight >= pageHeight) {window.scrollTo(0, pageHeight);}
}

这样 你慢慢去拖拽是可以完成 但老实说 有问题 因为dragover监听的触发是有时间间隔的
如果正好在间隔时间内 你拖拽到底 就触发不到了

其实我们可以换一种思路
先用一个变量判断当前是不是在拖拽
然后监听鼠标被移动到底
然后开启滚动
我们在
data中定义一个dragging 默认值为 false

data() {return {dragging: false};
},

用它来记录是不是在被拖拽 很简单
在@dragstart 开启拖拽 事件中赋值为 true
然后在 @dragend 鼠标放开时触发事件 设为false
然后在mounted函数中这样写

mounted() {window.addEventListener('scroll', function() {const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;const clientHeight = document.documentElement.clientHeight || window.innerHeight;const pageHeight = document.documentElement.scrollHeight;if ((scrollTop + clientHeight >= pageHeight)&&this.dragging) {window.scrollTo(0, pageHeight);}});
},

监听鼠标移动 判断 当移动到底 且dragging为条件真 即true 时向下滚动
这样就解决了
dragover的时间间隔问题


http://www.ppmy.cn/news/148766.html

相关文章

Docker Desktop 如何运行容器

第一次使用windows环境下的DockerDesktop记录下使用方法 1、配置镜像源,虽然配置了镜像源,但是在界面你还是搜索不到镜像,应该默认使用的是官方dockerhub的原因,后面可以手动创建避开这个问题。 2、运行系统的windows powershell…

python基础----01-----环境搭建

一 python介绍 1.1 Python 特点 Python 是完全面向对象的语言。函数、模块、数宁、宁符串都是对象,在 Python 中一切皆对象。完全支持继承、重载、多重继承。支持重载运算符,也支持泛型设计。Python 拥有一个强大的标准库,Python 语言的核心…

一键禁掉WIN10自动更新

工作了很久,没备份睡觉去了,一觉起来我东西呢? 正玩着游戏,激战正嗨的时候,蓝屏转圈圈开始更新。 无数次搜索怎么去除WIN10自动更新,每次按照网上的教程操作,结果都是无功而返。 下载了很多工…

Docker 数据持久化方案详解

目录 一、Docker数据持久化概述 1.1联合文件系统 1.2容器的数据卷 1.2.1 什么是数据卷 1.2.2 数据卷特点 1.2.3 Docker提供三种方式将数据从宿主机挂载到容器 二、 Docker持久化方案 2.1 查看volume 基本命令使用方法 2.2 volume持久化方案 2.2.1volume简介 2.2.2.v…

Spring三级缓存详解

Spring三级缓存是为了解决对象间的循环依赖问题。 A依赖B,B依赖A,这就是一个简单的循环依赖。 我们来先看看三级缓存的源码。 (1)查看“获取Bean”的源码,注意getSingleton()方法。 public class DefaultSingleton…

智能网联环境下数据安全分析与建设思考

01安全概况 随着智能化程度不断提升,汽车正逐渐从传统意义上的交通工具演化为公路上的智能终端,核心部件也从发动机、变速箱、底盘上升为芯片、软件与数据。相关机构研究表明,目前全球市场搭载智能网联功能的新车渗透率约为45%,预…

微信小程序——CSS限制文字宽度和行数(溢出显示省略号)

手把手教你学会判断用户在做向上滑动还是向下滑动 知识回调(不懂就看这儿!)场景复现核心干货单行文本溢出显示省略号多行文本溢出显示省略号 知识回调(不懂就看这儿!) 知识专栏专栏链接微信小程序专栏http…

Spring Boot如何实现分布式事务的协调和管理

Spring Boot如何实现分布式事务的协调和管理 在分布式系统中,事务是非常重要的一部分,可以保证多个操作在一个原子性的操作中完成,确保数据的一致性和可靠性。在分布式系统中,分布式事务需要考虑多个服务之间的数据一致性和事务提…