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中数组sort和reverse用法分析
Dec 30 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
Sep 06 Javascript
JavaScript识别网页关键字并进行描红的方法
Nov 09 Javascript
js自定义回调函数
Dec 13 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
Jun 21 Javascript
Bootstrap实现水平排列的表单
Jul 04 Javascript
解析ajaxFileUpload 异步上传文件简单使用
Dec 30 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 Javascript
用node和express连接mysql实现登录注册的实现代码
Jul 05 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
Jul 25 Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
解决vue项目报错webpackJsonp is not defined问题
Mar 14 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
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
php常用数学函数汇总
2014/11/21 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
php生成gif动画的方法
2015/11/05 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
Less 安装及基本用法
2018/05/05 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
Python对数据库操作
2016/03/28 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
python单例模式实例解析
2018/08/28 Python
python数组循环处理方法
2019/08/26 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
新驾驶员个人自我评价
2014/01/03 职场文书
销售经理竞聘书
2014/03/31 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
2015感人爱情寄语
2015/02/26 职场文书
在校证明模板
2015/06/17 职场文书
篮球赛新闻稿
2015/07/17 职场文书