【前端 HTML+CSS+JavaScript(JS)】DOM练习-onkeydown键盘事件-用wasd移动图片的位置 带注释/总结

效果:

在这里插入图片描述

代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>作业6-键盘事件</title>
		<script src="utility.js" type="text/javascript" charset="utf-8"></script>
		<style type="text/css">
			*{
				margin: 0px;
				padding: 0px;
				border: 0px solid #000000;
			}
			#bd{
				background: url(img-4.jpg);
				background-repeat: no-repeat;
				border: 0px solid;
			}
			#b-box{
				width: 900px;
				height: 724px;
				position: relative;
			}
			
			#img0{
				width: 40px;
				position: absolute;
				bottom: 10px;
				left: 85px;
			}
		</style>
	</head>
	
	<!-- ★★★键盘的事件设在body上★★★ -->
	<body id="bd" onkeydown="move(event)">
		
		<script type="text/javascript">
		//keyCode   w: 87 s: 83 a: 65 d: 68
			function move(e){
				// l($("img0").offsetLeft);
				if(e.key == 'w' || e.key == 'W')
					//★★★offsetLeft元素偏移量,注意写法!+"px",把它设成字符串,格式同CSS★★★
					$("img0").style.top = $("img0").offsetTop - 10 + "px";
				if(e.key == 'a' || e.key == 'A')
					$("img0").style.left = $("img0").offsetLeft - 10 + "px";
				if(e.key == 's' || e.key == 'S')
					$("img0").style.top = $("img0").offsetTop + 10 + "px";
				if(e.key == 'd' || e.key == 'D')
					$("img0").style.left = $("img0").offsetLeft + 10 + "px";
			}
		</script>
		
		<div id="b-box">
			<img src="img-3.jpg" alt="hero.jpg" id="img0"/>
		</div>
		
	</body>
</html>

其中用到的utility.js:

function $(id){
	return document.getElementById(id);
}
function l(a){
	console.log(a);
}

DOM练习文件:

https://download.csdn.net/download/cc2855816075/80848641

注意:

1、键盘的事件设在body上。
2、offsetLeft元素偏移量,注意写法!+“px”,把它设成字符串,格式同CSS。
$(“img0”).style.top = $(“img0”).offsetTop - 10 + “px”;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现通过按键盘退出放大图片,并使用鼠标移动来查看不同位置的功能,您可以添加键盘事件监听器和鼠标移动事件监听器。以下是修改后的代码: ```javascript function showPopup(imageSrc) { var popup = document.createElement("div"); var popupImg = document.createElement("img"); var scale = 1; var isDragging = false; var startX, startY, translateX, translateY; // 设置弹出窗口中的图片 popupImg.src = imageSrc; popupImg.style.transform = `scale(${scale})`; // 设置悬浮窗样式 popup.style.position = "fixed"; popup.style.width = "80%"; popup.style.height = "80%"; popup.style.backgroundColor = "transparent"; popup.style.zIndex = "9999"; // 添加图片到悬浮窗 popup.appendChild(popupImg); document.body.appendChild(popup); // 居中弹出窗口 function centerPopup() { var windowHeight = window.innerHeight; var popupHeight = popup.offsetHeight; var scrollTop = window.pageYOffset || document.documentElement.scrollTop; var offset = (windowHeight - popupHeight) / 2 + scrollTop; // 设置弹出窗口的垂直位置 popup.style.top = offset + "px"; } // 初始化居中弹出窗口 centerPopup(); // 添加滚动和调整窗口大小事件监听器 window.addEventListener("scroll", centerPopup); window.addEventListener("resize", centerPopup); // 点击事件监听器,点击其他区域时隐藏弹出窗口 popup.onclick = function () { popup.style.display = "none"; }; // 移除滚动和调整窗口大小事件监听器 function removeListeners() { window.removeEventListener("scroll", centerPopup); window.removeEventListener("resize", centerPopup); } // 在窗口关闭时移除事件监听器 window.onbeforeunload = function () { removeListeners(); }; // 鼠标按下事件,开始拖动图片 popupImg.onmousedown = function (event) { isDragging = true; startX = event.clientX; startY = event.clientY; translateX = 0; translateY = 0; }; // 鼠标移动事件,拖动图片 popupImg.onmousemove = function (event) { if (isDragging) { var deltaX = event.clientX - startX; var deltaY = event.clientY - startY; translateX += deltaX; translateY += deltaY; popupImg.style.transform = `scale(${scale}) translate(${translateX}px, ${translateY}px)`; startX = event.clientX; startY = event.clientY; } }; // 鼠标松开事件,停止拖动图片 popupImg.onmouseup = function () { isDragging = false; }; // 鼠标离开事件,停止拖动图片 popupImg.onmouseleave = function () { isDragging = false; }; // 键盘事件监听器,按下键盘上的Escape键退出放大图片 document.onkeydown = function (event) { if (event.key === "Escape") { popup.style.display = "none"; } }; } ``` 通过添加键盘事件监听器和鼠标移动事件监听器,您可以实现按下键盘上的Escape键退出放大图片的功能,并使用鼠标移动来查看不同位置图片。 希望这次修改能满足您的需求!如果您还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_小鹰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值