table表格js简单操作隐藏与显示出现结构错乱解决方法

本文详细解析了 CSS 中 display 属性对于表格元素的各种表现形式,包括 table、table-row-group、table-cell 等,并强调了在 JavaScript 操作中正确使用这些属性的重要性。

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


未经允许,不得转载!

水平有限,欢迎指正、交流!


table表格js简单操作隐藏与显示出现结构错乱,开始不自觉的写成display:block和none之前切换,奈何。。。。。


一、CSS display属性的表格相关属性:

table    此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
table-row-group    此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
table-header-group    此元素会作为一个或多个行的分组来显示(类似 <thead>)。
table-footer-group    此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
table-row    此元素会作为一个表格行显示(类似 <tr>)。
table-column-group    此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
table-column    此元素会作为一个单元格列显示(类似 <col>)
table-cell    此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
table-caption    此元素会作为一个表格标题显示(类似 <caption>)

block    此元素将显示为块级元素,此元素前后会带有换行符。

none    此元素隐藏元素


其实犯了一个很低级的错误,表格table显示怎么能block呢,这是display的表格呀,所以在显示的时候tr显示属性改成table就好啦!!


仔细,用心,,,写下来警醒自己!!


希望路过的你有一点点帮助!

### el-table 嵌套展开表格右列固定显示错乱解决方案 在使用 `el-table` 实现嵌套展开表格时,若启用了 `fixed="right"` 的列,可能会出现固定列在展开行时显示错乱的问题。该问题通常表现为展开行的内容固定列重叠、布局错位,或者固定列的位置不正确。 #### 1. 设置 `row-key` 以确保数据结构稳定 在嵌套展开表格中,必须为 `el-table` 设置 `row-key` 属性,以确保每行数据具有唯一标识。这是 Element Plus 在处理展开行、树形数据和固定列时的重要机制之一。若未设置 `row-key`,可能导致布局计算错误,进而影响固定列的显示[^1]。 ```html <el-table :data="tableData" row-key="id"> <!-- 展开列 --> <el-table-column type="expand"> <template #default="{ row }"> <!-- 嵌套表格 --> <el-table :data="row.children" row-key="id"> <!-- 嵌套列定义 --> </el-table> </template> </el-table-column> <!-- 普通列 --> <el-table-column prop="name" label="Name"></el-table-column> <!-- 固定列 --> <el-table-column prop="action" label="Action" fixed="right"></el-table-column> </el-table> ``` #### 2. 为嵌套表格设置 `row-key` 和 `max-height` 嵌套表格也应设置 `row-key`,以确保其内部展开固定列机制正常运行。此外,为嵌套表格设置 `max-height` 可避免其影响外层表格的布局结构,从而防止固定列错位[^1]。 ```html <el-table :data="row.children" row-key="id" max-height="200px"> <!-- 嵌套列定义 --> </el-table> ``` #### 3. 避免外层表格嵌套表格的 `row-key` 冲突 确保外层嵌套表格的 `row-key` 字段不冲突,例如外层使用 `id`,嵌套使用 `childId`,可减少布局计算时的干扰[^1]。 ```html <el-table :data="tableData" row-key="id"> <el-table-column type="expand"> <template #default="{ row }"> <el-table :data="row.children" row-key="childId"> <!-- 嵌套列定义 --> </el-table> </template> </el-table-column> </el-table> ``` #### 4. 使用 `doLayout` 方法手动触发布局更新 在某些异步加载嵌套数据的场景中,可能需要手动调用 `doLayout` 方法,以确保固定列在数据更新后正确渲染[^1]。 ```javascript methods: { handleExpandChange(row, expandedRows) { if (expandedRows.includes(row)) { this.loadChildrenData(row).then(() => { this.$nextTick(() => { this.$refs.nestedTable.doLayout(); // 手动触发布局更新 }); }); } } } ``` #### 5. 确保 CSS 样式兼容性 在某些浏览器中,固定列的 `position: sticky` 样式可能嵌套表格的样式冲突。应确保自定义 CSS 不影响 `el-table` 的布局逻辑,必要时可使用 `z-index` 调整层级,避免固定列被覆盖[^1]。 ```css .el-table__fixed-right { z-index: 100; } ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值