如何实现前端在鼠标按下拖动改变标签宽度
时间: 2023-12-26 14:03:25 浏览: 79
jQuery实现鼠标可拖动调整表格列宽度
可以通过监听鼠标按下、移动和松开事件,计算鼠标移动的距离并根据距离改变标签的宽度来实现。具体实现步骤如下:
1. 给需要改变宽度的标签添加一个类名或 ID,方便后面的 DOM 操作。
2. 监听鼠标按下事件,在事件处理函数中记录鼠标按下时的位置和标签的初始宽度。
3. 监听鼠标移动事件,在事件处理函数中计算鼠标移动的距离,并根据距离改变标签的宽度。
4. 监听鼠标松开事件,在事件处理函数中清除记录的数据。
以下是一个简单的示例代码:
```html
<style>
.resizeable {
width: 100px;
background-color: #eee;
padding: 10px;
margin: 10px;
cursor: ew-resize;
}
</style>
<div class="resizeable" id="myDiv">可拖动改变宽度</div>
<script>
const div = document.querySelector('#myDiv');
let startX, startWidth;
div.addEventListener('mousedown', (e) => {
startX = e.clientX;
startWidth = parseInt(document.defaultView.getComputedStyle(div).width, 10);
document.addEventListener('mousemove', resize);
document.addEventListener('mouseup', stopResize);
});
const resize = (e) => {
const width = startWidth + e.clientX - startX;
div.style.width = `${width}px`;
};
const stopResize = () => {
document.removeEventListener('mousemove', resize);
document.removeEventListener('mouseup', stopResize);
};
</script>
```
在示例中,我们给需要改变宽度的标签添加了一个类名 `resizeable`,并监听了鼠标按下、移动和松开事件,通过计算鼠标移动的距离来改变标签的宽度。注意,在拖动时需要改变标签的 `width` 样式属性,并以像素为单位设置新的宽度值。
阅读全文