沿着路径弯曲文本

Avatar of Geoff Graham
Geoff Graham

我们可以使用 SVG 中内置的三个工具沿弯曲的线条流动文本:<path><text><textPath>

代码片段

<svg viewBox="0 0 500 500">
  <path id="curve" d="M73.2,148.6c4-6.1,65.5-96.8,178.6-95.6c111.3,1.2,170.8,90.3,175.1,97" />
  <text width="500">
    <textPath alignment-baseline="top" xlink:href="#curve">
      Dangerous Curves Ahead
    </textPath>
  </text>
</svg>

我们是如何做到的

假设我们在 SVG 中绘制一条曲线并为其指定一个名为 curve 的 ID。

查看 Geoff Graham 在 CodePen 上创作的笔 NgwPYB@geoffgraham)。

然后,我们使用 <text> 标签将内容放入 SVG 中,并为其提供与 SVG viewBox 尺寸匹配的宽度。我们现在还看不到任何内容,但我们知道文本在屏幕外的某个地方。

查看 Geoff Graham 在 CodePen 上创作的笔 ZyaYOw@geoffgraham)。

我们确实想看到那个文本。我们可以将文本包装在 <textPath> 标签中,并将其设置为跟随我们之前设置的曲线路径的线条,方法是调用我们之前设置的路径 ID。

查看 Geoff Graham 在 CodePen 上创作的笔 Kqywpe@geoffgraham)。

现在我们开始做正事了!

我们不希望看到该曲线,因此让我们为路径设置透明填充。我们也可以在 CSS 中执行此操作,但为了本例的说明,我们将其内联直接应用于 SVG 标记中。

查看 Geoff Graham 在 CodePen 上创作的笔 xrPbgx@geoffgraham)。

剩下的就是 CSS!确切的字体大小将取决于文本本身以及使用的字体系列,但是,一旦找到合适的平衡,SVG 本身将处理响应能力并确保所有内容在任何比例下都保持在曲线上。

查看 Geoff Graham 在 CodePen 上创作的笔 沿着弯曲路径的 SVG 文本@geoffgraham)。

我们可以将此相同的方法应用于任何类型的曲线路径。

查看 Geoff Graham 在 CodePen 上创作的笔 沿着弯曲路径的 SVG 文本@geoffgraham)。