原生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 相关文章推荐
firefox下frameset取不到值的解决方法
Sep 06 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
Aug 30 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
Feb 21 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
Dec 02 Javascript
jquery UI Datepicker时间控件的使用及问题解决
Apr 28 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
js+css3制作时钟特效
Oct 16 Javascript
vue2组件实现懒加载浅析
Mar 29 Javascript
JavaScript指定断点操作实例教程
Sep 18 Javascript
element-ui upload组件多文件上传的示例代码
Oct 17 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
Oct 17 Javascript
javascript自定义右键菜单插件
Dec 16 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
改变Apache端口等配置修改方法
2008/06/05 PHP
php 8小时时间差的解决方法小结
2009/12/22 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
php实现网页端验证码功能
2017/07/11 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
基于python中theano库的线性回归
2018/08/31 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
Django URL参数Template反向解析
2020/11/24 Python
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
《匆匆》教学反思
2014/02/22 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js