在JavaScript中获取鼠标绘制的矩形的宽度和高度,可以通过监听鼠标事件来实现。以下是一个简单的示例,展示了如何实现这一功能:
mousedown
, mousemove
, 和 mouseup
。event.clientX
和 event.clientY
获取鼠标在视口中的坐标。mousedown
时记录起始点,在 mousemove
时更新结束点,在 mouseup
时计算宽度和高度。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Draw Rectangle</title>
<style>
#canvas {
width: 100%;
height: 400px;
border: 1px solid black;
position: relative;
}
.rectangle {
position: absolute;
border: 1px dashed red;
}
</style>
</head>
<body>
<div id="canvas"></div>
<script>
let startX, startY, endX, endY;
const canvas = document.getElementById('canvas');
canvas.addEventListener('mousedown', (event) => {
startX = event.clientX;
startY = event.clientY;
const rect = document.createElement('div');
rect.classList.add('rectangle');
canvas.appendChild(rect);
});
canvas.addEventListener('mousemove', (event) => {
if (startX && startY) {
endX = event.clientX;
endY = event.clientY;
const rect = canvas.lastElementChild;
rect.style.left = `${Math.min(startX, endX)}px`;
rect.style.top = `${Math.min(startY, endY)}px`;
rect.style.width = `${Math.abs(endX - startX)}px`;
rect.style.height = `${Math.abs(endY - startY)}px`;
}
});
canvas.addEventListener('mouseup', () => {
if (startX && startY && endX && endY) {
const width = Math.abs(endX - startX);
const height = Math.abs(endY - startY);
console.log(`Width: ${width}, Height: ${height}`);
startX = startY = endX = endY = null;
}
});
</script>
</body>
</html>
div
元素作为画布。mousedown
事件中记录起始点坐标,并创建一个新的 div
元素作为矩形。mousemove
事件中更新矩形的结束点坐标,并动态调整矩形的位置和尺寸。mouseup
事件中计算并输出矩形的宽度和高度,然后重置所有变量以便下一次绘制。event.pageX
和 event.pageY
来获取相对于文档的坐标。requestAnimationFrame
来优化渲染。通过这种方式,你可以有效地在JavaScript中获取鼠标绘制的矩形的宽度和高度,并应用于各种实际场景中。
腾讯云GAME-TECH沙龙
云+社区技术沙龙[第6期]
云+社区技术沙龙[第21期]
GAME-TECH
DBTalk技术分享会
腾讯位置服务技术沙龙
Elastic 中国开发者大会
云+未来峰会
云+社区技术沙龙[第9期]
领取专属 10元无门槛券
手把手带您无忧上云