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 相关文章推荐
Tab页界面,用jQuery及Ajax技术实现
Sep 21 Javascript
jquery 新浪网易的评论块制作
Jul 01 Javascript
js 返回时间戳所对应的具体时间
Jul 20 Javascript
html a标签-超链接中confirm方法使用介绍
Jan 04 Javascript
Bootstrap精简教程
Nov 27 Javascript
js时间比较 js计算时间差的简单实现方法
Aug 26 Javascript
Bootstrap Modal遮罩弹出层(完整版)
Nov 21 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
Jul 25 Javascript
vue el-tree 默认展开第一个节点的实现代码
May 15 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
Sep 04 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 Javascript
JavaScript数组常用的增删改查与其他属性详解
Oct 13 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公用函数列表[正则]
2007/02/22 PHP
php a simple smtp class
2007/11/26 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
php分页示例分享
2014/04/30 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
Python六大开源框架对比
2015/10/19 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python 实现UTC时间加减的方法
2018/12/31 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
Python内置加密模块用法解析
2019/11/25 Python
python实现计算图形面积
2021/02/22 Python
this关键字的含义
2015/04/08 面试题
项目专员岗位职责
2013/12/04 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
人事任命通知书
2015/04/21 职场文书
重温入党誓词主持词
2015/06/29 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书