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怎么终止程序return不行换jfslk
May 30 Javascript
javascript实现手机震动API代码
Aug 05 Javascript
不得不分享的JavaScript常用方法函数集(下)
Dec 25 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
Mar 05 Javascript
jquery实现图片列表鼠标移入微动
Dec 01 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
详解Vue微信公众号开发踩坑全记录
Aug 21 Javascript
JavaScript EventEmitter 背后的秘密 完整版
Mar 29 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
原生JS实现逼真的图片3D旋转效果详解
Feb 16 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 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 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
实例讲解php实现多线程
2019/01/27 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
200行自定义python异步非阻塞Web框架
2017/03/15 Python
python访问抓取网页常用命令总结
2017/04/11 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
平面设计求职信
2014/03/10 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
确保工程质量承诺书
2015/04/29 职场文书
实习感想范文
2015/08/10 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫