Primer CSS 自定义最大宽度截断


在 Web 开发项目中,开发者经常会遇到需要在指定空间内显示文本的情况,原因有很多,例如客户需求、整体外观、资源有限等等。CSS 中的 `truncate` 属性是一个有效的特性,可以解决这个问题。

它允许开发者显示单行文本,并用省略号截断溢出的文本。但是,根据具体情况,可能需要自定义截断文本的最大宽度。在这篇文章中,我们将讨论如何使用 Primer CSS(一个由 GitHub 设计系统设计的流行开源 CSS 框架)来自定义最大宽度。

截断是什么意思?

在 Web 设计中,`truncate` 是 CSS `text-overflow` 属性的一个值。处理文本时,经常会遇到容器空间不足以容纳所有文本的情况。这部分文本被称为溢出文本。它使我们能够显示单行文本,然后用省略号截断其余部分。

在 CSS 中,要使用“truncate”,需要执行以下步骤:

  • 将 `white-space` 属性设置为 `nowrap`

  • 将 `overflow` 属性设置为 `hidden`

  • 将 `text-overflow` 属性设置为 `ellipsis`

示例

<html>
<head>
   <style>
      div {
         width: 77%;
         height: 30px;
         border: 1px solid black;
         overflow: hidden;
         white-space: nowrap;
         text-overflow: ellipsis;
      }      
   </style>
</head>  
<body> 
   <div> This is the text. Apple mango banana watermelon orange kiwi pomegranate muskmelon pineapple grapes papaya guava strawberries raspberry avocado pear. </div>
</body> 
</html>

为了避免编写过多代码,可以使用 Primer CSS。Primer CSS 内置了截断组件,并为此预定义了类。

在使用 Primer CSS 中的任何类之前,必须从 npm 安装它:

npm install --save @primer/css

或者在 HTML 代码中使用 CDN 链接:

<link href= "https://unpkg.com/@primer/css@^20.2.4/dist/primer.css" rel= "stylesheet" />

自定义截断文本的最大宽度

要自定义截断文本的最大宽度,Primer CSS 提供了预定义的类,用于截断网站上溢出的文本。

示例

在这个例子中,我们使用预定义的 `box` 类将一个 div 元素转换为一个可调整大小的框。这里,`p-1` 是一个类速记,用于在框的四侧添加 4px (0.25 rem) 的填充。

接下来,我们有一个 `style` 属性,用于向框添加所需的样式。我们将 `resize` 属性的值设置为 `horizontal`,以便用户可以通过从右角拖动来水平调整框的大小。为了向元素添加水平滚动条,我们使用了 `overflow: scroll` 属性。使用水平滚动条将使用户能够在水平滚动文本时查看隐藏的内容。

然后,我们使用 Primer CSS 中的预定义类显示具有不同最大宽度的不同截断文本。

<html>
<head>
   <link rel="stylesheet" href="https://unpkg.com/@primer/css@^20.2.4/dist/primer.css" />
</head>
<body>
   <h1 style="margin: 10px"> Primer CSS Truncate Custom Max Width </h1>
   <p style="margin: 10px"> Following we have different truncated text with customized maximum widths. </p>
   <br>
   <div class="Box p-1" style="resize: horizontal; overflow: scroll; margin: 10px">
      <div class="Truncate">
         <span class="Truncate-text Truncate-text--expandable" style="max-width: 460px;"> This is the text. Apple mango banana watermelon orange kiwi pomegranate muskmelon pineapple grapes papaya guava strawberries raspberry avocado pear. </span>
      </div>
      <br>
      <div class="Truncate">
         <span class="Truncate-text Truncate-text--expandable" style="max-width: 340px;"> This is the text. Apple mango banana watermelon orange kiwi pomegranate muskmelon pineapple grapes papaya guava strawberries raspberry avocado pear. </span>
      </div>
      <br>
      <div class="Truncate">
         <span class="Truncate-text Truncate-text--expandable" style="max-width: 280px;"> This is the text. Apple mango banana watermelon orange kiwi pomegranate muskmelon pineapple grapes papaya guava strawberries raspberry avocado pear. </span>
      </div>
      <br>
      <div class="Truncate">
         <span class="Truncate-text Truncate-text--expandable" style="max-width: 180px;"> This is the text. Apple mango banana watermelon orange kiwi pomegranate muskmelon pineapple grapes papaya guava strawberries raspberry avocado pear. </span>
      </div>
      <br>
      <div class="Truncate">
         <span class="Truncate-text Truncate-text--expandable" style="max-width: 80px;"> This is the text. Apple mango banana watermelon orange kiwi pomegranate muskmelon pineapple grapes papaya guava strawberries raspberry avocado pear. </span>
      </div>
   </div>
</body>
</html>

结论

在内容溢出的情况下自定义显示文本的最大宽度是一个良好的实践,它可以帮助开发者控制文本在网站上有限空间内的显示。按照本文中讨论的方法,您将能够创建视觉上更具吸引力的网站。我们还可以将截断方法用于卡片设计。这使得您的内容更易于阅读和用户友好,同时您需要显示较长的标题、标题、卡片描述等。

更新于:2023年4月28日

88 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告