解决table内容超常溢出时tooltip位置偏移的问题

问题:表格数据return的时候文字过长导致悬浮框偏移到表格其他列上去了

<div style="width: 100px;" data-toggle="tooltip" data-placement="top" title="${displayValue}"> ${ displayValue }</div>

 解决思路:<div style="width: 100px;" data-toggle="tooltip" data-placement="top" title="${displayValue}">${ displayValue.substring(0, 5) + "..." }</div>
这部分截取部分数据(考虑中英文字符),超出...

      {
        field: "tslx",
        title: "投诉类型",
        cellStyle: formatTableUnit,
        formatter: function (value, row, index) {
          const maxChineseLength = 5; // 最大中文字符数
          const maxEnglishLength = 8; // 最大英文字符数
          const displayValue = value ? value : "——";

          // 计算字节长度
          function getByteLength(str) {
            let byteLength = 0;
            for (let i = 0; i < str.length; i++) {
              const char = str.charAt(i);
              byteLength += char.match(/[^\x00-\x80]/) ? 2 : 1; // 中文字符占用2字节,英文占1字节
            }
            return byteLength;
          }

          // 截取显示字符串
          function truncateString(str) {
            let byteLength = 0;
            let truncatedStr = "";
            for (let i = 0; i < str.length; i++) {
              const char = str.charAt(i);
              const charLength = char.match(/[^\x00-\x80]/) ? 2 : 1; // 中文字符占用2字节,英文占1字节
              if (
                byteLength + charLength > maxChineseLength * 2 &&
                char.match(/[^\x00-\x80]/)
              ) {
                truncatedStr += "...";
                break;
              } else if (byteLength + charLength > maxEnglishLength) {
                truncatedStr += "...";
                break;
              }
              byteLength += charLength;
              truncatedStr += char;
            }
            return truncatedStr;
          }

          // 判断是否需要截取
          const truncatedValue =
            getByteLength(displayValue) > maxChineseLength * 2 ||
            getByteLength(displayValue) > maxEnglishLength
              ? truncateString(displayValue)
              : displayValue;

          return `<div style="width: 100px;" data-toggle="tooltip" data-placement="top" title="${displayValue}">${truncatedValue}</div>`;
        },
      },

 

上述代码较复杂,可以直接截取几个字符然后return

 

在html文件的css区加上这个可以改提示框的最大宽度

    .tooltip-inner{ max-width:900px!important; }
posted @ 2024-11-14 17:46  .Tik  阅读(5)  评论(0编辑  收藏  举报