el-table中el-table-column下的操作切换class样式

这篇博客介绍了如何在网页表格设计中,当操作按钮超过3个时,将它们整合到'更多'菜单中。点击'更多'会展示按钮,再次点击则隐藏,同时处理多个行的展开与关闭状态。文章通过HTML、CSS和JavaScript代码展示了实现这一功能的完整示例,并讨论了交互逻辑和状态管理。

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

 需求:用操作按钮太多;设计这边想如果按钮大于3个就把它放在更多中;如果点击更多;就向左出现;再点击就隐藏,如果当前row为展开又点其它row的更多 ;就把这个展开的关闭箭头恢复成向左显示

代码:

 el-table结合el-popover弹出框

html:

   <el-popover
                  placement="left-end"
                  width="200"
                  trigger="click"
                  popper-class="xk-flex-popover"
                  :offset="-15"
                  :visible-arrow="false"
                  @show="handleShow(scope.$index)"
                  @hide="handleHide(scope.$index)"
                >
                  <!-- <transition name="slide-fade">  v-if="scope.$index == isRotateIndex"-->
                  <div>
                    <el-button
                      type="text"
                      size="mini"
                      @click="handleEditReport(scope.row)
### el-table-column 的使用方法 `el-table-column` 是 Element UI 中用于定义 `el-table` 表格列的核心组件,支持数据绑定、条件渲染、自定义渲染等多种功能,能够灵活地满足不同的表格展示需求。 #### 1. 基础用法 最简单的用法是直接绑定 `prop` 和 `label`,用于展示字段名和对应的列标题: ```vue <el-table :data="tableData"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table> ``` #### 2. 条件渲染与列顺序控制 在动态表格中,可以通过 `v-if` 控制列的显示与隐藏。由于 `v-if` 会移除或插入 DOM 元素,可能导致列顺序错乱的问题,解决方法是为每个 `el-table-column` 添加唯一的 `key` 属性,确保 Vue 正确识别每个列的位置变化: ```vue <el-table :data="tableData"> <el-table-column v-if="showName" prop="name" label="姓名" :key="1"></el-table-column> <el-table-column v-if="showAge" prop="age" label="年龄" :key="2"></el-table-column> </el-table> ``` 为避免重复的 `key` 值,也可以使用随机数生成唯一的 `key`,确保列切换时重新渲染: ```vue :prop="age" :key="Math.random()" ``` 该方式可有效防止列错位问题 [^1]。 #### 3. 自定义内容渲染 `el-table-column` 支持通过插槽自定义内容,例如根据值显示不同的标签或样式: ```vue <el-table-column label="状态" prop="status"> <template #default="{ row }"> <el-tag v-if="row.status === '1'" type="danger">未开始</el-tag> <el-tag v-else-if="row.status === '2'" type="warning">进行中</el-tag> <el-tag v-else type="success">已完成</el-tag> </template> </el-table-column> ``` 此方法结合 `v-if` 和 `el-tag` 可实现状态值的语义化展示 [^3]。 #### 4. 格式化文本与换行处理 `el-table-column` 也支持使用 `formatter` 属性对数据进行格式化输出,适用于简单的文本处理: ```vue <el-table-column prop="date" label="日期" :formatter="(row) => formatDate(row.date)" ></el-table-column> ``` 若需实现列标题的换行显示,可通过 `render-header` 自定义渲染函数实现: ```vue <el-table-column :render-header="renderHeader" label="我要/换行" prop="xx" width="130" ></el-table-column> ``` 在 `methods` 中定义 `renderHeader` 函数实现换行效果: ```js methods: { renderHeader(h, { column }) { return h('div', { style: { whiteSpace: 'pre-line' } }, column.label.split('/')) } } ``` 这种方式可实现标题的多行显示 [^4]。 #### 5. 样式控制与高亮 通过作用域插槽可以对特定行或单元格进行样式控制。例如,对特定值应用背景色或字体样式: ```vue <el-table-column prop="xh" label="序号"> <template #default="{ row }"> <i v-if="row.xh === '1' || row.xh === '2' || row.xh === '3'" class="back">{{ row.xh }}</i> <i v-else>{{ row.xh }}</i> </template> </el-table-column> ``` 在样式部分定义 `.back` 类,实现渐变背景和圆角样式: ```css .back { background: linear-gradient(225deg, #9185FF 0%, #6392FF 100%); font-size: 10px; width: 20px; height: 20px; line-height: 20px; border-radius: 15px; color: #fff; } ``` 该方式可以实现基于值的视觉高亮效果 [^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周家大小姐.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值