记录一个简单的可以拖动的弹出层

由于在公司开发中,经常会遇到页面要求弹出一个展示层,因此在网上找个了示例进行了下简单修改,在此做一个记录,方便以后用到查阅。

1.弹出层:

使用的时候放置到body标签中

<!-- 弹出层 -->
<div id="mask" class="maskDialog"></div>
<div class="dialog" id="dialog">
<div class="dialog_head" id="move_part">扫一扫</div>
<div class="dialog_content">
<div class="dialog_content_qrcode">
<div id="my_camera"></div>
</div>
</div>
<div><input id="close" value="关闭" class="button close_button"></div>
</div>

2.css样式:

可以根据实际需求进行样式修改

/* 弹出层 窗体样式 */
/a{text-decoration: none; color: #eee; display: block;}
.button{width: 100px; height: 30px; border-radius: 20px; text-align:center;line-height: 30px;}
.close_button{background:#8f8f8f;margin:0 auto;}
.close_button:hover{background: #484848;}
.maskDialog{width: 100%;height: 100%;background:#000;position: absolute;top: 0px;left:0px;opacity: 0.4;z-index: 8000; display: none;-moz-user-select: none; -webkit-user-select: none;}
.dialog{width: 650px;background:#E3EFFB; position: absolute;z-index: 9000;padding-bottom: 10px; display: none;-moz-user-select: none; -webkit-user-select: none;}
.dialog_head{width: 100%;height:30px;background:#6fced0;text-align: center;line-height: 30px;color: #eee; cursor: move;}
.dialog_content{width: 100%;height:350px;text-align: center;}
.dialog_content_qrcode{width:320px;height:320px;border:1px solid black;background: white;margin-top: 4%;margin-left: 25%;}

3.引用的js文件

$(document).ready(function(){
var $dialog = $("#dialog");
var $mask = $("#mask");

//自动居中对话框
function autoCenter(el){
var bodyW = $(window).width();
var bodyH = $(window).height();
var elW = el.width();
var elH = el.height();
$dialog.css({"left":(bodyW-elW)/2 + 'px',"top":(bodyH-elH)/2 + 'px'});
};

//禁止选中对话框内容
if(document.attachEvent) {//ie的事件监听,拖拽div时禁止选中内容,firefox与chrome已在css中设置过-moz-user-select: none; -webkit-user-select: none;
g('dialog').attachEvent('onselectstart', function() {
return false;
});
}
//声明需要用到的变量
var mx = 0,my = 0; //鼠标x、y轴坐标(相对于left,top)
var dx = 0,dy = 0; //对话框坐标(同上)
var isDraging = false; //不可拖动

//鼠标按下
$("#move_part").mousedown(function(e){
e = e || window.event;
mx = e.pageX; //点击时鼠标X坐标
my = e.pageY; //点击时鼠标Y坐标
dx = $dialog.offset().left;
dy = $dialog.offset().top;
isDraging = true; //标记对话框可拖动
});

//鼠标移动更新窗口位置
$(document).mousemove(function(e){
var e = e || window.event;
var x = e.pageX; //移动时鼠标X坐标
var y = e.pageY; //移动时鼠标Y坐标
if(isDraging){ //判断对话框能否拖动
var moveX = dx + x - mx; //移动后对话框新的left值
var moveY = dy + y - my; //移动后对话框新的top值
//设置拖动范围
var pageW = $(window).width();
var pageH = $(window).height();
var dialogW = $dialog.width();
var dialogH = $dialog.height();
var maxX = pageW - dialogW; //X轴可拖动最大值
var maxY = pageH - dialogH; //Y轴可拖动最大值
moveX = Math.min(Math.max(0,moveX),maxX); //X轴可拖动范围
moveY = Math.min(Math.max(0,moveY),maxY); //Y轴可拖动范围
//重新设置对话框的left、top
$dialog.css({"left":moveX + 'px',"top":moveY + 'px'});
};
});

//鼠标离开
$("#move_part").mouseup(function(){
isDraging = false;
});

//点击关闭对话框
$("#close").click(function(){
$dialog.css("display","none");
$mask.css("display","none");
});

//窗口大小改变时,对话框始终居中
window.onresize = function(){
autoCenter($dialog);
};

//通过该元素的点击事件,进行弹出层的展示
$("#callout").click(function(){
$dialog.css("display","block");
$mask.css("display","block");
autoCenter($dialog);
});

});

4.html页面上点击的按钮,点击该按钮显示弹出层

<input id="callout" type="button" value="弹出层测试" >

 

posted @ 2020-03-14 10:49  牛头人  阅读(287)  评论(0编辑  收藏  举报