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 定义function的三种方式小结
Oct 16 Javascript
初窥JQuery(二) 事件机制(1)
Nov 25 Javascript
js运动框架_包括图片的淡入淡出效果
May 11 Javascript
jquery实现checkbox 全选/全不选的通用写法
Feb 22 Javascript
使用jQuery实现的掷色子游戏动画效果
Mar 14 Javascript
jquery获取选中的文本和值的方法
Jul 08 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
Aug 13 Javascript
JavaScript函数中关于valueOf和toString的理解
Jun 14 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
Jul 21 Javascript
js 动态生成json对象、时时更新json对象的方法
Dec 02 Javascript
javascript动画之磁性吸附效果篇
Dec 09 Javascript
vue实现简单的MVVM框架
Aug 05 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在线解压ZIP文件的方法
2014/12/30 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
Vue中如何实现proxy代理
2018/04/20 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
python3抓取中文网页的方法
2015/07/28 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
python正则表达式的使用
2017/06/12 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
python SVM 线性分类模型的实现
2019/07/19 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
致跳高运动员加油稿
2014/02/12 职场文书
2014年工会工作总结
2014/11/12 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
MySQL 数据 data 基本操作
2022/05/04 MySQL
SQL Server中使用表变量和临时表
2022/05/20 SQL Server