js计算字符串在动态宽度容器中的行数

文章介绍了如何使用JavaScript编写一个名为isTextOverflow的方法,该方法用于检测给定字符串是否超过指定容器宽度,通过创建隐藏元素并计算其实际行数来实现文本自动换行和溢出控制。
摘要由CSDN通过智能技术生成

  isTextOverflow(val: string) {

     // val:字符串 this.fixedWidth:容器宽度

    let fixedWidth = this.fixedWidth

    const textElement = document.createElement('div');

    textElement.style.width = `${fixedWidth}px`; // 设置固定宽度  

    textElement.style.whiteSpace = 'spanWidth'; // 使用normal确保文字在需要时自动换行  

    textElement.style.overflowWrap = 'break-word'; // 确保长单词也会在必要时换行  

    textElement.style.position = 'absolute';  

    textElement.style.left = '-9999px';  

    textElement.style.top = '-9999px';  

    textElement.style.visibility = 'hidden';

   // 设置div的内容为传入的字符串,确保换行符被正确处理  

    textElement.innerHTML =val ? val.replace(/\r?\n/g, '<br>') : '' // 将换行符替换为<br>标签

    document.body.appendChild(textElement);

    const lineHeight = parseInt(

      window.getComputedStyle(textElement).lineHeight,

      10

    );

    const actualLines = Math.ceil(textElement.offsetHeight / lineHeight);

    document.body.removeChild(textElement);

    return actualLines > this.maxLines;

  }

获取this.fixedWidth:

给需要获取的元素添加ref,需要在DOM渲染完成后执行

    getSpanWidth(){

       const spanElement = this.$refs.myspan as HTMLElement;

      if (spanElement) {  

        // 获取span的实际宽度  

        this.fixedWidth = spanElement.offsetWidth - 130;

      }

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值