文本的展开与收起

 const getDesc = () => {
    let textNode = textRef.current;
    let originalText = textNode.innerHTML; // 源数据存储变量
    let changeText = textNode.innerHTML; // 计算数据变量
    let textNodeRects = textNode.getClientRects();
    let h = getLength(textNodeRects); // 行数
    while (h > 2) {
      let step = 1;
      changeText = changeText?.slice(0, -step);
      textNode.innerHTML = `${changeText}<span>...</span><span id="open" style="color: #4F5BFF" data-spread="false">展开</span>`;
      h = getLength(textNode.getClientRects());
    }
    window.addEventListener('click', (e: any) => {
      let openNode = document.getElementById('open');
      let packNode = document.getElementById('pack');
      if (openNode?.contains(e.target) || packNode?.contains(e.target)) {
        let state = document.getElementById('open')?.dataset.spread;
        if (state === 'false') {
          textNode.innerHTML = `${originalText}<span id="pack" style="color: #4F5BFF; margin-left: 5px" data-spread="false">收起</span>`;
        } else {
          textNode.innerHTML = `${changeText}<span>...</span><span id="open" style="color: #4F5BFF" data-spread="false">展开</span>`;
        }
      }
      e.stopPropagation();
      e.preventDefault();
    });
  };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值