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

news2024/11/24 12:05:39

公司要求做一个类似于企业微信的日程功能
在这里插入图片描述
然后呢 日程组件 需要能拖拽时间段创建
在这里插入图片描述
这里 我们使用 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.coloradmin.cn/o/609168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++ 基础篇:20】:类的 (const)static 静态成员:面试题:实现一个类,计算程序中创建出了多少个类对象?

本系列 C 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C的三大特性等&#…

区块链基础之共识机制

1.1共识机制 1.1.1核心定义 区块链上的共识机制主要解决由谁来构造区块,以及如何维护区块链统一的问题 1.1.2共识机制分类 1.1.3 共识算法 1.1.3.1 POW(工作量证明) 代表项目:BTC 由于不同的节点接受数据有所区别,为了保证数据一致性&a…

改善录音直播收音环境,只需一副监听耳机,丁一号G800S体验

现在很多人已经习惯了使用蓝牙耳机,但在平时直播、录音的时候,把蓝牙耳机当作耳返工具并不好用,经常有延迟高之类的问题,影响我们的录音效果和沟通体验,这时候需要配备一个监听耳机,才能够了解到实际的收音…

斐波那契数列题解(非递归c++方法实现)

在做信奥赛(信息学奥赛)中的for循环题目时,有一道斐波那契数列,想到的第一个方法是使用递归求解;因为以往题目最多使用的就是递归形式,但鉴于该题目在for循环题目堆,所以就思考了一些新方法&…

果推断17--基于反事实因果推断的度小满额度模型学习笔记

目录 一、原文地址 二、一些问题 2.1如何从RCT随机样本过渡到观测样本因果建模? 2.2反事实学习的核心思想 2.3度小满的连续反事实额度模型 Mono-CFR 2.4Mono-CFR代码实现(待补充) 2.5CFR学习 2.5.1CFR 2.5.2DR-CFR 参考 一、原文地…

2.C++多线程--危险点分析

1.detach使用时分析 使用detach时&#xff0c;子线程一定不要传入指针 #include<iostream> #include<thread> using namespace std;void my_print(const int& num1,const char* str) {cout << num1 << " " << str << endl; …

MySQL 事务处理语言 TCL

文章目录 事务处理语言 TCL事务简介事务控制并发事务的隔离挑战脏读不可重复读幻读 事务的隔离级别未提交读&#xff08;READ-UNCOMMITED&#xff09;提交读&#xff08;READ COMMITED&#xff09;可重复读&#xff08;REPEATABLE READ&#xff09;可串行化&#xff08;SERIALI…

虹科案例 | 筒仓液位测量可以这么简单?

Part.01 行业挑战 在料箱、料斗或筒仓中使用散装物料的制造商需要准确可靠的液位检测来管理和处理库存&#xff0c;并最大限度地减少生产延迟。 塑料成型、食品加工和建筑材料等行业都依赖于散装材料。随着这些行业越来越接近准时制&#xff08;JIT&#xff09;制造&#xff…

认识协议【网络基础】

文章目录 什么是协议结构化数据结构化数据非结构化数据半结构化数据 结构化数据的传输序列化和反序列化 网络版计算器概述制定协议通过字符串传输结构化数据序列化与反序列化 实现计算器网络相关接口框架服务端客户端 制定协议请求响应发送和接收数据 计算逻辑测试存在的问题 T…

修改数组【并查集】

这里写自定义目录标题 并查集并查集的表示方法 题目输入描述输入示例输出示例 解题思路参考连接 并查集 并查集就是对集合的合并和查询操作的统称。他要求参与运算的两个集合是不相交的(不含有相同的元素)。针对这两个集合可以进行的操作&#xff1a; 1.合并&#xff1a;将两个…

复习之Linux系统中的进程管理

1.什么是进程&#xff1f;线程&#xff1f; 进程&#xff08;Process&#xff09;&#xff1a;是操作系统进行资源分配的最小单位。一个进程是一个程序的一次执行过程。每启动一个进程&#xff0c;操作系统就会为它分配一块独立的内存空间&#xff0c;用于存储PCB、数据段、程…

如何从复盘中获得真正的收获?持续改进是关键!

复盘&#xff0c;本是围棋术语&#xff0c;每次博弈结束后&#xff0c;双方棋手把刚才的对局复演一遍&#xff0c;分析对局当中得失关键&#xff0c;提升自己棋力的好方法。复盘是对思维的训练。 通过复盘&#xff0c;当类似局面再次出现&#xff0c;你就能快速预测接下来的动态…

【网络】TCP套接字创建服务客户端与守护进程

文章目录 Tcp服务端TcpServer.hppTcpServer.cc Tcp客户端TcpClient.hppTcpClient.cc TCP客户端处理守护进程守护进程化 Tcp服务端 TcpServer.hpp TCP服务端创建流程如下&#xff1a; 创建socket文件套接字对象&#xff0c;面向字节流SOCK_STREAM bind绑定自己的网络信息&…

nacos注册中心配置springboot动态刷新源码解读

0丶简介 如何快速启动,请去官网看文档,言简意赅 https://nacos.io/zh-cn/docs/quick-start.html 只描述为何实现动态刷新的关键源码 1丶基于目前最新版本 <!-- https://mvnrepository.com/artifact/com.alibaba.boot/nacos-config-spring-boot-starter --> <depend…

命名管道详解

一、命名管道 1、命名管道与匿名管道一个很显著的区别是&#xff1a;匿名管道只能在有血缘关系的进程间进行通信&#xff0c;但命名管道可以让两个毫无关系的进程进行通信。 2、如果我们想在不相关的进程间交换数据&#xff0c;我们可以用到FIFO文件来进行通信&#xff0c;这…

【Nginx rewrite】

目录 一、常见的Nginx 正则表达式二、location1、location 解释2、location 示例说明&#xff1a;3、实际网站使用中&#xff0c;至少有三个匹配规则定义&#xff1a; 二、rewrite1、rewrite跳转实现&#xff1a;2、rewrite 执行顺序如下&#xff1a;3、rewrite 示例 一、常见的…

B-3:Linux 系统渗透提权

B-3&#xff1a;Linux 系统渗透提权 任务环境说明&#xff1a; 服务器场景&#xff1a;Server2204&#xff08;关闭链接&#xff09; 用户名&#xff1a;hacker 密码&#xff1a;123456 1.使用渗透机对服务器信息收集&#xff0c;并将服务器中 SSH 服务端口号作为 flag 提 …

Java工厂模式(随笔)

前言&#xff1a;Java工厂模式是一种创建型设计模式&#xff0c;它提供了一种将对象创建过程封装到一个单独的类中的方式&#xff0c;这个类就是被称为‘工厂类’&#xff0c;它根据特定的条件来决定应该创建哪个对象&#xff01; 文章目录&#xff1a; 三大工厂模式介绍特殊工…

计算机网络第二章——物理层(上)

提示&#xff1a;男儿何不带吴钩&#xff0c;收取关山五十州 文章目录 2.1.1 物理层基本概念知识引导物理层接口特征 2.1.2 数据通信基础知识数据通信相关术语数据通信系统要考虑的问题三种通信方式串行传输&并行传输同步传输&异步传输 脑图时刻 2.1.3 数据通信基础知识…

Google Play上架aab保姆级教程(纯aab上架/已上架apk转aab上架)

0、上传密钥 & 应用签名密钥 “Google 会使用上传证书验证您的身份&#xff0c;并使用您的应用签名密钥为 APK 签名以进行分发” 以上为官方解释。 2021年8月起&#xff0c;上传google play的应用必须以aab格式&#xff0c;aab的签名流程要比之前apk的复杂一些。需要上传…