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 相关文章推荐
javascript温习的一些笔记 基础常用知识小结
Jun 22 Javascript
javascript操作数组详解
Dec 17 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
微信小程序模板之分页滑动栏
Feb 10 Javascript
小程序实现列表删除功能
Oct 30 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
微信小程序sessionid不一致问题解决
Aug 30 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
layer 关闭指定弹出层的例子
Sep 25 Javascript
vue element-ui读取pdf文件的方法
Nov 26 Javascript
使用pkg打包ThinkJS项目的方法步骤
Dec 30 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 操作调试的方法
2012/07/12 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
python的多重继承的理解
2017/08/06 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
Python request中文乱码问题解决方案
2020/09/17 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
妇科医生自荐信
2013/11/05 职场文书
大学校务公开实施方案
2014/03/31 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
javaScript Array api梳理
2021/03/31 Javascript
app场景下uniapp的扫码记录
2022/07/23 Java/Android