日常开发小汇总(6)元素跟随鼠标移动(在视口下移动)

news2025/1/9 2:05:44

在这里插入图片描述

<div class="mark">
        <h1>title</h1>
        <div>
           <p>title 鼠标移动 盒子整体移动</p>
           <p>test</p>
           <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Modi, porro.</p>
        </div>

    </div>
 const mark = document.querySelector(".mark")
        const title = document.querySelector("h1")
        title.onmousedown = function(e){
            //鼠标按下时,鼠标起始位置
            let x = e.clientX;
            let y = e.clientY;
            let markrect = mark.getBoundingClientRect();
            console.log(markrect)

            //获取视口的宽高
            let clientW = document.documentElement.clientWidth;
            let clientH = document.documentElement.clientHeight;
            //获取mark元素的宽高
            let markW = mark.offsetWidth;
            let markH = mark.offsetHeight;
            //获取水平\垂直移动位置的最大值
            let maxLeft = clientW - markW;
            let maxTop = clientH - markH;
            console.log(markW,markH)
            console.log(maxLeft,maxTop)
            window.onmousemove = function(e){
                //鼠标起始位与移动后位置之间的距离
                let disX = e.clientX - x;
                let disY = e.clientY - y;
                //元素的原始位置+ 鼠标移动距离 即 元素的现在位置
                let left = markrect.left + disX;
                let top = markrect.top + disY
                if(left < 0){
                    left = 0;
                }else if(left >maxLeft){
                    left = maxLeft
                }
                 if(top < 0){
                    top = 0;
                }else if(top >maxTop){
                    top = maxTop
                }
                mark.style.top =  top + "px";
                mark.style.left =  left + "px";

            }
            window.onmouseup = function(){
                console.log("up")
                window.onmousemove = null;
                window.onmouseup = null;
            }
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1002945.html

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

相关文章

一文读懂:苹果手机怎么录屏?

“刚买的苹果14&#xff0c;最近需要用来录屏&#xff0c;找了很久都没找到&#xff0c;朋友说苹果手机没有录屏功能&#xff0c;可是我半信半疑&#xff0c;花了这么多钱买的&#xff0c;怎么可能没有录屏功能呢&#xff0c;有人知道苹果手机怎么录屏吗&#xff1f;” 苹果手…

Swift如何使用Vision来识别获取图片中的文字(OCR),通过SwiftUI视图和终端命令行,以及一系列注意事项

在过去的一年里&#xff0c;我发现苹果系统中的“文字搜图片”功能非常好用&#xff0c;这个功能不光 iPhone/iPad&#xff0c;Mac 也有&#xff0c;找一些图片真的很好用。但是遇到了一个问题&#xff1a;这个功能需要一段时间才能找到新的图片&#xff0c;而且没法手动刷新&a…

通信原理板块——信道的数学模型

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 1、调制信道和编码信道 调制信道适…

学习笔记|回顾(1-12节课)|应用模块化的编程|分时复用|STC32G单片机视频开发教程(冲哥)|阶段小结:应用模块化的编程(下)

文章目录 搜索功能寻址变量bdataTips:missing declaration specifiers错误的解决分时复用的简单应用 二、按键处理思路分析原有程序实现的功能&#xff1a;需求分析&#xff1a;定义功能码&#xff0c;功能定义为&#xff1a; key的取值示例 三、按键处理四、定时器利用time0实…

【数据库】Navicate运行数据区sql文件 1046 no database selected

文章目录 前言一、现象二、解决 前言 要通过Navicat导入数据库文件&#xff0c;但是不成功报错1046 no database selected 一、现象 选中已经建立的连接&#xff0c;右键运行sql文件&#xff0c;报错 二、解决 1、先在建立的localhost中右键建立和要导入数据库同名的数据…

ipad手写笔什么牌子好?apple pencil二代平替笔推荐

近年来&#xff0c;电容笔越来越受到大家的青睐&#xff0c;已然成为人们提高生产效率的数码产品之一。然而&#xff0c;市面上的电容笔大多质量都参差不齐&#xff0c;很多人也不知道哪个品牌的电容笔比较好。针对这个问题&#xff0c;我来给大家分享几款电容笔&#xff0c;都…

斐波那契堆——怎么发明一种非常聪明的数据结构——学习笔记

我是目录 0. 前言1. Fibonacci Heap介绍1.1 简单回顾堆和优先队列1.2 二项树1.3 二项堆 2. 那怎么推导出Fibonacci Heap&#xff1f;2.1 实现GetMin2.2 实现Insert2.3 实现ExtractMin2.4 实现DecreaseKey2.5 关键部分 3. 那么&#xff0c;和斐波那契数列有什么关系&#xff1f;…

【nvm版本】控制node版本

使用nvm切换node版本 nvm安装开始安装选择安装路径选择node安装位置点击完成即可测试是否安装成功查询可下载的node版本如果没有node版本&#xff0c;就安装一下镜像地址 nvm安装 nvm安装路径 开始安装 选择安装路径 选择node安装位置 点击完成即可 测试是否安装成功 cmd中…

UI库DHTMLX Suite v8.2发布全新表单组件,让Web表单实现高度可定制!

DHTMLX Suite v8.2日前已正式发布&#xff0c;此版本的核心是DHTMLX Form&#xff0c;这个小部件接收了4个备受期待的新控件&#xff0c;如Fieldset、Avatar、Toggle和ToggleGroup。官方技术团队还为Grid和TreeGrid小部件中的页眉/页脚工具提示提供了一系列新的配置选项等。 在…

Scrum敏捷开发流程及关键环节

​Scrum是一种敏捷开发流程&#xff0c;它旨在使软件开发更加高效和灵活。Scrum将软件开发过程分为多个短期、可重复的阶段&#xff0c;称为“Sprint”。每个Sprint通常为两周&#xff0c;旨在完成一部分开发任务。 在Scrum中&#xff0c;有一个明确的角色分工&#xff1a; 产…

一个好玩的浏览器插件

背景 最近抽空开发了一个有意思的浏览器插件。背景是我们在开发过程中有时需要做一些测试验证&#xff0c;需要修改请求头字段和响应头字段的内容&#xff0c;有时需要在页面做测试&#xff0c;反复请求同一个接口&#xff0c;并修改一些字段。 如果此时使用nginx做代理转发再…

HashMap、HashTable、CurrentHashMap对比

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;Java、集合、Map、CurrentHashMap☀️每日 一言&#xff1a;坚持自己的风格&#xff0c;面对未知的一切&#xff01; 一、HashMap、HashTable、CurrentHashMap对比 1.1 CurrentHashMap和HashMap…

9.多级缓存、JVM进程缓存、Lua语法

多级缓存 文章目录 多级缓存一、多级缓存介绍1.1 传统缓存的问题1.2 多级缓存方案 二、JVM进程缓存2.1 案例准备2.1.1 导入SQL2.1.2 导入item-service项目2.1.3 导入商品查询页面 2.2 初始 Caffeine2.2.1 基本用法 2.3 实现进程缓存 三、Lua语法3.1 初识Lua3.2 变量和循环3.2.1…

这篇文章是用AI大模型自动生成的

昨天用豆包AI大模型尝试生成了一段关于&#xff1a;企业转型、企业转型的要点、企业转型成功的标志&#xff0c;这样的文字。我又加了点自己的思考。 &#xff08;1&#xff09;企业转型的原因 企业转型的原因有很多&#xff0c;以下是一些常见的原因&#xff1a; 1. 市场变化&…

针对电子企业的WMS仓储管理系统解决方案

随着全球电子行业的快速发展&#xff0c;电子企业对于仓储管理的需求和挑战也日益增长。WMS仓储管理系统作为电子企业的核心管理工具&#xff0c;需要满足高效率、低成本、高灵活性以及精确控制库存等需求。本文将为电子企业提供一种针对WMS仓储管理系统的解决方案。 一、WMS仓…

Eclipse使用SFTP方式远程连接

安装插件 首先需要安装远程系统连接插件&#xff0c;安装方式可参考&#xff1a; Eclipse安装FTP连接工具_哭哭啼的博客-CSDN博客在过滤器字段中,键入"remote".选择Mobile and Device Development&#xff0c;并选择。找到Remote System Explorer->Connection。…

Outlook邮箱如何设置自动回复

很多小伙伴在刚开始使用Outlook邮箱的时候&#xff0c;不是很清楚Outlook邮箱如何设置自动回复&#xff0c;这里小编就给大家详细介绍一下Outlook邮箱设置自动回复的方法&#xff0c;有需要的小伙伴可以来看一看。 Outlook邮箱设置自动回复的方法&#xff1a; 1、打开软件&am…

ARM-M0内核MCU,内置24bit ADC,采样率4KSPS,传感器、电子秤、体脂秤专用,国产

ARM-M0内核MCU 内置24bit ADC &#xff0c;采样率4KSPS flash 64KB&#xff0c;SRAM 32KB 适用于传感器&#xff0c;电子秤&#xff0c;体脂秤等等

QML android 采集手机传感器数据 并通过udp 发送

利用 qt 开发 安卓 app &#xff0c;采集手机传感器数据 并通过udp 发送 #ifndef UDPLINK_H #define UDPLINK_H#include <QObject> #include <QUdpSocket> #include <QHostAddress>class UdpLink : public QObject {Q_OBJECT public:explicit UdpLink(QObjec…

Win10无法访问你可能没有权限使用网络资源怎么解决

当我们使用Win10电脑打开文件时&#xff0c;弹出提示无法访问你可能没有权限使用网络资源&#xff0c;这是怎么回事&#xff0c;遇到这种问题应该怎么解决呢&#xff0c;下面小编就给大家详细介绍一下Win10无法访问你可能没有权限使用网络资源的解决方法&#xff0c;有需要的小…