目录

一:案例鼠标拖拽小方块,小方格跟着移动(桌面图标拖动)

二:取消拖拽文字的行为

1.没取消前:

2.取消后:

三:鼠标拖拽案例优化:

如果有好多个小盒子要做拖拽,一个一个加上面的1,2,3步太麻烦,升级版如下:

想法:①把所有onmousedown/onmousemove/onmouseup修改为addEventListener()

②希望页面中的元素只要含有drag这个class的就可以被拖拽


一:案例鼠标拖拽小方块,小方格跟着移动(桌面图标拖动)

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#box {width: 100px;height: 100px;background-color: pink;position: absolute;}#a {width: 100px;height: 100px;background-color: black;position: absolute;top: 100px;left: 100px;}</style>
</head><body><div id="box"></div> <!-- 第二个盒子测试第三步的鼠标松开时应该给document添加事件,而不是box --><div id="a"></div><script>/* 通过鼠标,拖拽box移动1.当鼠标在box1上按下时,功能开始 (mousedown)2.鼠标移动,box跟随鼠标一起移动  (mousemove)3.鼠标松开,功能结束,           (mouseup)box1固定在当前位置不再跟随鼠标移动*/let box = document.getElementById('box')//1.当鼠标在box1上按下时,功能开始(mousedown)box.onmousedown = function (event2) {let left = event2.clientX - box.offsetLeft;let top = event2.clientY - box.offsetTop;//2.鼠标移动,box跟随鼠标一起移动(mousemove)document.onmousemove = function (event) {box.style.left = event.clientX - left + 'px'box.style.top = event.clientY - top + 'px'}//3.鼠标松开,功能结束(mouseup) //第二步的事件取消了,小方块就不会移动了document.onmouseup = function () {document.onmousemove = null;}}</script>
</body></html>

二:取消拖拽文字的行为

就是取消文字拖拽...

1.没取消前:

2.取消后:

三:鼠标拖拽案例优化:

如果有好多个小盒子要做拖拽,一个一个加上面的1,2,3步太麻烦,升级版如下:

想法:①把所有onmousedown/onmousemove/onmouseup修改为addEventListener()

②希望页面中的元素只要含有drag这个class的就可以被拖拽

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#box1,#box2,#box3 {width: 100px;height: 100px;background-color: pink;}/*添加拖动事件的盒子添加定位来移动  */.drag {position: absolute;}#a {width: 100px;height: 100px;background-color: black;position: absolute;top: 100px;left: 100px;}#box2 {top: 200px;background-color: rgb(109, 6, 140);}#box3 {left: 200px;background-color: rgb(179, 233, 31);}</style>
</head><body>取消文字拖拽<div id="box1" class="drag"></div> <!-- 第二个盒子测试第三步的鼠标松开时应该给document添加事件,而不是box --><div id="a"></div><!-- 我们都需要设置拖拽效果 --><div id="box2" class="drag"></div><div id="box3" class="drag"></div><script>/* 通过鼠标,拖拽box移动1.当鼠标在box1上按下时,功能开始 (mousedown)2.鼠标移动,box跟随鼠标一起移动  (mousemove)3.鼠标松开,功能结束,           (mouseup)box1固定在当前位置不再跟随鼠标移动*/// 二:方别的拖拽设置/*如果有好多个小盒子要做拖拽,一个一个加上面的1,2,3步太麻烦,升级版如下:想法:①把所有onmousedown/onmousemove/onmouseup修改为addEventListener()②希望页面中的元素只要含有drag这个class的就可以被拖拽*/(function () {let drags = null;let left;let top;let box1 = document.getElementById('box1')let box2 = document.getElementById('box2')let box3 = document.getElementById('box3')//1.当鼠标在box1上按下时,功能开始(mousedown)document.addEventListener('mousedown', function (event1) {if (event.target.classList.contains('drag')) {event.preventDefault();drags = event.target;left = event1.clientX - drags.offsetLeft;top = event1.clientY - drags.offsetTop;}})//2.鼠标移动,box跟随鼠标一起移动(mousemove)document.addEventListener('mousemove', function (event2) {if (drags) {drags.style.left = event2.clientX - left + 'px';drags.style.top = event2.clientY - top + 'px';}})//3.鼠标松开,功能结束(mouseup)//第二步的事件取消了,小方块就不会移动了document.addEventListener('mouseup', function () {drags = null})})()</script>
</body></html>

13.鼠标拖拽:案例:鼠标拖拽小方块,小方格跟着移动(桌面图标拖动)相关推荐

  1. 歌词同步滚动,比市面的大多数效果都好,在平滑滚动的前提下加上了鼠标滚轮滚动以及上下拖拽功能

    歌词滚动核心原理 解析歌词文件,转换成JSON 对象,java 代码放在最下面 将歌词时间部分存到数组,字符部分放到 HTML 标签里面,通过Jquery 选中所有歌词 $li ,拿到一个类似于数组的 ...

  2. js实现图片的放大缩小(鼠标长按拖拽、鼠标滚轮控制放大缩小)

    系列文章目录 文章目录 系列文章目录 背景与效果图 1.背景如下(功能图): 2.效果图如下: 拖拽后的效果 缩放的效果 放大的效果 一.功能:支持鼠标长按拖拽 1.鼠标事件: 2.拖拽功能流程 3. ...

  3. span标签的鼠标滑入提示_彻底搞懂拖拽——基于鼠标事件的拖拽以及基于HTML5 API的拖拽...

    一.基于鼠标事件的拖拽 原理--onmousedown.onmousemove.onmouseup onmousedown 该事件会在鼠标按键被按下时触发 支持该事件的HTML标签: html < ...

  4. 127:vue+openlayers 使用CRTL控制map拖拽和鼠标滚动 (示例代码)

    第127个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayers项目中设置控制条件,使用CRTL控制map拖拽和鼠标滚动. 直接复制下面的 vue+openlayers源代码,操作2 ...

  5. js 拖拽元素 鼠标速度过快元素跟不上

    自己写一个拖拽元素,使用js拖拽元素时,鼠标速度过快时 元素跟不上鼠标 参考了网上的文章 ,里面对比了绑定到 body和document上的不同点js 拖拽元素 鼠标速度过快问题 明白过来是因为速度过 ...

  6. JS实现拖拽并解决拖拽过程中鼠标抬起仍旧处于拖拽状态问题

    需求分析 实现一个任意元素可以被鼠标任意拖拽:鼠标在这个元素上按下,开始拖拽,元素跟着鼠标一起移动,当鼠标松开时,被拖拽的元素固定在当前位置上.如图所示(底下灰色的轨迹不知道为啥录制动图就出现了,实际 ...

  7. JS拖拽不流畅、鼠标滑动太快导致拖拽物脱离鼠标问题

    ###拖拽的实现原理:通过事件mousedown(事件的触发) →mousemove(事件的控制) →mouseup(事件的清除),拖拽的过程就是mousemove阶段: ###问题产生的原因:因为m ...

  8. Python记录鼠标的点击与拖拽时间并在文本文档中保存记录

    网上看到很多 python 关于记录鼠标操作轨迹的方法,很少提到关于时间的记录. 因为在写一个关于游戏的脚本,为了尽可能地还原真人鼠标操作防止封号,鼠标的点击的时间间隔是其中尤为重要的一点.代码监听了 ...

  9. html5移动拖拽,H5鼠标拖拽移动

    刚开始学H5的js,所以就全用js做的,只是为了锻炼自己的js基础 以下就是我整个H5的代码 var box = document.createElement('div'); box.style.wi ...

最新文章

  1. 开发日记-20190914 关键词 汇编语言王爽版 第五章
  2. npm未能加载Visual C++组件,解决办法win10
  3. MySQL第5天:MySQL的架构介绍之主要配置文件
  4. mac python3 安装mysqlclient
  5. Python 学习笔记 (8)—— sys模块
  6. 【nyoj - 890】 分东西 (水题 二进制)
  7. java泛型概念与通配符含义初探
  8. java list 差集_Java基础之集合框架
  9. 人有多大懒,才有多大闲 (评论『卓有成效的程序员』)
  10. 用javascript获取屏幕高度和宽度等信息
  11. 图像处理——空间域和频率域部分图像增强学习
  12. Linux中查看文件夹大小的命令
  13. 卸载手机自带的系统软件
  14. UEFI.源码分析.DXE阶段的执行
  15. 20189200余超 2018-2019-2 移动平台应用开发实践第九周作业
  16. kong安装启动问题
  17. 浏览器中Vimium 插件快捷键
  18. UART的break信号
  19. 学习Java的学习顺序
  20. 对接企业微信上架第三方应用_JAVA

热门文章

  1. Dropbox与Git管理代码
  2. 企业SaaS模式的优缺点
  3. 使用statsmodels logit函数,出现MissingDataError: exog contains inf or nans
  4. java实现潜艇大战(期末实训)
  5. 什么是Qi2?新无线充电标准解释
  6. 【WINDOWS / DOS 批处理】if命令中的比较运算符
  7. 如何查看光驱硬盘托架的尺寸
  8. MuseScore入门教程(四、保存与发布)
  9. WorksPace一款简化修改IP繁琐重复性工作的高效工具
  10. 信息与通信的数学基础——第十章 数学物理方程