antd table 使用的列使用 ellipsis: true 自动省略属性 + Tooltip 导致位置弹窗错位

antd table 使用的列使用 ellipsis: true 自动省略属性 + Tooltip 导致位置弹窗错位

复现示例

具体现象

在这里插入图片描述

  1. 使用 antdtableellipsis: true 实现自动省略
  2. 展示内容由于被省略需要通过 tooltip 查看全部
  3. tooltip 并不在对应列的统一位置上,而是根据长度不同位置不同,导致出现在其他列上的现象

问题原因

在这里插入图片描述
使用 ellipsis: true 时,列中 span 的宽度为实际宽度只是视觉上进行的省略操作,导致 tooltip 按照上述宽度进行居中显示判断,造成显示在其他列的结果

解决办法

  1. tooltip 展示更改为居左,即设置 placement="topLeft" 可以保证 tooltip 在于其位置,不会错位到其他类
  2. tooltip 中使用 div 包裹(不能是span),并自行实现超长自动省略样式,具体如下:
// 超长自动省略样式
const ellipsisStyle = {
	overflow: 'hidden',
    whiteSpace: 'nowrap',
    textOverflow: 'ellipsis',
    width: '150px',
}
// 使用 ellipsis: true 写法
{
    title: "姓名",
    dataIndex: "name",
    ellipsis: true,
    width: 200,
    render: (name) => <Tooltip title={name}>{name}</Tooltip>
},
// 使用 div 自行实现省略样式
{
    title: "姓名",
    dataIndex: "name",
    ellipsis: true,
    width: 200,
    render: (name) => <Tooltip title={name}><div style={ellipsisStyle}>{name}</div></Tooltip>
},

在这里插入图片描述
使用 方法2 对应列宽度如上图所示,可以保证 tooltip 不会错位

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值