JavaScript实现鼠标拖拽登录框

news/2024/7/5 4:23:10

拖拽的本质是登录框获得光标的偏移来调整自身的偏移。

拖拽发生时,光标相对盒子的坐标不会变化,相对于页面的坐标却在变化,二者的差值就是盒子需要的。

两个注意点:

1. 赋值给盒子的什么属性

outer.style.top = e.pageY - y + 'px';
outer.style.left = e.pageX - x + 'px';

2. 差值是数字型的,需要加上'px'

这里面涉及三个鼠标事件,总结来说就是:

(1)鼠标按下,获得差值(上文提到的)

(2)鼠标移动,盒子移动(调用boxMove())

(3)鼠标弹起,盒子不动(取消boxMove())

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>PC端特效</title><style>* {margin: 0;padding: 0;}.outer {width: 300px;height: 204px;position: absolute;padding: 10px;border: solid 2px #1B5E20;background-color: #E8F5E9;}#register {text-align: center;margin-bottom: 40px;}.input {margin: 10px;}#btn {margin-top: 40px;margin-left: 100px;}</style>
</head><body><div class="outer"><p id='register'>登录</p><div class="input"><label for="username">用户名</label><input type="text"><label for="password">密码:</label><input type="password"><button id="btn">enter</button></div></div><script>var outer = document.querySelector('.outer');var p = outer.firstElementChild;console.log(p);p.addEventListener('mousedown', function (e) {console.log('鼠标按下了');var y = e.pageY - this.offsetTop;var x = e.pageX - this.offsetLeft;function boxMove(e) {outer.style.top = e.pageY - y + 'px';outer.style.left = e.pageX - x + 'px';}document.addEventListener('mousemove',boxMove);document.addEventListener('mouseup',function(){document.removeEventListener('mousemove',boxMove);});});</script>
</body></html>


http://lihuaxi.xjx100.cn/news/240769.html

相关文章

第七篇:数据预处理(四) - 数据归约(PCA/EFA为例)

前言 这部分也许是数据预处理最为关键的一个阶段。 如何对数据降维是一个很有挑战&#xff0c;很有深度的话题&#xff0c;很多理论书本均有详细深入的讲解分析。 本文仅介绍主成分分析法(PCA)和探索性因子分析法(EFA)&#xff0c;并给出具体的实现步骤。 主成分分析法 - PCA 主…

命令别名的设置alias,unalias

alias命令的作用是为系统中的命令设置别名&#xff0c;如果常用命令比较长&#xff0c;那么为其设置别名可以简化用户操作&#xff0c;例如为ls -l | more命令设置别名lm&#xff0c;这样只需要输入lm就可以得到和 ls -l | more相同的效果;为rm -i设置别名为rm&#xff0c;可以…

Python自动化测试白羊座-week3切片+元组

name zcl,py,zyznames [zcl,py,zyz]print(names[0])print(names[0:2]) #切片就是从里面取几个元素, 从第几个取到第几个结束.取值时顾头不顾尾.print(names[1])#切片操作对字符串也适用name1[zcl,py,zyz]print(name1[2])num list(range(10)) #用range生成列表&#xff0c;需…

区分json与jsonp

JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别&#xff0c;但其实他们根本不是一回事儿,下边简单区分概括一下&#xff1a; JSON是一种数据交换格式&#xff0c;而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。…

JavaScript 立即执行函数的两种写法

(function(str){console.log(str欢迎你~);})(行步至春深);(function(str) {console.log(str欢迎你~);}(行路易知难)); 可以看到&#xff0c;每种写法都比平常多出两个小括号&#xff0c;其中一个可以看作是调用&#xff0c;里面装参数&#xff0c;另一个可以看作防止语法错误。…

Javascript 移动的海绵宝宝

效果描述&#xff1a; 做一个简单的动画效果&#xff0c;刚刷新页面时&#xff0c;SpongeBob在页面的左上角位置&#xff0c;随着时间推移&#xff0c;他匀速向右移动&#xff0c;直到右侧抵达页面右侧停下来。 分析&#xff1a; SpongeBob作为一张图片被存放在<img>里…

使用HTML5监測站点性能

在这个信息爆炸的互联网时代&#xff0c;越来越多的人缺少了等待的耐心。站点性能对于一个站点来说越来越重要。下面为监控到的站点打开时间对跳出率的影响&#xff1a; 当站点打开时间在0-1秒时&#xff0c;跳出率为12% 当站点打开时间在1-2秒时&#xff0c;跳出率为26% 当站点…

使用Apache对Tomcat进行负载均衡

翻译&#xff1a;疯狂的技术宅原文标题&#xff1a;Load balancing tomcat with Apache原文链接&#xff1a;http://programmergate.com/loa...本文首发微信公众号&#xff1a;充实的脑洞有时候我们需要把自己的应用部署在多个Tomcat实例上&#xff0c;这种场景通常是在使用大量…