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 相关文章推荐
window.name代替cookie的实现代码
Nov 28 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
Jan 15 Javascript
jquery submit ie6下失效的原因分析及解决方法
Nov 15 Javascript
使用jQuery jqPlot插件绘制柱状图
Dec 18 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
JScript中的条件注释详解
Apr 24 Javascript
javascript多物体运动实现方法分析
Jan 08 Javascript
利用Vue.js指令实现全选功能
Sep 08 Javascript
利用vue开发一个所谓的数独方法实例
Dec 21 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
Sep 21 Javascript
JavaScript实现横版菜单栏
Mar 17 Javascript
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
重学 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中SESSION的注销与清除
2015/04/16 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
原生JavaScript实现留言板
2021/01/10 Javascript
在Python的Django框架中加载模版的方法
2015/07/16 Python
Python 正则表达式的高级用法
2016/12/04 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
学习Python需要哪些工具
2020/09/04 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
简历上的自我评价
2014/02/03 职场文书
小学生评语集锦
2014/04/18 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
雷峰塔导游词
2015/02/09 职场文书
面试通知短信
2015/04/20 职场文书
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL