作者:令川 | 发布时间:2024-02-01

分享:一个超实用的文字截断技巧

文字截断是 Web 开发中非常普遍的一个需求,原因无他,很多时候我们无法确定展示文本的容器的宽度,如果不使用文字截断,要么文本被生硬的截断隐藏、要么文本破坏了预期中的布局。

在 Tailwind CSS 中,提供的文字截断的原子类:

.truncate {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

这 3 组 CSS 规则共同作用才可实现用 ... 截断文字的效果,缺一不可。

接下来介绍一个在 PC Web 上很实用的交互效果:在需要截断的文本后面,紧跟一个鼠标 hover 上去才会展示的按钮, 执行一些和省略文本强相关、轻操作的动作。

示例一

如图所示,鼠标 hover 展示的按钮可以用来快速的编辑「标题」。

这种效果,可以完全使用 CSS 实现。

首先,我们来实现一个基础版的。

示例2

代码:

<div class="container">
  <p class="complex-line truncate">
    <span class="truncate">海和天相连成为海岸线</span>
    <button>❤️</button>
  </p>
  <p class="truncate">鱼和水相濡以沫的世界</p>
</div>

<style>
  .truncate {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  .container {
    max-width: 100px;
  }
  .complex-line {
    display: flex;
  }
  .complex-line button {
    display: none;
  }
  .complex-line:hover button {
    display: block;
  }
</style>

一些重点:

这样便实现了基础版的文字截断 + 可以显示隐藏按钮的交互。

接下来再看看文章开头提到的这个交互:

示例一

它和基础版的样式最大的不同就是它是多列的,这里可以使用 Grid 网格布局实现。

<div class="container">
  <label>标题:</label>
  <p class="complex-line truncate">
    <span class="truncate">高质量人才生产总基地</span>
    <button>✏️</button>
  </p>
  <label>编号:</label>
  <p class="truncate">No.9781498128959</p>
</div>

<style>
.container { 
  display: grid;
  grid-template-columns: auto 1fr;
  /** ... */
}
</style>

其他样式代码和基础版中的一致,不再赘述。

总结

为了实现本文介绍的这种交互,应该确保:

目录 / Contents

空。

令川 · 记