JS实现的简单拖拽功能示例


Posted in Javascript onMarch 13, 2017

本文实例讲述了JS实现的简单拖拽功能。分享给大家供大家参考,具体如下:

1、实例代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>js实现拖拽</title>
    <style>
      #water{
        width:400px;
        height:188px;
        background-color: #ff6600;
      }
      #water:hover{
        cursor: pointer;
      }
    </style>
  </head>
  <body>
    <div id="water"></div>
    <script>
      dragInit("water");//调用
      //拖拽初始化
      function dragInit(id){
        var $div = document.getElementById(id);
        var style = {
          position: "absolute",
          left: "0",
          top: "0"
        }
        for(var k in style){
          $div.style[k] = style[k];//设置关键css
        }
        $div.onmousedown = function(e){//鼠标按键按下
          e = e || window.event;
          var x = e.clientX - $div.offsetLeft;//鼠标到左上角的距离信息, 固定不变
          var y = e.clientY - $div.offsetTop;
          document.onmousemove = function(e){//鼠标移动
            e = e || window.event;
            var L = e.clientX - x;
            var T = e.clientY - y;
            var pW = document.documentElement.clientWidth;//页面宽度
            var pH = document.documentElement.clientHeight;
            var divW = $div.offsetWidth;//Dom宽度
            var divH = $div.offsetHeight;
            // 范围限定
            if(L < 0){
              L = 0;
            }
            if(T < 0){
              T = 0;
            }
            if(L > pW - divW){
              L = pW - divW;
            }
            if(T > pH - divH){
              T = pH - divH;
            }
            // 范围限定 end
            $div.style.left = L + "px";
            $div.style.top = T + "px";
          };
          document.onmouseup = function(e){//鼠标按键松开
            document.onmousemove = null;
          };
        };
      }
    </script>
  </body>
</html>

2、运行效果图如下:

JS实现的简单拖拽功能示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用javascript实现画板的代码
Sep 05 Javascript
jQuery.extend 函数详解
Feb 03 Javascript
关于jQuery中.attr()和.prop()的问题探讨
Sep 06 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
Dec 13 Javascript
js星星评分效果
Jul 24 Javascript
js Calender控件使用详解
Jan 05 Javascript
js实现温度计时间样式代码分享
Aug 21 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
Oct 13 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
Oct 25 Javascript
JS中原始值和引用值的储存方式示例详解
Mar 23 Javascript
js调用设备摄像头的方法
Jul 19 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
Mar 28 Javascript
jQuery中layer分页器的使用
Mar 13 #Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 #Javascript
Node.js调试技术总结分享
Mar 12 #Javascript
JavaScript中双符号的运算详解
Mar 12 #Javascript
利用Node.js对文件进行重命名
Mar 12 #Javascript
纯js的右下角弹窗实例
Mar 12 #Javascript
彻底学会Angular.js中的transclusion
Mar 12 #Javascript
You might like
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
基于python中的TCP及UDP(详解)
2017/11/06 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
数据库测试通常都包括哪些方面
2015/11/30 面试题
中专生职业生涯规划书范文
2014/01/10 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
十佳家长事迹材料
2014/08/26 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
pytorch 6 batch_train 批训练操作
2021/05/28 Python
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL