html设置表格随着用鼠标拖动单元格使单元格的宽度增加同时动态让单元格嵌套的div的宽度也增加的js原生态代码
时间: 2024-11-15 11:29:41 浏览: 6
html 表格单元格的宽度和高度的设置方法
HTML和JavaScript可以一起创建这样的动态表格,这里有一个简单的原生JS示例,它会监听单元格的拖拽事件,并调整其相邻的`<div>`宽度:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<style>
table {
border-collapse: collapse;
}
td, div.content {
box-sizing: border-box;
}
</style>
</head>
<body>
<table id="myTable">
<tr>
<td onmousedown="startDrag(event, this)" draggable="true">开始拖动</td>
<td><div class="content"></div></td>
</tr>
</table>
<script>
function startDrag(e, cell) {
e.preventDefault(); // 阻止默认的阻止移动效果
let dragStartWidth = cell.offsetWidth; // 记录起始宽度
let parentDiv = cell.nextElementSibling; // 获取相邻的div
document.addEventListener('mousemove', function move(e) {
if (e.target === cell) { // 只处理在单元格内的拖动
let newWidth = Math.max(dragStartWidth, e.clientX - cell.offsetLeft); // 新宽度不能小于起始宽度
cell.style.width = `${newWidth}px`;
parentDiv.style.width = `${newWidth}px`; // 更新div宽度
}
});
document.addEventListener('mouseup', function endDrag() {
document.removeEventListener('mousemove', move);
document.removeEventListener('mouseup', endDrag);
});
}
</script>
</body>
</html>
```
在这个例子中,当用户点击并拖动单元格时,`startDrag`函数会被触发,然后添加鼠标移动和释放事件处理器。当你拖动单元格时,`mousemove`事件会使单元格和其内部的`div.content`宽度随鼠标位置变化而改变。
阅读全文