html 表格高度调整,elementui中el-table修改表头高度和行高度(设置最低高度)

本文介绍了如何通过修改ElementUI的el-table组件样式,实现表格高度最小化,以展示更多数据。作者发现即使使用了官方提供的属性也无法达到理想效果,通过审查元素发现表格存在默认内边距padding。通过设置深度选择器移除th和td的padding,可以将表格高度降至最低。若感觉过矮,可进一步调整其他属性。示例代码展示了具体实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

elementui提供的el-table其实挺不错,不过有时候可能还需要对其进行样式的修改。官方也提供了相应的表格属性,方便我们去修改对应的样式,但是有的时候可能会少了点什么。

比如:想要把表格的高度都尽可能设置小点,这样的话,页面就可以展示更多行更多条数据了。但是单单使用下图中的表格的属性,发现没法让表格的高度设置最小

8f5fff9eb5e93daea296685074d41599.png

解决方案

打开F12审查元素,会发现el-table默认带有内边距padding。把这个padding置为0就可以使其变成最矮的高度了。去掉padding就会发现表格的高度就是表格中文字内容撑开的高度。这个的确是最矮的了,如果觉得过于矮了,可以通过上图中的一些属性再去设置高点。

原始图(审查元素)

3a4c72df4cfda10d593e48b177a6063e.png上图中只审查了表头th,至于表格行td大家自己也可以审查看看

去除padding效果图

最矮的图

32f27d2fcfa2a276873d68fd385c29ef.png是不是很矮,哈哈。觉得矮可以再设置高一点

代码附上

:data="tableData"

border

style="width: 100%"

>

export default {

name: "app",

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 弄",

},

],

};

},

};

看css部分

#app {

width: 100%;

height: 100%;

.el-table {

// 看这里!!!!!!!!!!!!!!!!!!!!!!!!!!!!

// 深度选择器,去除默认的padding

/deep/ th {

padding: 0 ;

}

/deep/ td {

padding: 0 ;

}

}

}

总结

先设置高度为最低,觉得低过头了,再调高一点

### 实现多级表头的选择功能 为了在 `ElementUI` 的 `el-table` 组件中实现多级表头的选择功能,可以采用自定义渲染的方式处理每一层表头中的复选框逻辑。由于默认情况下 `el-table` 不支持直接设置多级表头的勾选项,因此需要通过组合多个 `<el-table-column>` 来模拟这一效果。 对于每个多级子项而言,在其对应的 `<el-table-column>` 中加入 `type="selection"` 属性来创建选择器,并确保这些列具有唯一的 `prop` 或者其他标识符以便区分不同级别的选择状态[^1]。 下面是一个简单的例子展示如何构建一个多级表头并为其添加全选/取消全选的功能: ```html <template> <div class="app-container"> <!-- 表格 --> <el-table ref="multipleTable" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange"> <!-- 多级表头部分 --> <el-table-column align="center" fixed> <template slot="header"> <el-checkbox v-model="selectAllLevelOne"></el-checkbox> </template> <el-table-column type="selection" width="55"/> </el-table-column> <el-table-column label="一级分类A" align="center"> <template slot="header" slot-scope="{ column }"> <span>{{ column.label }}</span> <el-checkbox v-if="!selectAllLevelTwo[column.id]" @change="(val) => handleSelectAll(val, column.id)"> {{ selectAllLevelTwo[column.id] ? '已选' : '未选'}} </el-checkbox> </template> <el-table-column prop="aSubItem1" label="二级-A-1" /> <el-table-column prop="aSubItem2" label="二级-A-2" > <template slot="header" slot-scope="{ column }"> <span>{{ column.label }}</span> <el-checkbox v-model="selectMap['aSubItem2']">全部</el-checkbox> </template> <el-table-column prop="subOfASubItem2_1" label="三级-A-2-1" /> <el-table-column prop="subOfASubItem2_2" label="三级-A-2-2" /> </el-table-column> </el-table-column> <!-- 更多的一级栏目... --> </el-table> </div> </template> <script> export default { data() { return { tableData: [], // 数据列表 selectAllLevelOne: false, selectAllLevelTwo: {}, selectMap: {} }; }, methods: { toggleSelection(rows) { if (rows) { rows.forEach(row => this.$refs.multipleTable.toggleRowSelection(row)); } }, handleSelectionChange(selection) { console.log('当前选择:', selection); let levelOneSelectedCount = 0; let totalRows = this.tableData.length; Object.keys(this.selectAllLevelTwo).forEach(key => { const subItemsChecked = !this.selectMap[key].some(item => !item.checked); this.$set(this.selectAllLevelTwo, key, subItemsChecked); if(subItemsChecked){ ++levelOneSelectedCount; } }); this.selectAllLevelOne = levelOneSelectedCount === Object.keys(this.selectAllLevelTwo).length && levelOneSelectedCount !== 0; }, handleSelectAll(checked, id) { this.$nextTick(() => { this.$set(this.selectMap[id], checked); this.handleSelectionChange(); }); } } }; </script> ``` 此代码片段展示了如何利用 Vue.js Element UI 创建带有可选多级表头表格结构。注意这里简化了一些细节以保持清晰度;实际应用时可能还需要考虑更多边界情况以及性能优化等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值