You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按指定字符数截断产品描述并添加省略号?

按字符数截断产品描述并显示省略号

你需要按指定字符数截断带HTML格式的产品描述,当前用-webkit-line-clamp的CSS方案只能按行数截断,无法精准控制字符数,以下是可行的解决方法:

步骤1:提取纯文本并编写截断函数

原描述包含HTML标签,直接截断会破坏标签结构,需先提取纯文本再处理:

// 提取HTML中的纯文本
function getPlainText(html) {
  const tempDiv = document.createElement('div');
  tempDiv.innerHTML = html;
  return tempDiv.textContent || tempDiv.innerText || '';
}

// 按字符数截断文本,超出部分加省略号
function truncateText(text, maxLength) {
  if (text.length <= maxLength) return text;
  return text.substring(0, maxLength) + '...';
}

步骤2:修改setDescricao方法

保存完整HTML内容,同时生成截断后的文本内容:

setDescricao() {
  const fullHtml = this.item.item_linkWeb?.linkWeb.descricaoHtml || '';
  const plainText = getPlainText(fullHtml);
  // 自定义最大截断字符数,示例设为100
  const truncatedText = truncateText(plainText, 100);
  
  // 把截断后的文本转为基础HTML格式
  const truncatedHtml = `<p>${truncatedText}</p>`;
  
  const descricaoEl = document.getElementById('descricao');
  descricaoEl.innerHTML = truncatedHtml;
  // 将完整内容存入元素自定义属性,用于展开功能
  descricaoEl.dataset.fullHtml = fullHtml;
}

步骤3:修改展开按钮的rollDown方法

实现截断/完整内容的切换逻辑:

rollDown() {
  const descricaoEl = document.getElementById('descricao');
  const toggleBtn = this;
  const isTruncated = descricaoEl.innerHTML !== descricaoEl.dataset.fullHtml;
  
  if (isTruncated) {
    // 切换为完整内容
    descricaoEl.innerHTML = descricaoEl.dataset.fullHtml;
    toggleBtn.textContent = 'Ver menos';
  } else {
    // 恢复截断状态
    const plainText = getPlainText(descricaoEl.dataset.fullHtml);
    const truncatedHtml = `<p>${truncateText(plainText, 100)}</p>`;
    descricaoEl.innerHTML = truncatedHtml;
    toggleBtn.textContent = 'Ver mais';
  }
}

步骤4:调整CSS样式

移除原有的行数限制相关属性,简化样式:

.hiddendescricao {
  overflow: hidden;
  position: relative;
  line-height: 1.5; /* 可选:统一行高保证排版一致 */
}

补充说明

  • 若要保留原HTML格式(如加粗、换行),可优化截断逻辑,避免截断在标签中间(逻辑稍复杂,但能保留原有排版)。
  • 可将最大字符数抽为全局变量,方便统一调整截断长度。

内容的提问来源于stack exchange,提问作者Leonardo Lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:05:23