JavaScript-Dom-监听事件

文章目录

  • DOM事件的学习

DOM事件的学习

在这里插入图片描述
在这里插入图片描述
那么当我们按下按键时,如何获取按键的键值呢?我们可以通过给onkeydown方法添加一个参数event将我们所按下的键传入函数,在按键对象进入函数后,我们就可以通过event.keycode来获取他的键值。
在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>键盘按键的状态</title>
		<script type="text/javascript">
			function keyEvent(event) {
				alert("你按下了" + event.keyCode + "号键");
			}
		</script>

	</head>
	<body onkeydown="keyEvent(event)">
		请随便按下按键吧
	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>键盘控制DIV移动</title>
		<script type="text/javascript">
			function keyEvent(event) {
				var distance = document.getElementById("move");
              switch(event.keyCode){
                case 37:{distance.style.left=distance.offsetLeft-50+"px";break;}
               case 38:{distance.style.top=distance.offsetTop-50+"px";break;}
                   case 39:{distance.style.left=distance.offsetLeft+50+"px";break;}
                   case 40:{distance.style.top=distance.offsetTop+50+"px";break;}

              };
			};
		</script>
		<style type="text/css">
			#move {
				width: 100px;
				height: 100px;
				border: 1pxsolid #000;
				background: #EAEAEA;
				position: absolute;
			}
		</style>
	</head>
	<body onkeydown="keyEvent(event)">
		<div id="move"></div>
	</body>
</html>
onmousedown

按下鼠标时触发此事件

onmouseup

鼠标按下后松开鼠标时触发此事件

onmousemove

鼠标移动时触发此事件

onmouseout

当鼠标离开某对象范围时触发此事件
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>事件的触发</title>
		<script type="text/javascript">
			function on_Mousedown() {
				alert("你按下了按钮,通过onmousedown方法触发了mousedown事件");
			}

			function on_Mouseup() {
				alert("你按下鼠标并松开了,通过onmouseup方法触发了mouseup事件");
			}

			function on_Mouseover() {
				alert("鼠标移动到了按钮,通过onmouseover方法触发了mouseover事件");
			}

			function on_Mouseout() {
				alert("鼠标移出了按钮,通过onmouseout方法触发了mouseout事件");
			}
		</script>
	</head>
	<body>
		<input type="button"value="按下鼠标触发事件"onmousedown="on_Mousedown();"/>
		<br />
		<br />
		<input type="button"value="按下鼠标松开时触发事件"onmouseup="on_Mouseup();"/>
		<br />
		<br />
		<input type="button"
		value="移动鼠标到按钮触发事件"onmouseover="on_Mouseover();"/>
		<br />
		<br />
		<input type="button"value="移开鼠标触发事件"onmouseout="on_Mouseout();"/>
	</body>
</html>

现在我们对鼠标的事件有了大致的了解,有没有想要试一下将按键控制div移动的案例给升级一下,我们试一下通过鼠标控制拖拽控制div移动,是不是更加高端大气上档次呢。

思路分析:

首先我们来分析一下,想象下鼠标控制div的拖拽,按步骤应该有三个过程,鼠标移动到div上按下,拖动div,松开按键,其分别对应三个事件是onmousedown,onmousemove ,onmouseup。
在这里插入图片描述

1)我们要获取按下鼠标时在div内的坐标,event.clientX,event.clientY返回事件对象发生时相对于本体(当前div)的坐标。假设鼠标点击红 点,那么onmousedown返回event.clientX,event.clientY如图所示,再通过蓝色div的top和left,我们可以得到

ClickLeft=event.clientX-left;
ClickTop=event.clientY-top;

(ClickLeft,ClickTop)就是事件对象发生时相对于对象的坐标。

blob.png

2)然后按住这个点进行拖拽如图所示,鼠标的位置发生了变化,我们现在需要基于新的鼠标的位置将这个div移动过去即改变div的top,left。

那么如何计算新的坐标呢?首先我们思考下,当我们按住一个物体进行拖拽的时候,拖拽前后我们按住的地方相对于这个物体是没有变化的。

对于这个案例来说,图上红点相对于div的坐标是不会改变的。所以我们可以根据mousemove事件发生的位置即新的红点的位置减去按下鼠标时在div内的坐标(ClickLeft,ClickTop)求出div拖动时所应处的位置。

left=event.clientX-ClickLeft;//这里的event是mousemove事件
top=event.clientY-ClickTop;

3)当我们抬起鼠标的时候,应该取消拖动改变位置使div停下来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码浪人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值