CSS 没有 max-font-size
,所以如果我们需要类似的东西,我们就得想点办法。
为什么你需要它呢?好吧,font-size
本身可以以动态方式设置。例如,font-size: 10vw;
。它使用“视窗单位”来调整类型大小,这会随着浏览器窗口大小的改变而变大或变小。如果我们有 max-font-size
,我们可以限制它的最大尺寸(类似地,我们可以使用 min-font-size
来限制最小尺寸)。
一种解决方案是在特定屏幕尺寸断点使用媒体查询来设置非相对单位的字体大小。
body {
font-size: 3vw;
}
@media screen and (min-width: 1600px) {
body {
font-size: 30px;
}
}
有一个名为 CSS 锁定 的概念,它更高级,在最小值和最大值之间缓慢缩放值。 我们已经涵盖了这一点。 它可以像这样…
body {
font-size: 16px;
}
@media screen and (min-width: 320px) {
body {
font-size: calc(16px + 6 * ((100vw - 320px) / 680));
}
}
@media screen and (min-width: 1000px) {
body {
font-size: 22px;
}
}
我们还介绍了如何 它变得(或将变得)更简单.
CSS 中有一个 max()
函数,因此上面的示例变成了一行代码
font-size: max(30vw, 30px);
或者用最小值和最大值进行双重运算
font-size: min(max(16px, 4vw), 22px);
这与以下代码相同
font-size: clamp(16px, 4vw, 22px);
当我在写这篇文章的时候,这些函数的浏览器兼容性 相当稀疏,但 Chrome 目前支持它。它会实现的,但是如果你现在需要它,请查看这篇文章中的第一个选项。
现在我们有了这些函数,我认为我们不太可能在 CSS 中获得 min-font-size
和 max-font-size
,因为这些函数本身就足够清晰了。
同意。可以应用于标准属性中尺寸值的数学函数比专门的 min-* 和 max-* 属性更有意义。哎呀,一旦 clamp 函数得到广泛支持,所有现有的冗余属性都应该被弃用。
一如既往,很棒的文章,Chris。
关于使用 clamp() 的单行代码版本,只是一个小小的补充说明——使用视窗单位作为首选值,你无法控制文本调整大小的速率。
所以你可能想要将 clamp() 与 CSS 锁定技术结合使用,并且只需一点自定义属性,你就可以很容易地省略对媒体查询的需求
请注意最大文本大小,尤其是在面向公众或员工的网站/页面上。如果你阻止文本放大 200%,那么这将是 WCAG SC 1.4.4 中 AA 级别的错误。 视窗单位在 WCAG 中被列为主要风险。
无论你使用什么技术,请确保页面文本可以至少放大 200%。是的,我已经写过关于 响应式类型和缩放 的文章,并且已经对
min()
、max()
和clamp()
进行了警告。