在JavaScript中实现表格列宽的拖动调整,通常涉及到以下几个基础概念:
以下是一个简单的JavaScript示例,展示如何实现表格列宽的拖动调整:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Drag to Resize Table Columns</title>
<style>
table { width: 100%; border-collapse: collapse; }
th, td { border: 1px solid #ddd; padding: 8px; }
.resizer { position: absolute; top: 0; right: 0; width: 5px; height: 100%; cursor: col-resize; }
</style>
</head>
<body>
<table id="myTable">
<thead>
<tr>
<th>Header 1 <span class="resizer"></span></th>
<th>Header 2 <span class="resizer"></span></th>
<th>Header 3 <span class="resizer"></span></th>
</tr>
</thead>
<tbody>
<!-- Table rows here -->
</tbody>
</table>
<script>
document.addEventListener('DOMContentLoaded', function() {
const table = document.getElementById('myTable');
let resizingColumn = null;
let startX, startWidth;
table.querySelectorAll('.resizer').forEach(resizer => {
resizer.addEventListener('mousedown', function(e) {
resizingColumn = e.target.parentElement;
startX = e.pageX;
startWidth = parseInt(document.defaultView.getComputedStyle(resizingColumn).width, 10);
document.addEventListener('mousemove', resizeColumn);
document.addEventListener('mouseup', stopResize);
});
});
function resizeColumn(e) {
const offsetX = e.pageX - startX;
resizingColumn.style.width = (startWidth + offsetX) + 'px';
}
function stopResize() {
document.removeEventListener('mousemove', resizeColumn);
document.removeEventListener('mouseup', stopResize);
resizingColumn = null;
}
});
</script>
</body>
</html>
requestAnimationFrame
来优化重绘和回流。通过以上步骤和示例代码,可以实现一个基本的表格列宽拖动调整功能,并针对常见问题提供了解决方案。
没有搜到相关的文章