CSS动画Google字体

2025-06-09

CSS动画Google字体

Google Fonts 现在支持可变字体了!太棒了。

什么是可变字体?

如果你不熟悉可变字体,它们真的很酷。最大的好处是可以用更少的网络请求访问字体变体。这可以减少字体文件的大小!

这一切都得益于这些炫酷的新功能。这些功能允许我们在运行时更改字体的特性,例如weightslant。除了实用优势之外,它还意味着我们可以为这些特性添加动画效果!

我们将这些特性称为轴。可变字体不必全部支持,也可以选择只支持其中一两个。

轴名称 CSS 值
重量 重量
宽度 宽度
倾斜 slnt
光学尺寸 操作
斜体 意大利
年级 研究生

有关可变字体的更多信息,请查看这篇文章!

那么 Google 字体怎么样?

嗯,在使用 Google Fonts 的可变字体时,有一件事不太清楚。如何获取整个字体?

假设我们选择“Roboto Mono”并进行设置。

@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap');

h1 {
  font-family: 'Roboto Mono', monospace;
}
Enter fullscreen mode Exit fullscreen mode

现在我们决定更改可变字体的设置。我们知道“Roboto Mono”支持“可变粗细轴”。如果我们尝试更新示例中的粗细,没有任何反应……

h1 {
  font-variation-settings: 'wght' 300;
}
h1 {
  font-variation-settings: 'wght' 700;
}
Enter fullscreen mode Exit fullscreen mode

嗯。怎么了?

如果我们检查特定的重量,然后使用“选择此样式”,我们就可以抓住我们想要的重量!

Google Fonts 可变字重范围配置快照

更新我们的 CSS 将反映该权重。

对于多个权重,请输入权重,后跟分号。

@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@200;700&display=swap')
Enter fullscreen mode Exit fullscreen mode

将鼠标悬停在此演示中的单词上即可转换到更高的级别wght

不过,我注意到这里有个有趣的现象。输入范围内的任意两个值,你就可以访问整个范围!

例如,在这里我使用

@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@699;700&display=swap')
Enter fullscreen mode Exit fullscreen mode

但我仍然可以访问整个支持范围内的权重。

不知道以后这种情况会不会改变?或者,输入任意两个值都会触发你想要变量版本的情况?

我们如何让它们动起来?

与普通的 CSS 动画没什么区别。我们可以为“font-variation-settings”属性添加动画。

@keyframes breathe {
  50% {
    font-variation-settings: 'wght' 700;
  }
}
Enter fullscreen mode Exit fullscreen mode

这里我们使用一些变量来决定下限和上限。

我们如何进一步错开字符?为此,我们可以在 HTML 中拆分字符。

<h1>
  <span style="--index: 0">W</span>
  <span style="--index: 1">a</span>
  <span style="--index: 2">a</span>
  <span style="--index: 3">a</span>
  <span style="--index: 4">v</span>
  <span style="--index: 5">e</span>
</h1>
Enter fullscreen mode Exit fullscreen mode

注意到我们是如何为字符索引使用内联 CSS 变量的吗?我们可以用它来指定字符的动画延迟。作用域变量意味着更少的 CSS。

h1 span {
  animation-delay: calc((var(--index) - 6) * 0.25s);
}
Enter fullscreen mode Exit fullscreen mode

这将给我们这个。

我们可以更进一步,添加一些颜色并堆叠文字😎混合我们的一些 CSS 转换,我们可以做很多事情!

对于我最初的演示,我将一些东西与 GreenSock 和 Splitting 放在一起。

但是,我们没有理由不能仅使用 CSS 来做类似的事情。

我们可以通过创建类似的关键帧来交换饱和度。

@keyframes rise {
  50% {
    font-variation-settings: 'wght' var(--upper);
    color: hsl(var(--hue), 80%, 65%);
  }
}
Enter fullscreen mode Exit fullscreen mode

就是这样!

从 Google Fonts 中获取一些可变字体,试试看!我还没试过所有字体。目前为止,我只看到对weightaxis 的支持。

如果您发现任何支持其他轴的,请告诉我!

有没有什么好的可变字体资源?我很想看看!


一如既往,我很乐意听听你的意见。欢迎留言或在Twitter 上关注我!

鏂囩珷鏉ユ簮锛�https://dev.to/jh3y/animated-google-fonts-193d
PREV
使用 CSS 创建定向发光 3D 按钮
NEXT
复杂 CSS 插图的建议 时间和练习 描摹是完全可以接受的 注意响应能力 三思而后行 对所有事物使用绝对定位 坚持一种方法 为你的风格保持坚实的结构 处理尴尬的形状 clip-path 是你的朋友 border-radius 是你的另一个朋友 阴影技术 预处理器非常有用 就是这样!