原生js实现自由拖拽弹窗代码demo


Posted in Javascript onJune 29, 2016

本文为大家分享了原生弹窗拖拽代码demo,供大家参考,具体内容如下

效果图:

原生js实现自由拖拽弹窗代码demo

实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>弹窗拖拽</title>
  <style>
    *{margin:0;padding:0;}
    .box{position: absolute;width: 400px;height: 300px;top:100px;left:100px;border:1px solid #001c67;background: #}
    .move{position: absolute;width: 100px;height: 100px;top:100px;left:150px;border:1px solid #000;}
    .move:hover{cursor: move;}
    .close{position: absolute;width: 30px;height: 30px;top:0px;right:0px;background:red;text-align: center;line-height: 30px;}
  </style>
  <script>
    window.onload=function(){
      var oMove=document.getElementById('move');
      // 拖曳
      oMove.onmousedown=fnDown;
      // 关闭
      var oClose=document.getElementById('close');
      oClose.onclick=function(){
       document.getElementById('box').style.display='none';
      }
    }
    function fnDown(event){
      event = event || window.event;
      var oDrag=document.getElementById('box'),
        // 光标按下时光标和面板之间的距离
        disX=event.clientX-oDrag.offsetLeft,
        disY=event.clientY-oDrag.offsetTop;
      // 移动
      document.onmousemove=function(event){
        event = event || window.event;
        var l=event.clientX-disX,
          t=event.clientY-disY,
          // 最大left,top值
          leftMax=(document.documentElement.clientWidth || document.body.clientWidth)-oDrag.offsetWidth,
          topMax=(document.documentElement.clientHeight || document.body.clientHeight)-oDrag.offsetHeight;
        if(l<0) l=0;
        if(l>leftMax) l=leftMax;
        if(t<0) t=0;
        if(t>topMax) t=topMax;
        oDrag.style.left=l+'px';
        oDrag.style.top=t+'px';
      }
      // 释放鼠标
      document.onmouseup=function(){
        document.onmousemove=null;
        document.onmouseup=null;
      }
    }
  </script>
</head>
<body>
  <div class="box" id="box">
    <div class="move" id="move">拖拽区域</div>
    <div class="close" id="close">X</div>
  </div>
</body>
</html>

主要注意几点
 1.event,IE兼容问题 
 2.点击鼠标时要先判断鼠标与面板之间的距离
 3.要判断弹窗与浏览器整个区域的距离,不能让弹窗跑出浏览器外的区域 
 4.松开鼠标要解除事件绑定,不然会有bug

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

Javascript 相关文章推荐
将HTML自动转为JS代码
Jun 26 Javascript
设置下载不需要倒计时cookie(倒计时代码)
Nov 19 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
Jan 17 Javascript
用jQuery获取IE9下拉框默认值问题探讨
Jul 22 Javascript
基于JavaScript实现动态创建表格和增加表格行数
Dec 20 Javascript
jQuery+ajax+asp.net获取Json值的方法
Jun 08 Javascript
微信小程序 保留小数(toFixed)详细介绍
Nov 16 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
Jan 13 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
Jan 21 Javascript
基于webpack 实用配置方法总结
Sep 28 Javascript
js实现拖拽与碰撞检测
Sep 18 Javascript
原生JS实现弹幕效果的简单操作指南
Nov 10 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
Jun 29 #Javascript
简单实现js间歇或无缝滚动效果
Jun 29 #Javascript
js精准的倒计时函数分享
Jun 29 #Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
Jun 29 #Javascript
RequireJS多页面应用实例分析
Jun 29 #Javascript
全面了解JS中的匿名函数
Jun 29 #Javascript
大型JavaScript应用程序架构设计模式
Jun 29 #Javascript
You might like
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
php实现简单加入购物车功能
2017/03/07 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
jquery tab插件制作实现代码
2010/06/22 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
详解Python中的type()方法的使用
2015/05/21 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
python3排序的实例方法
2020/10/20 Python
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
学校介绍信范文
2014/01/14 职场文书
追悼会子女答谢词
2014/01/28 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
未婚证明书模板
2014/10/08 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android