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中的事件代理
Nov 06 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
Javascript动画效果(4)
Oct 11 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
May 20 Javascript
深入浅析javascript继承体系
Oct 23 Javascript
vue 自定义全局方法,在组件里面的使用介绍
Feb 28 Javascript
vue2.0+koa2+mongodb实现注册登录
Apr 10 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 Javascript
详解KOA2如何手写中间件(装饰器模式)
Oct 11 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
Dec 07 Javascript
20道JS原理题助你面试一臂之力(必看)
Jul 22 Javascript
Vue快速实现通用表单验证的方法
Feb 24 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函数解决SQL injection
2006/12/09 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
详解JavaScript的变量
2019/04/04 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
python实现文件名批量替换和内容替换
2014/03/20 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
网络安全方面的面试题
2016/01/07 面试题
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
学校捐书倡议书
2015/04/27 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA