Element-UI表格在页面缩放时保持响应式布局可以通过以下几种方式实现:
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="姓名" width="20%"></el-table-column>
<el-table-column prop="age" label="年龄" width="15%"></el-table-column>
<!-- 其他列 -->
</el-table>
/* 在小屏幕上调整表格样式 */
@media screen and (max-width: 768px) {
.el-table {
font-size: 12px;
}
.el-table__body-wrapper {
overflow-x: auto;
}
}
<div class="table-container">
<el-table :data="tableData">
<!-- 表格列 -->
</el-table>
</div>
<style>
.table-container {
display: flex;
flex-direction: column;
width: 100%;
}
</style>
<el-table :data="tableData" style="width: 100%" v-if="tableData.length">
<!-- 固定列宽 -->
<el-table-column prop="name" label="姓名" width="180"></el-table-column>
<!-- 其他列 -->
</el-table>
export default {
data() {
return {
tableData: [...],
columnWidth: 180
}
},
mounted() {
this.handleResize()
window.addEventListener('resize', this.handleResize)
},
beforeDestroy() {
window.removeEventListener('resize', this.handleResize)
},
methods: {
handleResize() {
// 根据窗口宽度动态调整列宽
this.columnWidth = window.innerWidth < 768 ? 120 : 180
}
}
}
Element-UI提供了$responsive
工具,可以监听窗口变化:
import { Responsive } from 'element-ui'
export default {
mixins: [Responsive],
responsiveConfig: {
small: {
columnWidth: 120
},
medium: {
columnWidth: 150
},
large: {
columnWidth: 180
}
},
methods: {
responsiveHandler() {
// 根据当前响应式状态更新表格配置
}
}
}
对于小屏幕,可以隐藏非关键列:
export default {
data() {
return {
tableData: [...],
showAllColumns: true
}
},
mounted() {
this.checkScreenSize()
window.addEventListener('resize', this.checkScreenSize)
},
methods: {
checkScreenSize() {
this.showAllColumns = window.innerWidth > 768
}
}
}
v-if
或分页控制渲染数据量通过以上方法,可以有效实现Element-UI表格在不同屏幕尺寸下的响应式布局。