色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue自定義拖拽表格列寬

沈立民1年前6瀏覽0評論

在web開發中,表格是常見的展示數據的方式。而表格的列寬通常是由列內容的寬度決定的,這往往無法滿足用戶的需求。有時候,我們需要控制表格的列寬,使得表格展示更加美觀。Vue框架提供了許多自定義組件和指令,可以幫助我們實現自定義拖拽表格列寬。

<table>
<thead>
<tr>
<th v-for="header in headers"
:key="header.key"
:style="{width: header.width + 'px'}"
@mousedown="startDrag($event, header)"
@mousemove="dragging($event, header)"
@mouseup="endDrag">
{{header.title}}
</th>
</tr>
</thead>
<tbody>
<tr v-for="item in data" :key="item.id">
<td v-for="header in headers"
:key="header.key"
:style="{width: header.width + 'px'}">
{{item[header.key]}}
</td>
</tr>
</tbody>
</table>

以上是一個示例模板代碼,我們需要在`th`元素上綁定鼠標事件,以實現列寬拖拽的功能。下面是對應的代碼實現。

<script>
export default {
data() {
return {
isDragging: false, // 是否處于拖拽狀態
startX: 0, // 鼠標按下時的X坐標
startWidth: 0, // 列的寬度在拖拽時會發生變化,需要記錄初始寬度
headers: [ // 表格頭部數據
{key: 'name', title: '姓名', width: 100},
{key: 'age', title: '年齡', width: 50},
{key: 'gender', title: '性別', width: 80},
],
data: [ // 表格數據
{id: 1, name: '小明', age: 18, gender: '男'},
{id: 2, name: '小紅', age: 16, gender: '女'},
{id: 3, name: '小麗', age: 20, gender: '女'},
],
}
},
methods: {
startDrag(event, header) { // 鼠標按下事件
this.isDragging = true
this.startX = event.clientX
this.startWidth = header.width
},
dragging(event, header) { // 鼠標移動事件
if (this.isDragging) {
const delta = event.clientX - this.startX // 計算鼠標移動距離
header.width = this.startWidth + delta // 計算新的列寬度
}
},
endDrag() { // 鼠標松開事件
this.isDragging = false
},
},
}
</script>

以上代碼實現了列寬拖拽的功能,通過修改`header`對象的寬度屬性,實現了表格列寬的可拖拽調整。用戶可以通過拖拽表格列邊緣來修改列寬,達到更好的展示效果。在實際項目中,我們還可以添加一些其它的功能,比如最小列寬、固定表頭等,使得表格更加實用。