原生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 相关文章推荐
基于jQuery的图片剪切插件
Aug 03 Javascript
JQuery 中几个类选择器的简单使用介绍
Mar 14 Javascript
JavaScript异步编程:异步数据收集的具体方法
Aug 19 Javascript
js实现人才网站职位选择功能的方法
Aug 14 Javascript
jQuery实现图片轮播特效代码分享
Sep 15 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
js实现小窗口拖拽效果
Dec 03 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
Vue引入jquery实现平滑滚动到指定位置
May 09 jQuery
学习使用ExpressJS 4.0中的新Router的用法
Nov 06 Javascript
js中怎么判断两个字符串相等的实例
Jan 17 Javascript
layui form.render('select', 'test2') 更新渲染的方法
Sep 27 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
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
smarty中常用方法实例总结
2015/08/07 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
Prototype Object对象 学习
2009/07/12 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
学习python的几条建议分享
2013/02/10 Python
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
Python流程控制 if else实现解析
2019/09/02 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
python 基于wx实现音乐播放
2020/11/24 Python
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
职称自我鉴定
2013/10/15 职场文书
自荐信格式
2013/12/01 职场文书
临床护士自荐信
2014/01/31 职场文书
阳光体育活动方案
2014/02/16 职场文书
公司请假条格式
2014/04/11 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python