最近项目中遇到一个列较多的表格,需要里面的内容根据屏幕宽度自适应,每一列最多显示2行(有些情况下最多显示一行),超出的部分用...,并且鼠标移上去用ToolTip显示全部
如果是简单的单行显示不下就用...并且Tooltip提示,自带的就可以实现了:
var columns = [
{
title: '仪器型号',
key: 'model',
ellipsis: true,//超出用...
tooltip: true,//鼠标移上去Tooltip提示
minWidth: 150
}
]
但是很多情况下没有这么简单,比如
- 这一行的内容特别多,这个时候默认的Tooltip就显示不全
- 这一行本身是用render函数渲染的,这个时候就不起作用
- 客户需求是最多显示2行,超过2行才...,这个时候默认也无法实现
经过一番研究,自己实现了这些功能,特此分享:
var columns = [{ title: '仪器名称', minWidth: 180, //下面这两个去掉 //ellipsis: true, //超出用... //tooltip: true, //鼠标移上去Tooltip提示 key: 'equipName', sortable: 'custom', render: function(h, params) { return toolTipLink(h, 1, params.row.equipName, "../main/equip?ml=702&no=" + params.row.equipNo); } }, var columns = [{ title: '仪器型号', key: 'model', //下面这两个去掉 //ellipsis: true, //超出用... //tooltip: true, //鼠标移上去Tooltip提示 minWidth: 150, render: function(h, params) { return toolTip(h, 2, params.row.model) } }] ]
下面介绍toolTipLink
和toolTip
这两个函数,因为很多地方用到,所以我提取出来作为公共函数了,toolTipLink
是render出超链接的函数 toolTip
是普通的文本
//render出超链接的函数 //lines最多显示多少行 content内容 function toolTip(h, lines, content) { return h('Tooltip', { props: { placement: 'bottom-start', transfer: true } }, [ h('span', { style: { textOverflow: 'ellipsis', whiteSpace: 'normal',overflow: 'hidden',display: '-webkit-box', webkitBoxOrient:'vertical', webkitLineClamp: lines+'' } }, content), h('span', { slot: 'content', style: { whiteSpace: 'normal', wordBreak: 'break-all' } }, content) ]) } //render出超链接的函数 //lines最多显示多少行 content内容 url链接地址 function toolTipLink(h, lines, content, url) { return h('Tooltip', { props: { placement: 'bottom-start', transfer: true, content: content} }, [ h("a", { domProps: { href: url }, style: { textOverflow: 'ellipsis', whiteSpace: 'normal',overflow: 'hidden',display: '-webkit-box', webkitBoxOrient:'vertical', webkitLineClamp: lines+'' } }, content) ]) }
附上效果图:
文章评论