ElementUI中el-table表格列宽自适应以及封装
在ElementUI中,可以通过设置el-table
的fit
属性来使列宽自适应。同时,可以通过el-table-column
的min-width
属性来设置列的最小宽度。
下面是一个简单的例子,展示了如何使用ElementUI的el-table
组件来实现列宽的自适应,并对组件进行封装以复用代码。
<template>
<el-table
:data="tableData"
fit
style="width: 100%">
<el-table-column
prop="date"
label="日期"
min-width="150">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
min-width="150">
</el-table-column>
<el-table-column
prop="address"
label="地址"
min-width="300">
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '李小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '赵小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '孙小虎',
address: '上海市普陀区金沙江路 1516 弄'
}]
}
}
}
</script>
在这个例子中,fit
属性使得el-table
的列宽度自适应,min-width
属性确保了列宽不会小于指定的最小宽度。
如果要封装这个组件,可以创建一个新的组件文件,如AutoResizeTable.vue
,并将上述代码复制到该文件中,然后在其他组件中引用这个封装的组件。
封装后的组件AutoResizeTable.vue
示例代码:
<template>
<el-table
:data="tableData"
fit
style="width: 100%">
<el-table-column
v-for="column in columns"
:key="column.prop"
:prop="column.prop"
:label="column.label"
:min-width="column.minWidth">
</el-table-column>
</el-table>
</template>
<script>
export default {
props: {
tableData: {
type: Array,
required: true
},
columns: {
type: Array,
required: true,
validator: columns => columns.every(column => 'prop' in column && 'label' in column && 'minWidth' in column)
}
}
}
</script>
在父组件中使用封装的AutoResizeTable
组件:
<template>
<auto-resize-table :table-data="tableData" :columns="columns"></auto-resize-table>
</template>
<script>
import AutoResizeTable from './AutoResizeTable.vue';
export default {
components: {
AutoResizeTable
},
data() {
return {
tableData: [...], // 表格数据
columns: [
{ prop: 'date', label: '日期',
评论已关闭