原生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的ajax从纯真网(cz88.net)获取IP地址对应地区名
Dec 02 Javascript
JQuery Study Notes 学习笔记(一)
Aug 04 Javascript
script标签属性用type还是language
Jan 21 Javascript
jQuery实现微信长按识别二维码功能
Aug 26 Javascript
javascript入门之数组[新手必看]
Nov 21 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
Dec 15 Javascript
ajax异步请求详解
Jan 06 Javascript
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
基于js中style.width与offsetWidth的区别(详解)
Nov 12 Javascript
浅析vue中的MVVM实现原理
Mar 04 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
May 08 Javascript
使用webpack搭建vue项目及注意事项
Jun 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
ThinkPHP 404页面的设置方法
2015/01/14 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Win10下Python环境搭建与配置教程
2016/11/18 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
python用户管理系统
2018/03/13 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
python爬取淘宝商品销量信息
2018/11/16 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
Java语言的优势
2015/01/10 面试题
元旦红领巾广播稿
2014/02/19 职场文书
生活部的活动方案
2014/08/19 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
AngularJS实现多级下拉框
2022/03/25 Javascript