原生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 相关文章推荐
JavaScript学习笔记记录我的旅程
May 23 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 Javascript
jquery中的$(document).ready()使用小结
Feb 14 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
Aug 22 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
javascript常用函数(2)
Nov 05 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
Jan 17 Javascript
C#微信小程序服务端获取用户解密信息实例代码
Mar 10 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
微信小程序之判断页面滚动方向的示例代码
Aug 30 Javascript
vue 根据选择条件显示指定参数的例子
Nov 09 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
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
学习php开源项目的源码指南
2014/12/21 PHP
php session的应用详细介绍
2017/03/22 PHP
PHP chr()函数讲解
2019/02/11 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
语义化 H1 标签
2008/01/14 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
python处理json数据中的中文
2014/03/06 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
对python的文件内注释 help注释方法
2018/05/23 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
计算机专业大学生的自我评价
2013/11/14 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
矿泉水广告词
2014/03/20 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
Python语言中的数据类型-序列
2022/02/24 Python
Github 使用python对copilot做些简单使用测试
2022/04/14 Python