js实现弹出框的拖拽效果实例代码详解


Posted in Javascript onApril 16, 2019

具体代码如下所示:

//HTML部分
<div class="wrap"></div>
<div class="popUpBox">
<div class="layer-head"><div class="layer-head-text">弹出框</div><div class="layer-close"></div></div>

<div class="layer-body"></div>

<div class="layer-footer">


<div class="layer-footer-button-group">



<div class="layer-footer-button layer-sure">确定</div>



<div class="layer-footer-button layer-cancel">取消</div>


</div>

</div>
</div>
//CSS部分
.wrap {
position: fixed;
left: 0;
top: 0;
background-color: #000;
z-index: 10000;
  opacity: 0.3;
}
.popUpBox {

height: 400px;

width: 700px;

position: absolute;

overflow: hidden;

box-sizing: border-box;

z-index: 10000;

background-color: #fff;

border-radius: 2px;

box-shadow: 1px 1px 50px rgba(0,0,0,.3);
}
.layer-head {

width: 100%;

height: 35px;

border-bottom: 1px solid #eee;

box-sizing: border-box;

background-color: #f8f8f8;

border-radius: 4px 4px 0 0;

cursor: move;
}
.layer-head-text {

padding-left: 20px;

font-size: 14px;

color: #333;

height: 35px;

line-height: 34px;

float: left;
}
.layer-close {

float: right;

width: 16px;

height: 16px;

background-image: url(../images/close_hover.png);

background-repeat:no-repeat;

background-size:100% 100%;

position: absolute;

top: 10px;

right: 12px;

cursor: pointer;
}
.layer-body {

width: 100%;

height: calc(100% - 73px);
}
.layer-footer {

width: 100%;

height: 38px;

border-top: 1px solid #eee;

box-sizing: border-box;

background-color: #f8f8f8;

border-radius: 0 0 4px 4px;
}
.layer-footer-button-group {

padding: 5px 0 5px 576px;

height: 28px;
}
.layer-footer-button {

width: 56px;

height: 28px;

line-height: 28px;

margin-right: 6px;

box-sizing: border-box;

font-size: 12px;

float: left;

text-align: center;

cursor: pointer;
}
.layer-sure {

border: 1px solid #4898d5;

background-color: #2e8ded;

color: #fff;
}
.layer-cancel {

border: 1px solid #dedede;

background-color: #f1f1f1;

color: #333;
}
//点击某物体时,用drag对象即可,move和up是全局区域,也就是整个文档通用,应该使用document对象而不是drag对象(否则,采用drag对象时物体只能往右方或下方移动)
$(document).on('mousedown', '.layer-head', function(e) {

e = e || window.event; //兼容ie浏览器

var drag = $(this).parent();

$('body').addClass('select'); //webkit内核和火狐禁止文字被选中

document.body.onselectstart = document.body.ondrag = function() { //ie浏览器禁止文字选中

return false;
}
if ($(e.target).hasClass('layer-close')) { //点关闭按钮不能拖拽模态框

return;
}

var diffX = e.clientX - drag.offset().left; //鼠标点击物体那一刻相对于物体左侧边框的距离=点击时的位置相对于浏览器最左边的距离-物体左边框相对于浏览器最左边的距离

var diffY = e.clientY - drag.offset().top;

$(document).on('mousemove', function(e) {


e = e || window.event; //兼容ie浏览器 


var left = e.clientX - diffX; 


var top = e.clientY - diffY;


if (left < 0) { 



left = 0; 


} else if (left > window.innerWidth - drag.width()) { 



left = window.innerWidth - drag.width(); 


}


if (top < 0) { 



top = 0; 


} else if (top > window.innerHeight - drag.height()){ 



top = window.innerHeight - drag.height(); 


}


//移动时重新得到物体的距离,解决拖动时出现晃动的现象


drag.css({



'left': left + 'px',



'top': top + 'px'


});

});

$(document).on('mouseup', function(e) { //当鼠标弹起来的时候不再移动 


$(document).unbind("mousemove");


$(document).unbind("mouseup");

});
});

总结

以上所述是小编给大家介绍的js实现弹出框的拖拽效果实例代码详解 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript 类方法定义还是有点区别
Apr 15 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
Jul 26 Javascript
表单元素的submit()方法和onsubmit事件应用概述
Feb 01 Javascript
jQuery之字体大小的设置方法
Feb 27 Javascript
易被忽视的js事件问题总结
May 14 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
Aug 19 Javascript
javascript中apply/call和bind的使用
Feb 15 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
Jan 25 Javascript
详解webpack import()动态加载模块踩坑
Jul 17 Javascript
javascript中call()、apply()的区别
Mar 21 Javascript
es6中reduce的基本使用方法
Sep 10 Javascript
vue父组件给子组件的组件传值provide inject的方法
Oct 23 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 #Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
Apr 15 #Javascript
详解JavaScript中的强制类型转换
Apr 15 #Javascript
一个小时快速搭建微信小程序的方法步骤
Apr 15 #Javascript
详解从0开始搭建微信小程序(前后端)的全过程
Apr 15 #Javascript
ES6知识点整理之模块化的应用详解
Apr 15 #Javascript
详解如何运行vue项目
Apr 15 #Javascript
You might like
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
JavaScript 基本概念
2015/01/20 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
DOM事件探秘篇
2017/02/15 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
Python中文件操作简明介绍
2015/04/13 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
python 制作本地应用搜索工具
2021/02/27 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
创意广告词
2014/03/17 职场文书
2014年党支部承诺书
2014/05/30 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书