将文本适配容器

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200美元免费额度!

有多种方法可以将文本放入容器中并使其大小调整以填充该容器。我们可以使用不同的技术并考虑不同的因素。让我们来数一数这些方法。

使用视口单位设置魔法数字

如果使用vw(视口宽度)单位设置字体大小,则可以找到一个精确的数字,使文本非常接近地填充容器,并且在调整大小的时候不会换行。我称之为魔法数字

在这种情况下,font-size: 25.5vw;适用于320px的视口,但仍然会在更小的视口中换行。

查看 Chris Coyier 在 CodePen 上的示例 使用视口单位适配文本@chriscoyier)。

这有点类似于流体排版的简化版本,流体排版涉及更多视口单位和最小/最大尺寸的应用。

FitText

Dave Rupert 的 FitText 可以胜任这项工作。您仍然需要一些魔法数字来使文本大小调整到适合特定工作的程度。

查看 Chris Coyier 在 CodePen 上的示例 使用 FitText 适配文本@chriscoyier)。

无需 jQuery 的 FitText

如果您没有使用 jQuery,则还有其他选择。以下是仓库中列出的选项:

第一个选项的示例

查看 Chris Coyier 在 CodePen 上的示例 使用 FitText(无 jQuery)适配文本@chriscoyier)。

textFit

将 FitText 中的单词颠倒一下,您就得到了 textFit!它是一个另一个 JavaScript 库,用于调整字体大小以使文本适应容器。但这里有一个很大的警告:textFit 适用于二维。因此,您需要在元素上设置widthheight才能使其生效。

查看 Chris Coyier 在 CodePen 上的示例 使用 textFit 适配文本@chriscoyier)。

fitty

fitty 更类似于 FitText,因为它仅水平调整文本大小以最大化,但实际上似乎不需要任何魔法数字。

查看 Chris Coyier 在 CodePen 上的示例 使用 fitty 适配文本@chriscoyier)。

TextFill

TextFill 基于 jQuery,需要宽度、高度和配置的最大字体大小才能工作。这是我们一直在使用的基本演示。

查看 Chris Coyier 在 CodePen 上的示例 使用 TextFill 适配文本@chriscoyier)。

FlowType

FlowType 旨在用于整篇文本,同时流畅地调整其大小,并具有最小和最大视口大小。但您可以根据需要对其进行范围限定。您还需要应用魔法数字来获得想要的效果。

查看 Chris Coyier 在 CodePen 上的示例 使用 FlowType 适配文本@chriscoyier)。

直接使用 SVG

使用width: 100%viewBox,SVG 将成为一个全尺寸框,并根据纵横比调整大小。非常巧妙的技巧!要设置文本,您需要一些魔法数字来正确设置viewBox并将文本推到正确的位置——但这可以通过零依赖项实现,就像视口单位演示一样。

查看 Chris Coyier 在 CodePen 上的示例 使用 SVG 适配文本@chriscoyier)。