列表中,js控制内容超出三行显示省略号并支持展开

问题描述

提示:这里描述项目中遇到的问题:

列表循环展示信息,超出三行需要显示省略号,并支持展开收起。



原因分析:

循环数组获取信息,创建span元素,再模拟真实文字的css情况,利用getBoundingClientRect()获取元素高度,判断与三行文字高度的大小,小于正常显示,大于就动态添加class实现超出显示省略号,并且显示下拉箭头

//循环列表数组 获取信息
arr.forEach((item) => {
    //创建span元素
    const dom = document.createElement('span');
    //模拟显示情况
    dom.style.display = 'inline-block';
    dom.style.lineHeight = '22px';
    dom.style.width = '632px';
    dom.style.fontSize = '14px';
    //需要添加break-word 不然纯数字 英文不会换行
    dom.style.wordBreak = 'break-word'
    //将文字 添加到span中
    dom.textContent = item.content;
    //将span添加到body中(会有点小坑)
    document.body.appendChild(dom);
    // js获取span高度
    const height = dom.getBoundingClientRect().height;
    dom.remove();
    //大于三排时
    if (height > 66) {//行高22  3行就是66
       this.$set(item, 'show', true);
       this.$set(item, 'showArrow', true);
    }
});

小坑:

刚开始我还没有设置span宽度,准备获取了宽度再和三倍真实宽度对比,一般开发过程中都打开了F12,我一般放右侧,导致body宽度被压缩,span添加到body后,自动换行了,导致判断怎么都不出现省略号, dom.remove()了,无法查找bug。

正常使用不会出现问题,后面还是设置了宽模拟了真的dom的情况,js获取高度去判断的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值