C C++最全鼠标事件、键盘事件,你听过嘛?,推荐

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

📜个人简介

⭐️个人主页:微风洋洋🙋‍♂️
🍑博客领域:编程基础,后端
🍅写作风格:干货,干货,还是tmd的干货
🌸精选专栏【JavaScript】
🚀支持洋锅:点赞👍、收藏⭐、留言💬

好久不见,甚是想念!
大家好!我是微风洋洋

鼠标事件、键盘事件,你听过嘛?这是什么呢,咋事件还关鼠标键盘啥事呢,如果你没听过,那么今天洋锅就带你大开眼界,让你领略五大事件的风韵,如果你早已知晓,那就考考你,看看下面的内容你还记得多少。
话不多说,直接开整!

文章目录

🌴页面事件

💡思考:HTML页面是按照什么样的顺序进行加载的?

答案:页面的加载是按照代码的编写顺序,从上到下依次执行的。

⭐️会出现的问题:若在页面还未加载完成的情况下,就使用JavaScript操作DOM元素,会出现语法错误。

在这里插入图片描述

⭐️解决办法:页面事件可以改变JavaScript代码的执行时机。

  • load事件:用于body内所有标签都加载完成后才触发,又因其无需考虑页面加载顺序的问题,常常在开发具体功能时添加。
  • unload事件:用于页面关闭时触发,经常用于清除引用避免内存泄漏时使用。

在这里插入图片描述

🌴焦点事件

在Web开发中,焦点事件多用于表单验证功能,是最常用的事件之一。

例如,文本框获取焦点改变文本框的样式,文本框失去焦点时验证文本框内输入的数据等。

在这里插入图片描述

为了让大家更好的掌握焦点事件的使用方法,下面以验证用户名和密码是否为空进行演示。

在这里插入图片描述

代码实现


	<!DOCTYPE html>
	<head>
	<meta charset="UTF-8">
	<title>验证用户名和密码是否为空</title>
	<style>
	body{background:#ddd;}
	.box{background:#fff;padding:20px 30px;width:400px;margin: 0 auto;text-align:center;}
	.btn{width:180px;height:40px;background:#3388ff;border:1px solid #fff;color:#fff;font-size:14px;}
	.ipt{width:260px;padding:4px 2px;}
	.tips{width:440px;height:30px;margin:5px auto;background:#fff;color:red;border:1px solid #ccc;display:none;line-height:30px;padding-left:20px;font-size:13px;}
	</style>
	</head>
	<body>
	<div id="tips" class="tips"></div>
	<div class="box">
	<p><label>用户名:<input id="user" class="ipt" type="text"></label></p>
	<p><label>密 码:<input id="pass" class="ipt" type="password"></label></p>
	<p><button id="login" class="btn">登录</button></p>
	</div>
	<script>
	window.onload = function() {
	addBlur($('user')); // 检测id为user的元素失去焦点后,value值是否为空
	addBlur($('pass')); // 检测id为pass的元素失去焦点后,value值是否为空
	};
	function $(obj) { // 根据id获取指定元素
	return document.getElementById(obj);
	}
	function addBlur(obj) { // 为指定元素添加失去焦点事件
	obj.onblur = function() {
	isEmpty(this);
	};
	}
	function isEmpty(obj) { // 检测表单是否为空
	if (obj.value === '') {
	$('tips').style.display = 'block';
	$('tips').innerHTML = '注意:输入内容不能为空! ';
	} else {
	$('tips').style.display = 'none';
	}
	}
	</script>
	</body>
	</html>


🌴鼠标事件

鼠标事件是Web开发中最常用的一类事件。

例如,鼠标滑过时,切换Tab栏显示的内容;利用鼠标拖拽曳状态框,调整它的显示位置等,这些常见的网页效果都会用到鼠标事件。

在这里插入图片描述

在项目开发中还经常涉及一些常用的鼠标属性,用来获取当前鼠标的位置信息。

在这里插入图片描述

在这里插入图片描述

IE6—8浏览器中不兼容pageX和pageY属性。因此,项目开发时需要对IE6~8浏览器进行兼容处理。

在这里插入图片描述

鼠标在文档中的坐标等于鼠标在当前窗口中的坐标加上滚动条卷去的文本长度。

为了让大家更好的理解鼠标事件的使用,以圆形显示鼠标单击位置为例演示。

在这里插入图片描述

代码实现


	<!DOCTYPE html>
	<head>
	<meta charset="UTF-8">
	<title>显示鼠标单击位置</title>
	<style>
	.mouse{position:absolute;background:#ffd965;width:40px;height:40px;border-radius:20px;}
	</style>
	</head>
	<body>
	<div id="mouse" class="mouse"></div>
	<script>
	var mouse = document.getElementById('mouse');
	//需求:鼠标在页面上单击时,获取单击时的位置,并显示一个小圆点
	document.onclick = function(event) {
	// 获取事件对象的兼容处理
	var event = event || window.event;
	// 鼠标在页面上的位置
	var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
	var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
	// 计算<div>应该显示的位置
	var targetX = pageX - mouse.offsetWidth / 2;
	var targetY = pageY - mouse.offsetHeight / 2;
	// 在鼠标单击的位置显示<div>
	mouse.style.display = 'block';
	mouse.style.left = targetX + 'px';
	mouse.style.top = targetY + 'px';
	};
	</script>
	</body>
	</html>

【案例】鼠标拖曳特效

在这里插入图片描述

盒子的位置(left和top值)= 鼠标的位置(left和top值)- 鼠标按下时与盒子之间的距离(left和top值)。

举个例子

在这里插入图片描述

代码实现思路

① 编写HTML,设计弹框用于实现拖拽特效。

② 为拖拽条添加mousedown事件及其处理程序。

③ 处理鼠标移动事件,实现鼠标的拖拽的特效。

④ 处理释放鼠标按键的事件,实现鼠标按钮松开后,弹框不再移动。

代码实现


	<!DOCTYPE html>
	<html>
	<head>
	<meta charset="UTF-8">
	<title>鼠标拖动</title>
	<style>
	body{margin:0}
	.box{width:400px;height:300px;border:5px solid #eee;box-shadow:2px 2px 2px 2px #666;position:absolute;top:30%;left:30%}
	.hd{width:100%;height:25px;background-color:#7c9299;border-bottom:1px solid #369;line-height:25px;color:#fff;cursor:move}
	#box_close{float:right;cursor:pointer}
	</style>
	</head>
	<body>
	<div id="box" class="box">
	<div id="drop" class="hd">
	注册信息 (可以拖拽)
	<span id="box\_close">【关闭】</span>
	</div>
	<div class="bd"></div>
	</div>
	<script>
	// 获取被拖动的盒子和拖动条
	var box = document.getElementById('box');
	var drop = document.getElementById('drop');
	drop.onmousedown = function(event) { // 鼠标在拖动条上 按下 可拖动盒子
	var event = event || window.event;
	// 获取鼠标按下时的位置
	var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
	var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
	// 计算鼠标按下的位置 距 盒子的位置
	var spaceX = pageX - box.offsetLeft;
	var spaceY = pageY - box.offsetTop;
	document.onmousemove = function(event) { // 鼠标移动的时候 获取鼠标的位置 整个盒子跟着鼠标的位置走
	var event = event || window.event;
	// 获取移动后鼠标的位置
	var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
	var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
	// 计算并设置盒子移动后的位置
	box.style.left = pageX - spaceX + 'px';
	box.style.top = pageY - spaceY + 'px';
	};
	};
	document.onmouseup = function() {// 释放鼠标按键时 取消盒子的移动
	document.onmousemove = null;
	};
	</script>
	</body>


![img](https://img-blog.csdnimg.cn/img_convert/2229015b93e7374d21d5dbc84386f93e.png)
![img](https://img-blog.csdnimg.cn/img_convert/a577d82deb9b8c96ab92e43bcca5b728.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

消盒子的移动
	document.onmousemove = null;
	};
	</script>
	</body>


[外链图片转存中...(img-1VeKFbVr-1715710610608)]
[外链图片转存中...(img-83bYGJEP-1715710610608)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值