JS+DIV实现拖动效果


Posted in Javascript onFebruary 11, 2020

本文实例为大家分享了JS+DIV实现拖动效果的具体代码,供大家参考,具体内容如下

效果图

JS+DIV实现拖动效果

思路

JS+DIV实现拖动效果

代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="main" style="background-color: aqua;width: 100px;height: 100px;position: absolute;left: 50px;top: 50px">
  <div id="title" style="height: 10px;width:100%;background-color: antiquewhite;position: absolute;left: 0px;top: 0px"></div>
  <div class="box"></div>
</div>
<script>

  var startx;
  var starty;
  var startLeft;
  var startTop;
  var titleDiv=document.getElementById("title");
  var mainDiv=document.getElementById("main");
  var isDown=false;
//  鼠标按下
  function movedown(e){
    e=e?e:window.event;
    isDown=true;
    startx=e.clientX;
    starty=e.clientY;
    startLeft=parseInt(mainDiv.style.left);
    startTop=parseInt(mainDiv.style.top);
  }
//  鼠标移动
  function move(e){
    e=e?e:window.event;
    if(isDown) {
      mainDiv.style.left = e.clientX - (startx - startLeft)+"px";
      mainDiv.style.top = e.clientY - (starty - startTop)+"px";
    }
  }
//  鼠标松开
  function moveup(){
    isDown=false;
  }
  titleDiv.οnmοusedοwn=movedown;
  titleDiv.οnmοusemοve=move;
  titleDiv.οnmοuseup=moveup;
</script>
</body>
</html>

优化(封装,以及解决拖动问题(事件捕获))

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="main" style="background-color: aqua;width: 100px;height: 100px;position: absolute;left: 50px;top: 50px">
  <div id="title"
     style="height: 10px;width:100%;background-color: antiquewhite;position: absolute;left: 0px;top: 0px"></div>
  <div class="box"></div>
</div>
<script>


  function Mover(title) {
    this.obj = title;
    this.startx = 0;
    this.starty;
    this.startLeft;
    this.startTop;
    this.mainDiv = title.parentNode;
    var that = this;
    this.isDown = false;
    this.movedown = function (e) {
      e = e ? e : window.event;
      if (!window.captureEvents) {
        this.setCapture();
      } //事件捕获仅支持ie
//      函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,
//      所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。
//      如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。
//      非ie浏览器 需要在document上设置事件
      that.isDown = true;
      that.startx = e.clientX;
      that.starty = e.clientY;

      that.startLeft = parseInt(that.mainDiv.style.left);
      that.startTop = parseInt(that.mainDiv.style.top);
    }
    this.move = function (e) {
      e = e ? e : window.event;
      if (that.isDown) {
        that.mainDiv.style.left = e.clientX - (that.startx - that.startLeft) + "px";
        that.mainDiv.style.top = e.clientY - (that.starty - that.startTop) + "px";
      }
    }
    this.moveup = function () {
      that.isDown = false;
      if (!window.captureEvents) {
        this.releaseCapture();
      } //事件捕获仅支持ie
    }
    this.obj.onmousedown = this.movedown;
    this.obj.onmousemove = this.move;
    this.obj.onmouseup = this.moveup;

    //非ie浏览器
    document.addEventListener("mousemove", this.move, true);
  }
  var mover = new Mover(document.getElementById("title"));


  //写两个是为了解决 ie 和非ie 浏览器关于事件捕获 的兼容性问题


</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery select的操作实现代码
May 06 Javascript
javascript实现的图片切割多块效果实例
May 07 Javascript
JavaScript数据类型判定的总结笔记
Jul 31 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
Oct 21 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
Aug 29 Javascript
wap手机端解决返回上一页的js实例
Dec 08 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
Nov 05 Javascript
mocha的时序规则讲解
Feb 16 Javascript
js实现简单选项卡制作
Aug 05 Javascript
微信小程序调用后台service教程详解
Nov 06 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
Feb 11 #Javascript
原生js拖拽实现图形伸缩效果
Feb 10 #Javascript
js实现单元格拖拽效果
Feb 10 #Javascript
详解Vue template 如何支持多个根结点
Feb 10 #Javascript
JavaScript canvas动画实现时钟效果
Feb 10 #Javascript
JavaScript canvas仿代码流瀑布
Feb 10 #Javascript
Vue数字输入框组件使用方法详解
Feb 10 #Javascript
You might like
第十一节 重载 [11]
2006/10/09 PHP
PHP系统流量分析的程序
2006/10/09 PHP
PHP处理会话函数大总结
2015/08/05 PHP
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
使用Ajax与服务器(JSON)通信实例
2016/11/04 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
python的dict,set,list,tuple应用详解
2014/07/24 Python
python实现字符串和日期相互转换的方法
2015/05/13 Python
python实现的简单抽奖系统实例
2015/05/22 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
python判断数字是否是超级素数幂
2018/09/27 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
党校学习自我鉴定
2014/02/24 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
门卫岗位职责
2015/02/09 职场文书
毕业设计论文致谢词
2015/05/14 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
太空授课观后感
2015/06/17 职场文书
青年志愿者活动感想
2015/08/07 职场文书
部门主管竞聘书
2015/09/15 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
利用Python实现Picgo图床工具
2021/11/23 Python