JavaScript简单拖拽效果(1)


Posted in Javascript onMay 17, 2017

拖拽在前端开发中是很常见的功能,也是基本功之一,本文是不限制范围的拖拽也就是最简单的拖拽,鼠标按下对象,拖拽,松开停止!
1,onmousedown事件
2,onmousemove事件
3,onmouseup事件

因为在按下时拖动,所以onmousemove事件在down后才注册,up事件是用来解绑事件,消除事件!

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>简单拖拽</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
    }
    #div1 {
      width: 100px;
      height: 100px;
      background: orange;
      position: absolute;
    }
  </style>
</head>
<body style="height: 500000px;">
  <div id="div1"></div>

  <script type="text/javascript">
    function getStyle(obj, attr) {
      if (obj.currentStyle) {
        return obj.currentStyle[attr];
      } else {
        return getComputedStyle(obj, null)[attr];
      }
    }
    var oDiv = document.getElementById('div1');
    oDiv.onmousedown = function(ev) {
      var oEvent = ev || event;
      // var disX = oEvent.clientX - oDiv.offsetLeft;
      // var disY = oEvent.clientY - oDiv.offsetTop;

      var disX = oEvent.clientX - parseInt(getStyle(oDiv, 'left'));
      var disY = oEvent.clientY - parseInt(getStyle(oDiv, 'top'));

      document.onmousemove = function(ev) {
        var oEvent = ev || event;
        oDiv.style.left = oEvent.clientX - disX + 'px';
        oDiv.style.top = oEvent.clientY - disY + 'px';
      };
      document.onmouseup = function() {
        document.onmousemove = null;
        document.onmouseup = null;
      };
      return false;
    };
  </script>
</body>
</html>

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

Javascript 相关文章推荐
javascript 子窗体父窗体相互传值方法
May 31 Javascript
javascript 闭包疑问
Dec 30 Javascript
JQuery实现倒计时按钮的实现代码
Mar 23 Javascript
javascript学习笔记(四) Number 数字类型
Jun 19 Javascript
jQuery中filter()和find()的区别深入了解
Sep 25 Javascript
使用javascript为网页增加夜间模式
Jan 26 Javascript
简单的JavaScript互斥锁分享
Feb 02 Javascript
node+express制作爬虫教程
Nov 11 Javascript
Vue制作Todo List网页
Apr 26 Javascript
vue中实现图片和文件上传的示例代码
Mar 16 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 Javascript
原生js实现自定义滚动条组件
Jan 20 Javascript
node.js连接MongoDB数据库的2种方法教程
May 17 #Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
May 17 #Javascript
Vue.js鼠标悬浮更换图片功能
May 17 #Javascript
12个非常有用的JavaScript技巧
May 17 #Javascript
Javascript中的async awai的用法
May 17 #Javascript
ES6入门教程之Iterator与for...of循环详解
May 17 #Javascript
angular.fromJson与toJson方法用法示例
May 17 #Javascript
You might like
浅析PHP数据导出知识点
2018/02/17 PHP
学习ExtJS Column布局
2009/10/08 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
python提示No module named images的解决方法
2014/09/29 Python
bpython 功能强大的Python shell
2016/02/16 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
用matplotlib画等高线图详解
2017/12/14 Python
python如何定义带参数的装饰器
2018/03/20 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
通俗讲解python 装饰器
2020/09/07 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
init进程的作用
2015/08/20 面试题
爱护公共设施演讲稿
2014/09/13 职场文书
群众路线教育实践活动实施方案
2014/10/31 职场文书
2014年教研员工作总结
2014/12/23 职场文书
长城导游词
2015/01/30 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书