分析
1.点击弹出框,状态框和遮挡层(背景变灰)就会显示出来 display:block;
2.点击关闭按钮,模态框和遮挡层就会隐藏起来 display:none;
3.在页面中拖拽的原理:鼠标按下并且移动,之后松开鼠标
4.触发事件是鼠标按下mousedown,鼠标移动mousemove,鼠标松开mouseup
5.推拽过程:鼠标移动过程中,获得最新的值赋给模态框的left和top值,这样模态框就可以跟着鼠标走了
6.鼠标按下出发的事件源是最上面一行,就是id为title
7.鼠标的坐标减去鼠标在盒子内的坐标,才是真正模态框的位置
8.鼠标按下,我们要得到鼠标在盒子的坐标
9.鼠标移动,就让模态框的坐标设置为:鼠标坐标减去盒子坐标即可,注意移动事件写到按下事件里面
10.鼠标松开,就是停止拖拽,就是可以让鼠标移动事件解除
代码
<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">
<title>Document</title>
<style>
.login-header {
width: 100%;
text-align: center;
height: 30px;
font-size: 24px;
line-height: 30px;
}
* {
padding: 0;
margin: 0;
}
.login {
display: none;
width: 512px;
height: 280px;
position: fixed;
border: #ebebeb solid 1px;
left: 50%;
top: 50%;
background: #ffffff;
box-shadow: 0px 0px 20px #ddd;
z-index: 9999;
transform: translate(-50%, -50%);
}
.login-title {
width: 100%;
margin: 10px 0px 0px 0px;
text-align: center;
line-height: 40px;
height: 40px;
font-size: 18px;
position: relative;
cursor: move;
}
.login-input-content {
margin-top: 20px;
}
.login-button {
width: 50%;
margin: 30px auto 0px auto;
line-height: 40px;
font-size: 14px;
border: #ebebeb 1px solid;
text-align: center;
}
.login-bg {
display: none;
width: 100%;
height: 100%;
position: fixed;
top: 0px;
left: 0px;
background: rgba(0, 0, 0, .3);
}
a {
text-decoration: none;
color: #000000;
}
.login-button a {
display: block;
}
.login-input input.list-input {
float: left;
line-height: 35px;
height: 35px;
width: 350px;
border: #ebebeb 1px solid;
text-indent: 5px;
}
.login-input {
overflow: hidden;
margin: 0px 0px 20px 0px;
}
.login-input label {
float: left;
width: 90px;
padding-right: 10px;
text-align: right;
line-height: 35px;
height: 35px;
font-size: 14px;
}
.login-title span {
position: absolute;
font-size: 12px;
right: -20px;
top: -30px;
background: #ffffff;
border: #ebebeb solid 1px;
width: 40px;
height: 40px;
border-radius: 20px;
}
</style>
</head>
<body>
<div class=\"login-header\"><a id=\"link\" href=\"javascript:;\">点击,弹出登录框</a></div>
<div id=\"login\" class=\"login\">
<div id=\"title\" class=\"login-title\">登录会员
<span><a id=\"closeBtn\" href=\"javascript:void(0);\" class=\"close-login\">关闭</a></span>
</div>
<div class=\"login-input-content\">
<div class=\"login-input\">
<label>用户名:</label>
<input type=\"text\" placeholder=\"请输入用户名\" name=\"info[username]\" id=\"username\" class=\"list-input\">
</div>
<div class=\"login-input\">
<label>登录密码:</label>
<input type=\"password\" placeholder=\"请输入登录密码\" name=\"info[password]\" id=\"password\" class=\"list-input\">
</div>
</div>
<div id=\"loginBtn\" class=\"login-button\"><a href=\"javascript:void(0);\" id=\"login-button-submit\">登录会员</a></div>
</div>
<!-- 遮盖层 -->
<div id=\"bg\" class=\"login-bg\"></div>
<script>
var link = document.querySelector(\'#link\'); //获取我们鼠标点击的对象
var login = document.querySelector(\'.login\'); //获得弹出框元素
var mask = document.querySelector(\'#bg\');
var closeBtn = document.querySelector(\'#closeBtn\');
link.addEventListener(\'click\', function() {
login.style.display = \'block\';
mask.style.display = \'block\';
})
closeBtn.addEventListener(\'click\', function() {
login.style.display = \'none\';
mask.style.display = \'none\';
})
var title = document.querySelector(\'#title\');
title.addEventListener(\'mousedown\', function(e) {
var x = e.pageX - login.offsetLeft;
var y = e.pageY - login.offsetTop;
console.log(y);
document.addEventListener(\'mousemove\', move)
function move(e) {
login.style.left = e.pageX - x + \'px\';
login.style.top = e.pageY - y + \'px\';
}
document.addEventListener(\'mouseup\', function() {
document.removeEventListener(\'mousemove\', move);
})
})
</script>
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/32330.html