CSS font 属性

CSS font 语法

在 CSS 中,font 是一个复合属性,它是以下属性的简写。

语法:

font: stretch style variant weight size/line-height family;

说明:

font 的取值并不一定都要把所有子属性值都要写上,因为不写上的就表示使用对应子属性的默认值。但是 font 值的书写需要遵循一定的顺序,否则可能会无效。

对于 font 属性的使用,需要注意以下几点。

  • font 属性必须包含:font-size、font-family,否则整个 font 声明无效。
  • font 属性可以选择包含:font-stretch、font-style、font-variant、font-weight、line-height。
  • font-stretch 只能是关键字,而不能是百分比。
  • font-style、font-variant、font-weight 和 font-stretch 必须写在 font-size 之前,但它们彼此之间的顺序是自由的。
  • font-variant 只能指定 CSS 2.1 中定义的值,也就是 normal 和 small-caps。
  • line-height 必须紧跟 font-size 之后,前面是 “/”,比如 “20px / 1.5em”。如果没有设置 font-size,则可以是 “1.5em”。

提示: font 属性的使用比较复杂,限制非常多。在实际开发中,并不推荐使用 font 这个复合属性,而是推荐使用单独的子属性,这样会简单非常多。

CSS font 摘要

属于 CSS 字体属性
使用频率
是否继承
默认值 使用子属性的默认值
兼容性 查看
官方文档 查看
MDN 查看

CSS font 示例

接下来,我们通过一个简单的例子来讲解一下 CSS font 属性是如何使用的。

示例:font 基本用法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div { 
            font: italic bold 20px/1.2em Consolas sans-serif;
        }
    </style>
</head>
<body>
    <div>绿叶网(lvyenet)</div>
</body>
</html>

页面效果如下图所示。

font示例

分析:

font: italic bold 20px/1.2em Consolas sans-serif;

上面这一句代码等价于:

font-style: italic;
font-weight: bold;
font-size: 20px;
line-height: 1.2em;
font-family: Consolas sans-serif;

由于这里省略了 font-stretch 和 font-variant 这 2 个属性的设置,也就是此时 font-stretch 使用其默认值 “normal”,而 font-variant 使用其默认值 “normal”。总而言之,如果 font 属性的取值省略了某个子属性的值,就表示使用该子属性的默认值。

使用 font 属性有一个很大的弊端,就是书写其子属性值时需要严格按照顺序。对于上面例子来说,如果将 font 属性取值顺序打乱,比如改为:

font: 20px/1.2em italic bold Consolas sans-serif;

再次运行后页面效果如下图所示,此时会发现 font 属性不再生效了。

font属性不生效

此外,font 简写属性还有一个巨大的 “坑”——它会重置所有未设置的属性为默认值。比如你在 body 设置了 line-height: 1.5;,然后在某个 div 写了 font: 16px Arial;(没写行高),那么这个 div 的行高会瞬间变回 normal(约 1.2),从而破坏全局布局。

上一篇: font-variant

下一篇: text-indent

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号