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 prototype对象的属性说明
Mar 13 Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
Apr 30 Javascript
js实现导航吸顶效果
Feb 24 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
Dec 25 jQuery
vue一个页面实现音乐播放器的示例
Feb 06 Javascript
webpack 单独打包指定JS文件的方法
Feb 22 Javascript
react-native-video实现视频全屏播放的方法
Mar 19 Javascript
JavaScript使用math.js进行精确计算操作示例
Jun 19 Javascript
微信小程序动态增加按钮组件
Sep 14 Javascript
JavaScript如何实现图片处理与合成
May 29 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
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
js闭包实例汇总
2014/11/09 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
5款非常棒的Python工具
2018/01/05 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
python将音频进行变速的操作方法
2020/04/08 Python
Python更换pip源方法过程解析
2020/05/19 Python
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
关于保护环境的建议书
2014/05/13 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
python析构函数用法及注意事项
2021/06/22 Python
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技