html设置表格嵌套的div随着用鼠标拖动单元格使单元格的宽度增加动态让div的宽度也增加的js原生态代码
时间: 2024-11-15 14:28:28 浏览: 16
JavaScript实现DIV层拖动及动态增加新层的方法
HTML和JavaScript可以结合实现这样的功能。首先,你需要创建一个包含嵌套表格的`<div>`元素,并给每个单元格添加鼠标拖动事件。以下是一个简单的示例,使用了原生的JavaScript:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
.table-responsive {
overflow-x: auto;
}
</style>
</head>
<body>
<div class="table-responsive" id="container">
<div class="table" onmousedown="startDrag(event)">
<!-- 表格内容 -->
<table>
<tr>
<td draggable="true">单元格1</td>
<td draggable="true">单元格2</td>
</tr>
<!-- 更多行... -->
</table>
</div>
</div>
<script>
function startDrag(e) {
e.preventDefault(); // 阻止默认的行为
const cell = e.target; // 获取正在拖动的单元格
const container = document.getElementById('container');
cell.onmousemove = function move(e) { // 移动事件处理
let newWidth = e.clientX - cell.offsetLeft; // 计算新宽度
cell.style.width = `${newWidth}px`;
container.style.minWidth = `${Math.max(cell.offsetWidth, 50)}px`; // 更新容器宽度
};
cell.onmouseup = function endDrag() { // 松开鼠标结束拖动
cell.onmousemove = null;
cell.onmouseup = null;
};
}
// 初始化可能的拖动事件 (比如页面加载完成)
window.onload = function() {
const cells = document.querySelectorAll('.table td[draggable]');
cells.forEach(function(cell) {
cell.addEventListener('mousedown', startDrag);
});
}
</script>
</body>
</html>
```
在这个例子中,当用户开始拖动单元格时,我们阻止了默认的鼠标移动事件,然后计算新的单元格宽度并应用到该单元格上。同时,我们也更新了容器的最小宽度,使其随单元格的拖动而调整。
阅读全文