必须为需省略的列设置 minWidth 或 width,再配合 templet 中的 layui-table-ellipsis 类及对应 CSS(display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap),并为表头添加 white-space:nowrap 等样式以对齐。
只对某一列启用省略号,别动全局样式
直接改 .layui-table-cell 会波及所有列,实际项目里往往只有「描述」「备注」「标题」这类字段需要省略,其他列(如操作按钮、状态标签)反而要保持原样。最稳妥的方式是用 templet 配合自定义 class。
在 cols 配置中给目标列加上:{field: 'desc', title: '描述', minWidth: 150, templet: '<div class="layui-table-ellipsis">{{d.desc}}</div>'}
- 必须设
minWidth(或width),否则容器没固定宽度,text-overflow: ellipsis不触发 -
templet字符串里用<div>包裹,不能用<span>—— 后者默认inline,不支持text-overflow - 不要在
templet里写onmouseenter行内事件,后续绑定 tooltip 会重复注册
配套 CSS 必须包含这四个声明
光写 templet 不生效,还得补上对应 class 的 CSS 规则:
.layui-table-ellipsis {
display: inline-block;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
-
display: inline-block是关键 ——table-cell原生不支持text-overflow,必须转成块级上下文 -
max-width: 100%确保它不会撑破父容器,同时让overflow有作用边界 - 别加
!important,只要你的 CSS 文件在layui.css之后加载,且选择器带 class 前缀,权重就足够
表头文字也要同步处理,否则对不齐
上面的 templet 只作用于 tbody 单元格,thead 里的 th 还是会换行。如果列宽较窄,表头文字挤成两行,和下面单行内容视觉错位。
给表格容器加个 class,比如 class="layui-table-nowrap-header",再加这条 CSS:
.layui-table-nowrap-header thead th {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
- 同样依赖列已设
minWidth,否则th宽度由内容撑开,省略号无效 - 不用改
display——th是table-cell,但现代浏览器(Chrome/Firefox/Edge)对它的text-overflow支持已稳定;IE11 就别强求了 - 别给
th加display: block,会破坏 table 布局,导致列错位
鼠标悬停显示完整内容,推荐用原生 title
想让用户 hover 看全量文本,最轻量的做法是在 templet 里直接加 title 属性:
templet: '<div class="layui-table-ellipsis" title="{{d.desc}}">{{d.desc}}</div>'
- 移动端点一下就能看全,兼容性好,不用额外 JS
- 如果内容含 HTML 标签或需要样式美化,才考虑
layer.tips,但得手动管理销毁:mouseleave时调layer.closeAll('tips') - 别用
lay-title—— 它只支持表头,不支持单元格
真正容易被忽略的是:minWidth 不只是“建议宽度”,它是触发省略号的硬性前提。哪怕你写了全套 CSS 和 templet,只要这一列没设 minWidth 或 width,省略号就永远不会出现。


















