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代码超级推荐
Apr 05 Javascript
IE 当eval遇上function的处理
Aug 09 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
Sep 15 Javascript
jQuery学习笔记之2个小技巧
Jan 19 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
Mar 08 Javascript
一步步教大家编写酷炫的导航栏js+css实现
Mar 14 Javascript
JS实现关闭当前页而不弹出提示框的方法
Jun 22 Javascript
js在ie下打开对话窗口的方法小结
Oct 24 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
Sep 13 Javascript
VUEX-action可以修改state吗
Nov 19 Javascript
javascript异常处理实现原理详解
Feb 17 Javascript
Vue filter 过滤器、以及在table中的使用介绍
Sep 07 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工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
javascript 清除输入框中的数据
2009/04/13 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
一名毕业生的自我鉴定
2013/12/04 职场文书
会计系中文个人求职信
2013/12/24 职场文书
销售心得体会
2014/01/02 职场文书
高中课程设置方案
2014/05/28 职场文书
公司租房协议书范本
2014/10/08 职场文书
关于观后感的作文
2015/06/18 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
一文搞懂python异常处理、模块与包
2021/06/26 Python
Pytest中conftest.py的用法
2021/06/27 Python
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python