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 相关文章推荐
js 高效去除数组重复元素示例代码
Dec 19 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
Jun 15 Javascript
Jquery中request和request.form和request.querystring的区别
Nov 26 Javascript
JavaScript jquery及AJAX小结
Jan 24 Javascript
在JavaScript中对HTML进行反转义详解
May 18 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
Oct 10 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
原生JS实现的碰撞检测功能示例
May 18 Javascript
Node.js Windows Binary二进制文件安装方法
May 16 Javascript
解决layer.open后laydate失效的问题
Sep 06 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 Javascript
vue实现列表拖拽排序的功能
Nov 02 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
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
php读取本地json文件的实例
2018/03/07 PHP
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
微信小程序 如何保持登录状态
2019/08/16 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
python matplotlib绘制三维图的示例
2020/09/24 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
东方电视购物:东方CJ
2016/10/12 全球购物
秋季婚礼证婚词
2014/01/11 职场文书
优秀体育委员自荐书
2014/01/31 职场文书
财务会计毕业生个人求职信
2014/02/03 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
学校文明单位申报材料
2014/05/06 职场文书
活动总结新闻稿
2014/08/30 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
民主生活会剖析材料
2014/09/30 职场文书
升学宴来宾致辞
2015/07/27 职场文书
教师节获奖感言
2015/07/31 职场文书
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers