Element Ui el-table列表中的tooltip内容过长超出屏幕换行显示

elementui-table组件列表中的tooltip内容过长超出屏幕换行显示内容,虽然el-table列属性中带的有show-overflow-tooltip,可以设置内容超出列宽度显示为…,且有tooltip提示全部内容,但是内容过多时,提示会超出屏幕: 只有全屏才能展示 很不友好
在这里插入图片描述
el-table组件自带的属性无法修改为自动换行,也无法控制弹框的宽度太长了不友好
解决方法:

<el-table-column v-if="value.prop == 'remark'" :key="index" :prop="value.prop" :label="value.label"
          :width="value.width || 220">
          <template slot-scope="scope">
            <el-tooltip placement="top">
              <div slot="content" class="text_content">
                {{ scope.row.remark }}
              </div>
              <div class="text_els">
                {{ scope.row.remark }}
              </div>
            </el-tooltip>
          </template>
        </el-table-column>

css
然后设置显示内容样式,宽度为多少就是tooltip多宽时换行,text_content为tip的样式,text_els为表格里的样式

  .text_content {
    display: block;
    max-width: 700px;
    white-space: wrap;
    font-size: 14px;
  }
  .text_els {
    width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }

效果
在这里插入图片描述

### 实现 Element UIel-table 整行触发 el-tooltip 的方法 在 Element UI 中,`el-table` 是一个强大的表格组件,而 `el-tooltip` 则用于显示提示信息。为了实现整行触发 `el-tooltip` 的效果,可以通过自定义表格单元格的渲染逻辑来完成。以下是具体的实现方式: #### 1. 使用 `slot-scope` 自定义单元格内容 通过 `el-table-column` 的 `scoped-slot` 功能,可以为每个单元格设置自定义内容,并将 `el-tooltip` 包裹在单元格内容外部[^2]。 ```vue <template> <el-table :data="tableData" @cell-mouse-enter="handleCellEnter" @cell-mouse-leave="handleCellLeave"> <el-table-column v-for="(column, index) in tableLabel" :key="index" :label="column.label" :prop="column.prop"> <template slot-scope="scope"> <el-tooltip :content="tooltipContent(scope.row)" placement="top" :visible-arrow="false" :open-delay="300"> <span>{{ scope.row[column.prop] }}</span> </el-tooltip> </template> </el-table-column> </el-table> </template> ``` #### 2. 动态设置 Tooltip 内容 通过 `tooltipContent` 方法动态生成每一行的提示信息。可以根据需求拼接整行数据作为提示内容[^3]。 ```javascript export default { data() { return { tableData: [ { name: '张三', age: 25, address: '北京市' }, { name: '李四', age: 30, address: '上海市' } ], tableLabel: [ { label: '姓名', prop: 'name' }, { label: '年龄', prop: 'age' }, { label: '地址', prop: 'address' } ], currentTooltipRow: null }; }, methods: { tooltipContent(row) { return `姓名:${row.name},年龄:${row.age},地址:${row.address}`; }, handleCellEnter(row) { this.currentTooltipRow = row; }, handleCellLeave() { this.currentTooltipRow = null; } } }; ``` #### 3. 监听鼠标事件 为了实现整行触发的效果,需要监听 `@cell-mouse-enter` 和 `@cell-mouse-leave` 事件。当鼠标进入某一行时,动态更新当前行的数据,并将其传递给 `el-tooltip` 的 `content` 属性[^4]。 #### 4. 样式优化 为了确保用户体验良好,可以通过 CSS 调整 `el-tooltip` 的样式,例如设置延迟显示时间、隐藏箭头等[^5]。 ```css /* 隐藏 Tooltip 箭头 */ .el-tooltip__popper[x-placement^="top"] .popper__arrow, .el-tooltip__popper[x-placement^="top"] .popper__arrow::after { display: none; } ``` ### 注意事项 - 如果表格数据量较大,建议优化性能,避免频繁触发事件导致页面卡顿。 - 可以根据实际需求调整 `el-tooltip` 的 `placement` 属性(如 top、bottom、left、right)以适应不同的布局场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值