当前位置: 首页 > news >正文

el-table中控制单列内容多行超出省略及tooltip

业务场景

  1. el-table列中某列要求两行超出才超出省略并悬浮展示
  2. 对悬浮展示的内容要求到达一定字数时截断并添加…

实现方法

  • 如果只需要实现两行才省略无需自定义tooltip,直接覆盖原有认样式
.el-table .cell.el-tooltip {display: -webkit-box;-webkit-box-orient: vertical;line-clamp: 2;-webkit-line-clamp: 2;overflow: hidden;text-overflow: ellipsis;white-space: normal !important;
}
  • 但既需要对表格中的内容进行控制,又需要对悬浮层的内容控制只能在插槽中利用自定义tooltip实现。

如以下:在表格列实现两行超出显示省略号,并在悬浮时展示2000字符截断Tooltip,主要依赖计算动态控制Tooltip的显隐

状态与方法初始化

在Vue组件的<script setup>中定义响应式状态和核心方法:

  • tooltipStates存储每行Tooltip的禁用状态
  • descriptionRefs保存每行DOM元素的引用
  • truncateText函数限制Tooltip内容在2000字符内
  • setDescriptionRef函数管理DOM引用
  • checkTextOverflow函数通过DOM测量判断文本溢出

表格列配置

在ElTable列的render函数中定制单元格内容:

  • 禁用默认Tooltip(showOverflowTooltip: false
  • 使用ElTooltip包裹内容,动态绑定disabled属性
  • 应用多行截断CSS样式(-webkit-line-clamp: 2
  • 绑定ref回调和鼠标移入事件

CSS样式实现

内联应用多行文本截断样式:

display: -webkit-box;
-webkit-line-clamp: 2;//以两行为例
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;

完整代码示例

<script setup>
import { reactive } from 'vue';
import { ElTooltip } from 'element-plus';const tooltipStates = reactive({});
const descriptionRefs = reactive({});const truncateText = (text, limit) => {if (!text) return '';const str = String(text);return str.length <= limit ? str : str.substring(0, limit) + '...';
};const setDescriptionRef = (el, id) => {el ? descriptionRefs[id] = el : delete descriptionRefs[id];
};const checkTextOverflow = (id) => {const element = descriptionRefs[id];if (!element) return;tooltipStates[id] = element.scrollHeight > element.clientHeight;
};const tableColumns = [{label: '内容',showOverflowTooltip: false,render: (scope) => {const rowId = scope.row.id;const originalText = scope.row.content || '';const content = truncateText(originalText, 2000);return (<ElTooltipplacement="top"disabled={!tooltipStates[rowId]}content={content}><divref={(el) => setDescriptionRef(el, rowId)}onMouseenter={() => checkTextOverflow(rowId)}style={{whiteSpace: 'normal',wordBreak: 'break-all',display: '-webkit-box',WebkitLineClamp: 2,WebkitBoxOrient: 'vertical',overflow: 'hidden',textOverflow: 'ellipsis',width: '100%'}}></ElTooltip>);}
}];
</script>

注意事项

  • 确保每行数据有唯一标识(如id),用于状态管理
  • 大量数据时需注意内存泄漏问题,及时清理无用引用
http://www.dtcms.com/a/495264.html

相关文章:

  • 构建企业级跨境电商(Temu)财务数据自动化采集系统
  • B-tree索引像字典查词一样工作?那哪些数据库查询它能加速,哪些不能?
  • C++实现二叉树搜索树
  • 网站开发和美工的区别手机域名注册被骗
  • 做模特的网站python语言编程入门
  • GeeLark 9月功能更新回顾
  • C++---ref-qualifier( / )函数的左右值调用的界定
  • vue3:数组的.includes方法怎么使用
  • 网站建设及网页设计企业宣传片公司
  • 132.MIG IP核中没有512M16的只有512M8的如何解决
  • SwiftUI 布局之美:Padding 让界面呼吸感拉满
  • RHCSA-08文本处理工具
  • JSP XML 数据处理
  • “String到Date转换失败”:深挖@RequestBody的日期坑
  • 分布式事务以及Seata(XA、AT模式)
  • 做网站的 简历标识设计网
  • 平台网站建设意见征求表社区类网站开发
  • 电脑零配件行业MES系统:快速实现全过程信息溯源
  • 基于单片机与上位机的智能宠物喂食管理系统设计
  • 新奇特:黑猫警长的纳米世界,忆阻器与神经网络的智慧
  • 【深度学习新浪潮】LLM 大模型压缩落地实践(2025 版)
  • 神经网络之计算图repeat节点
  • 河北廊坊做网站珠海企业网站设计
  • 网站建设培训 ppt做网站有哪些
  • 【RK3588开发】RKNN库的使用
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 18--测试框架Pytest基础 2--插件和参数化
  • 玩具 网站模板成立一个网站
  • 阿里网站注册阿里云网站怎么建设
  • 【排查实录】Web 页面能打开,服务器能通接口,客户端却访问失败?原因全在这!
  • 【Linux】系统性能排查:解决卡顿问题