js和layerjs配合实现的拖拽表格列
时间: 2023-09-15 09:17:28 浏览: 81
可以使用以下步骤实现:
1. 在 HTML 中创建表格,并且每一列的表头都添加一个类名为 "draggable"。
2. 引入 js 文件,使用 jQuery UI 库中的 sortable 方法将表头设置为可拖拽,并且设置其 helper 为 "clone"。
3. 在每一列中添加一个类名为 "column",并且设置其宽度为一个固定值。
4. 引入 layerjs 库,并且使用其 API 中的 resize 方法,将表格设置为可调整大小。
5. 在每一列中添加一个 div 元素作为列的内容容器,并且设置其宽度为 "100%"。
6. 在 CSS 中设置表格的宽度为 "100%",并且将每一列的宽度设置为其内容容器的宽度。
以下是实现的代码示例:
HTML:
```html
<table id="table">
<thead>
<tr>
<th class="draggable">Column 1</th>
<th class="draggable">Column 2</th>
<th class="draggable">Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td><div class="column">Column 1, Row 1</div></td>
<td><div class="column">Column 2, Row 1</div></td>
<td><div class="column">Column 3, Row 1</div></td>
</tr>
<tr>
<td><div class="column">Column 1, Row 2</div></td>
<td><div class="column">Column 2, Row 2</div></td>
<td><div class="column">Column 3, Row 2</div></td>
</tr>
</tbody>
</table>
```
JS:
```javascript
$(function() {
// Make columns draggable
$("#table thead th.draggable").draggable({
helper: "clone",
cursor: "move",
axis: "x",
stop: function(event, ui) {
var index = $(ui.helper).index();
var target = $("#table thead th:eq(" + index + ")");
$("#table thead th.draggable").not(target).each(function() {
var colspan = $(this).attr("colspan") || 1;
$(this).before(target.clone().attr("colspan", colspan));
$(this).remove();
target.before($(this).attr("colspan", colspan));
});
}
});
// Set columns width
$("#table .column").width(100);
// Make table resizable
var table = layerjs(document.getElementById('table'));
table.resize();
});
```
CSS:
```css
#table {
width: 100%;
border-collapse: collapse;
}
#table th,
#table td {
padding: 10px;
border: 1px solid #ddd;
}
#table th.draggable {
cursor: move;
}
#table .column {
width: 100%;
overflow: hidden;
}
```
注意:以上代码只是一个简单的示例,可能需要根据实际情况进行适当的调整和优化。
阅读全文