JavaScript文本溢出

在 JavaScript 中,处理文本溢出(Text Overflow)通常涉及检测文本内容是否超出容器的宽度或高度,并根据需要进行截断、省略或动态调整。

1. ​CSS 实现文本溢出省略

如果只需要简单的文本溢出处理,可以使用 CSS 的 text-overflow 属性,结合 white-space 和 overflow 属性来实现。

​单行文本溢出省略

css 复制代码
.ellipsis {
  white-space: nowrap;      /* 禁止换行 */
  overflow: hidden;         /* 隐藏溢出内容 */
  text-overflow: ellipsis;  /* 显示省略号 */
  width: 200px;             /* 容器宽度 */
}

​多行文本溢出省略

css 复制代码
.multiline-ellipsis {
  display: -webkit-box;
  -webkit-line-clamp: 3;    /* 显示的行数 */
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 200px;
}

2. ​JavaScript 动态截断文本

如果需要在运行时动态截断文本并添加省略号,可以使用 JavaScript。

​截断单行文本

ini 复制代码
javascript
function truncateText(element, maxWidth) {
  let text = element.textContent;
  while (element.scrollWidth > maxWidth && text.length > 0) {
    text = text.slice(0, -1); // 每次减少一个字符
    element.textContent = text + '...';
  }
}

const element = document.querySelector('.text');
truncateText(element, 200); // 200px 为容器宽度

​截断多行文本

ini 复制代码
javascript
function truncateMultilineText(element, maxLines) {
  const lineHeight = parseInt(window.getComputedStyle(element).lineHeight);
  const maxHeight = lineHeight * maxLines;

  let text = element.textContent;
  while (element.scrollHeight > maxHeight && text.length > 0) {
    text = text.slice(0, -1); // 每次减少一个字符
    element.textContent = text + '...';
  }
}

const element = document.querySelector('.text');
truncateMultilineText(element, 3); // 最多显示 3 行

3. ​结合 CSS 和 JavaScript

可以将 CSS 和 JavaScript 结合使用,实现更灵活的效果。

​示例:动态添加省略号

ini 复制代码
html
<div class="text" style="width: 200px; white-space: nowrap; overflow: hidden;">
  这是一个很长的文本内容
</div>
<script>
  const element = document.querySelector('.text');
  if (element.scrollWidth > element.clientWidth) {
    element.title = element.textContent; // 显示完整文本的提示
    element.textContent = element.textContent.slice(0, 10) + '...'; // 截断文本
  }
</script>
相关推荐
前端精髓3 分钟前
调用openrouter的免费API模型
java·前端·javascript
赛博守夜人31 分钟前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every32 分钟前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad1 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他
缓慢更新2 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易2 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员
风骏时光牛马3 小时前
AI稳定性治理体系构建与疑难问题深度分析
前端
IT_陈寒4 小时前
JavaScript的this坑人实录,这次我真的记下来了
前端·人工智能·后端
开开心心就好5 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
螺丝钉tina6 小时前
[Playwright] [02]常用命令与调试:Debug UI、Mode和 Trace Viewer
开发语言·javascript·测试工具·ui·自动化