javascript --- 原生的拖拽功能实现

准备一个方块:

<style>.drag{background-color:#aaf;position:absolute;}
</style>
<div class="drag" style="width:100px;height:100px;top:0;left:0"></div>

在这里插入图片描述
监听鼠标的按住事件:

let dragDiv = document.getElementsByClassName("drag")[0];
let mousedown = (event)=>{alert("按住了");
}dragDiv.addEventListener("mousedown", mousedown,false);

在这里插入图片描述
按住事件(具体):

// 首先鼠标得变成一个pointer状态,
// 然后监听移动事件,让方块跟着鼠标动(style.left = 鼠标距离左侧得距离(event.clientX) - 鼠标与方块左边距的距离(dragDiv.style.left))
// 重写mousedown.
let mousedown = (event) => {let relaLeft = event.clientX- parseInt(dragDiv.style.left);let relaTop = event.clientY- parseInt(dragDiv.style.top);// 点击时候的样式dragDiv.style.cursor = "pointer";dragDiv.style.border = "1px solid red";// 监听鼠标移动 (注意是监听document)document.onmousemove = (event) => {// 小方格跟着鼠标移动dragDiv.style.left = event.clientX - relaLeft + 'px' ;dragDiv.style.top = event.clientY - relaTop + 'px' ;// 小方格的边界if( parseInt(dragDiv.style.left) <=0) {dragDiv.style.left = 0}if( parseInt(dragDiv.style.top) <= 0 ){ dragDiv.style.top = 0}if( parseInt(dragDiv.style.left) >= window.innerWidth - parseInt(dragDiv.style.width)) {dragDiv.style.left = window.innerWidth - parseInt(dragDiv.style.width) + 'px';}if( parseInt(dragDiv.style.top) >= window.innerHeight - parseInt(dragDiv.style.height)) {dragDiv.style.top = window.innerHeight - parseInt(dragDiv.style.height) + 'px';}}document.onmouseup = () => {dragDiv.style.border = "";document.onmouseup = null;document.onmousemove = null;}
}

参考 原生js实现拖拽功能

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

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

相关文章

web安全学习-验证机制存在的问题

验证机制是应用程序防御恶意攻击的中心机制。它处于防御未授权的最前沿&#xff0c;如果用户能够突破那些防御&#xff0c;他们通常能够控制应用程序的全部功能&#xff0c;自由访问其中的数据。缺乏安全稳定的验证机制&#xff0c;其他核心安全机制&#xff08;如回话管理和访…

ES5-拓展 原型链、继承、类

Symbol不是构造函数 Object不是原型是实例对象 他的构造器继承原型上的构造器 undefined是未定义 null是空指针 一、原型链 1. 函数也是实例对象 2. 构造函数Object是由Function构造出来的 3. 有一种说法是&#xff0c;原型链的终点是null Object.prototype.__proto__指向nul…

spring boot 加载application配置文件

这就要注意了 转载于:https://www.cnblogs.com/huochaihe/p/9397849.html

javascript --- 防抖与节流

先做一个监听鼠标移动的base: <style>#content{height:150px;width:200px;text-align:center;color:#fff;background-color:#ccc;font-size: 70px;} </style> <div id"content"></div> <script>let content document.getElementById…

DOM-9 【实战】模块化开发Todolist(面向过程)

模块化分类 按dom结构划分按功能划分&#xff08;组件化开发&#xff09; 模块与模块之间可以相互依赖&#xff0c;但互不影响 模块&#xff1a;IIFE赋值给一个变量&#xff0c;当引入模块时&#xff0c;IIFE会立即执行 单标签闭合才符合W3C规范display、position放在上面css是…

DOM-10 面向对象开发Todolist

将插件配置项写在html的div里&#xff0c;data-config自定义属性&#xff0c;外单引号&#xff0c;内双引号&#xff08;内部是JSON字符串&#xff09; <div class"todo-wrap" data-config{"plusBtn":"j-show-input","inputArea":…

Ansible基础概述

一、Ansible简介 Ansible基于Python语言实现&#xff0c;由paramiko和PyYAML两个关键模块构建。Ansible的编排引擎可以出色地完成配置管理&#xff0c;流程控制&#xff0c;资源部署等多方面工作。Ansible公司负责Ansible开源软件的维护&#xff0c;管理。一般软件的更新大概每…

DOM-12 【模拟桌面待讲评】鼠标事件深入、点击与拖拽分离、双击事件

鼠标事件深入 点击事件 mousedown mouseupposition: absolute 会将内联元素变为块级&#xff08;比如a&#xff09;a标签的协议限定符&#xff08;伪协议&#xff0c;防止跳转和刷新&#xff0c;让href不生效&#xff09;&#xff0c;javascript:;&#xff0c;可以让点击和拖…

scrapy的操作

转载于:https://www.cnblogs.com/mengqingjian/p/8337772.html

Devexpress xaf针对某个用户登录后在面板中设置导航无效的解决方法

Devexpress xaf框架生成的项目默认情况下导航栏是显示在左侧&#xff0c;有时候我们用某个账户登录后&#xff0c;发现导航栏无法显示在左侧&#xff0c;操作十分不方便。我们可以去数据库删除当前登录用户的自定义布局 解决方法如下: 1、查询PermissionPolicyUser用户表&#…

DOM-13 【实战】输入及状态改变事件、京东搜索框

模块化 IIFE window.onload function () {init() }function init() {keySearch()others() // 多人开发的模块 }var keySearch (function () {var searchKw document.getElementById(J_search_kw),autoKw document.getElementById(J_autoKw),recomKw JSON.parse(document…

吴恩达“机器学习”——学习笔记二

定义一些名词 欠拟合&#xff08;underfitting&#xff09;&#xff1a;数据中的某些成分未被捕获到&#xff0c;比如拟合结果是二次函数&#xff0c;结果才只拟合出了一次函数。 过拟合&#xff08;overfitting&#xff09;&#xff1a;使用过量的特征集合&#xff0c;使模型过…

Http 概述

Http是可靠的数据传输协议。资源Web服务器是Web资源&#xff08;resource&#xff09;的宿主。包括静态文件以及动态的内容。 媒体类型Http对每种需要由web传输的对象都打上了名为MIME类型的数据格式标签。主要的mime类型: text/htmltext/plainimage/jpegimage/gifvideo/quickt…

DOM-14 【实战】解决事件代理和鼠标移动事件的窘态

鼠标的滑入滑出 案例 事件现象应用场景mouseover/mouseout绑定在父元素时&#xff0c;对她的所有子元素&#xff0c;事件都生效dom结构简单mouseenter/mouseleave只对她绑定的元素有效&#xff0c;对window绑定无效dom结构简单mousemove长触发dom结构复杂// 绑定在父元素上 /…

javascript --- 再读作用域和闭包

执行环境: // 定义了变量或函数有权访问的其他数据,决定了它们各自的行为 // 每个执行环境都有一个与之关联的变量对象 // 执行环境中定义的所有变量和函数都保存在这个变量中执行环境与函数: // 每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个…

DOM-15/16【实战】鼠标行为预测技术

鼠标预测行为动作复杂&#xff0c;使用事件代理得不偿失&#xff0c;在数量有限的情况下&#xff0c;使用循环绑定更好用户从menu斜着向右下角滑入时&#xff0c;可能是进入main&#xff0c;也可能是要选择子菜单&#xff0c;在判断前先做延迟如何判断用户进入main的意图&#…

ES6-1 ES6版本过渡历史

一 历史 HTML HTML 1, HTML 2, HTML 3 1991-1997 IETF(the Internet Engineering Task Force) 国际互联网工程任务组1997.1 HTML3.2 W3C JavaScript 1995 liveScript(后改名为JavaScript1996年改名)1996 javascript 1.0 1.1;1997 Jscript1997.6 ECMAScript 1.01998.6 ECMAS…

Django-model进阶

知识预览 QuerySet中介模型查询优化extra整体插入回到顶部QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 。它等同于SQL 的LIMIT 和OFFSET 子句。 1>>> Entry.objects.all()[:5] # (LIMIT 5)>>> Entry.objects.all()[5:10] # (OFFSE…

ES6-2 块级作用域与嵌套、let、暂行性死区

注意&#xff0c;写在开头 function test(x 1) {var x // 不报错console.log(x) } function test1(x 1) {let x 10 // 报错console.log(x) }let的变量名不可以和参数中的名称相同。而var并不限制&#xff0c;说白了就是希望你规范使用变量名。 形参原则上数组函数内部的临…

常用的操作系统知识

为什么要有操作系统 现代计算机系统是由一个或者多个处理器&#xff0c;主存&#xff0c;磁盘&#xff0c;打印机&#xff0c;键盘&#xff0c;鼠标显示器&#xff0c;网络接口以及各种其他输入&#xff0c;输出设备组成的复杂系统&#xff0c;每位程序员不可能掌握所有系统实现…