JavaScript 鼠标拖拽改变大小是一种常见的交互功能,允许用户通过拖动元素的边缘来调整其尺寸。这种功能通常用于网页布局、图像编辑器、地图应用等场景。
以下是一个简单的 JavaScript 示例,展示如何实现一个固定方向的拖拽改变大小功能:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Drag to Resize</title>
<style>
#resizable {
width: 200px;
height: 200px;
background-color: lightblue;
position: absolute;
top: 50px;
left: 50px;
}
.handle {
width: 10px;
height: 200px;
background-color: blue;
cursor: ew-resize;
position: absolute;
top: 0;
right: 0;
}
</style>
</head>
<body>
<div id="resizable">
<div class="handle"></div>
</div>
<script>
const resizable = document.getElementById('resizable');
const handle = document.querySelector('.handle');
let isResizing = false;
let startX, startWidth;
handle.addEventListener('mousedown', (e) => {
isResizing = true;
startX = e.clientX;
startWidth = parseInt(document.defaultView.getComputedStyle(resizable).width, 10);
});
document.addEventListener('mousemove', (e) => {
if (!isResizing) return;
const offsetX = e.clientX - startX;
resizable.style.width = (startWidth + offsetX) + 'px';
});
document.addEventListener('mouseup', () => {
isResizing = false;
});
</script>
</body>
</html>
mousemove
事件中正确计算偏移量,并使用 requestAnimationFrame
优化性能。通过以上方法和示例代码,可以实现一个基本的拖拽改变大小功能,并解决常见的交互问题。
领取专属 10元无门槛券
手把手带您无忧上云