js-模态框的拖动
效果如下:
代码如下:
<div class="clickBtn">点击,弹出登录框</div>
<div class="login">
<h3>登录会员</h3>
<table>
<tr>
<td class="left">用户名:</td>
<td><input type="text" placeholder="请输入用户名" name="" id=""></td>
</tr>
<tr>
<td class="left">登陆密码:</td>
<td><input type="text" placeholder="请输入登录密码" name="" id=""></td>
</tr>
</table>
<button>登录会员</button>
<div class="closebtn">关闭</div>
</div> <div class="mask"></div>
style:
<style>
* {
margin: 0;
padding: 0;
} .mask {
display: none;
position: absolute;
top: 0;
left: 0;
height: 100vh;
width: 100%;
background-color: rgba(0, 0, 0, .3);
} .clickBtn {
margin: 10px auto;
width: 200px;
border: 0px;
font-size: 20px;
font-weight: 700;
background-color: #fff;
cursor: pointer;
} .login {
visibility: hidden; position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); display: flex;
flex-direction: column;
align-items: center; padding: 20px;
box-sizing: border-box; width: 500px;
height: 300px;
border: 1px solid #eee;
background-color: #fff;
z-index: 1;
} .login h3 {
margin-bottom: 20px;
font-size: 20px;
font-weight: 400;
height: 30px;
width: 100%;
text-align: center;
cursor: move;
} .login table {
flex: 1;
display: flex;
margin: 0;
padding: 0; } .login table tr {
height: 50px;
text-align: right;
} .login table tr input {
width: 300px;
height: 30px;
border-radius: 2px;
border: 1px solid #eee;
} .login table .left {
font-weight: 400;
width: 40%;
} .login button {
width: 260px;
height: 40px;
background-color: #fff;
border: 1px solid #eee;
border-radius: 2px;
cursor: pointer;
} .login button:hover {
color: #fff;
background-color: skyblue;
} .login .closebtn {
position: absolute;
right: 0;
top: 0;
transform: translate(50%, -50%);
width: 50px;
height: 50px;
text-align: center;
line-height: 50px;
background-color: orange;
border-radius: 50%;
cursor: pointer;
}
</style>
js:
<script>
let btn = document.querySelector('.clickBtn')
let login = document.querySelector('.login')
let closebtn = document.querySelector('.closebtn')
let mask = document.querySelector('.mask') let title = document.querySelector('h3')
let body = document.querySelector('body')
btn.addEventListener('click', function () {
mask.style.display = 'block'
login.style.visibility = 'visible'
}) closebtn.addEventListener('click', function () {
mask.style.display = 'none'
login.style.visibility = 'hidden'
}) title.addEventListener('mousedown', function (e) {
let x = e.pageX - login.offsetLeft
let y = e.pageY - login.offsetTop
function move(e) {
// 如果此处仍然用 x=e.pageX - x;login.style.left=x+'px' 就会出现错误,因为这里是浅拷贝,引用的是同一个地址,而mousedown事件一直触发mousemove事件,导致x对应地址的值一直在改变,且login.style.left=x+'px' 指向的也是这个地址,所以页面的区域就会出现晃动
var xx = e.pageX - x;
var yy = e.pageY - y;
console.log(x, y);
login.style.top = yy + 'px';
login.style.left = xx + 'px'; } // 在页面任何地方都应触发mousemove,故监听document的mousemove事件
document.addEventListener('mousemove', move) // 在页面任何地方都应触发mouseup,故监听document的mouseup事件
document.addEventListener('mouseup', function () {
document.removeEventListener('mousemove', move)
})
})
</script>
js-模态框的拖动的更多相关文章
- 完美解决bootstrap模态框允许拖动后拖出边界的问题
使用bootstrap3版本 在网上看了很多方法,我觉得jquery-ui的实现方法是最简单有效的,具体实现方法 1.下载并引入jquery-ui插件 2.全局添加模态框允许拖动事件 $(docume ...
- [TimLinux] JavaScript 模态框可拖动功能实现——jQuery版
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- JS模态框 简单案例
演示: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8 ...
- js模态框实现原理
<!DOCTYPE> <html> <head> <style>/* 定义模态对话框外面的覆盖层样式 */ #modal-overlay { visib ...
- 原生js模态框实现
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- [TimLinux] JavaScript 模态框可拖动功能实现——节流版
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- [TimLinux] JavaScript 模态框可拖动功能实现——原始版
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- js弹框3秒后自动消失
开发中有时候会需要最出弹框后,过几秒自动消失的效果,下面给大家分享一下我自己做的一个小案例. 案例中的弹框使用的是bootstrap里面的模态框,实现自动消失则用的是js中的setInterval方法 ...
- Bootstrap——可拖动模态框(Model)
还是上一个小项目,o(╥﹏╥)o,要实现点击一个div或者button或者一个东西然后可以弹出一个浮在最上面的弹框.网上找了找,发现Bootstrap的Model弹出框可以实现该功能,因此学习了一下, ...
- js控制Bootstrap 模态框(Modal)插件
js控制Bootstrap 模态框(Modal)插件 http://www.cnblogs.com/zzjeny/p/5564400.html
随机推荐
- md工具
C:\Users\XJ\AppData\Roaming\Typora 删掉后重新打开就可以使用了,之前做的配置都失效了,需要重新配置:允许折叠大纲,图片存储方式. 把自动检测更新给关闭
- JBOSS环境与应用部署
- 【PS】PS如何删除图片中的白字
[PS]PS如何删除图片中的白字 首先打开ps,然后导入要操作的图片,接着选择左边工具栏中的魔棒工具. 对所要操作的文字进行框选,可以按住shift键进行连续操作 点击上方工具栏中的选择 | 修改 | ...
- pywinauto app自动化的实践
from pywinauto import Application app = Application(backend='uia').start("notepad") # prin ...
- java annotation(如何创建新的注解)小结
"注解"有三种 1:无实际参数,只有声明 2:只存在单一参数,有些像方法调用 3:有多个参数 标准的"注解"就先不总结了. 想总结一下<如何创建自己的注解 ...
- 自动化:web网页理解
一.网页成分 网页由以下三部分组成 HTML: HTML 教程 (w3school.com.cn) 1.标记语言,网页的主体,不会变化 2.只会提示,不会报错 CSS: 1.标记语言,用来修饰HTML ...
- 14-K8S之helm入门到逃跑
目录 helm入门 1.helm介绍 2.helm核心术语 3.helm下载和安装 3.1以helm3.6为测试实例 3.2以helm3.7.2为例 helm v2版本在集群上部署Tiller 1.创 ...
- Nucmer+LINKVIEW实现序列水平的共线性分析
https://www.cnblogs.com/johnsonzzz/p/15151634.html https://github.com/YangJianshun/LINKVIEW 可以绘制两个基因 ...
- https原理(二)服务端公钥有没有被CA私钥加密
https://www.dianjilingqu.com/387084.html 在https原理中,一大争议就是服务端是否用CA私钥加密服务器公钥 是-自签名证书浏览器没有CA公钥,无法解密公钥,而 ...
- matlab求解器的选择
可以选择的变步长求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情况下,具有状态的系统用的是ode45:没有状态的系统用的是discrete. 1)od ...