CSS 字体属性定义文本的字体系列、大小、加粗、风格(如斜体)和变形(如小型大写字母)。
字体系列
使用
font-family
属性定义文本地字体系列。
font-family
可以把多个字体名称作为一个“回退”系统来保存。如果浏览器不支持第一个字体,则会尝试下一个。也就是说,font-family
属性的值是用于某个元素的字体族名称或/及类族名称的一个优先表。浏览器会使用它可识别的第一个值。
有两种类型的字体系列名称:
指定的系列名称:
具体字体的名称,比如:"times"、"courier"、"arial"。
通常字体系列名称:比如:"serif"、"sans-serif"、"cursive"、"fantasy"、"monospace"
提示:使用逗号分割每个值,并始终提供一个类族名称作为最后的选择。
注意:使用某种特定的字体系列完全取决于用户机器上该字体系列是否可用;这个属性没有指示任何字体下载。因此,强烈推荐使用一个通用字体系列名作为后路。
可能的值
值 | 描述 |
---|---|
family-name/generic-family | 用于某个元素的字体族名称或/及类族名称的一个优先表。默认值:取决于浏览器。 |
inherit | 规定应该从父元素继承字体系列。 |
字体风格
font-style
属性最常用于规定斜体文本。
可能的值
值 | 描述 |
---|---|
normal | 默认值。浏览器显示一个标准的字体样式。 |
italic | 浏览器会显示一个斜体的字体样式。 |
oblique | 浏览器会显示一个倾斜的字体样式。 |
inherit | 规定应该从父元素继承字体样式。 |
italic 和 oblique 的区别
font-style
非常简单:用于在normal
文本、italic
文本和 oblique
文本之间选择。唯一有点复杂的是明确 italic 文本和 oblique 文本之间的差别。
斜体(italic)是一种简单的字体风格,对每个字母的结构有一些小改动,来反映变化的外观。与此不同,倾斜(oblique)文本则是正常竖直文本的一个倾斜版本。
通常情况下,italic
和 oblique
文本在 web 浏览器中看上去完全一样。
字体变形
font-variant
属性可以设定小型大写字母。
小型大写字母不是一般的大写字母,也不是小写字母,这种字母采用不同大小的大写字母。
可能的值
值 | 描述 |
---|---|
normal | 默认值。浏览器会显示一个标准的字体。 |
small-caps | 浏览器会显示小型大写字母的字体。 |
inherit | 规定应该从父元素继承 font-variant 属性的值。 |
字体加粗
font-weight
属性设置文本的粗细。
使用 bold
关键字可以将文本设置为粗体。
关键字 100 ~ 900 为字体指定了 9 级加粗度。如果一个字体内置了这些加粗级别,那么这些数字就直接映射到预定义的级别,100 对应最细的字体变形,900 对应最粗的字体变形。数字 400 等价于 normal
,而 700 等价于 bold
。
如果将元素的加粗设置为bolder
,浏览器会设置比所继承值更粗的一个字体加粗。与此相反,关键词 lighter 会导致浏览器将加粗度下移而不是上移。
可能的值
值 | 描述 |
---|---|
normal | 默认值。定义标准的字符。 |
bold | 定义粗体字符。 |
bolder | 定义更粗的字符。 |
lighter | 定义更细的字符。 |
100~900 | 定义由粗到细的字符。400 等同于 normal,而 700 等同于 bold。 |
inherit | 规定应该从父元素继承字体的粗细。 |
字体大小
font-size
属性设置字体的大小。
有能力管理文本的大小在 web 设计领域很重要。但是,我们不应当通过调整文本大小使段落看上去像标题,或者使标题看上去像段落。
请始终使用正确的 HTML 标题,比如使用 <h1> - <h6>
来标记标题,使用 <p>
来标记段落。
font-size
值可以是绝对或相对值。
绝对值:
将文本设置为指定的大小
不允许用户在所有浏览器中改变文本大小(不利于可用性)
绝对大小在确定了输出的物理尺寸时很有用
相对大小:
相对于周围的元素来设置大小
允许用户在浏览器改变文本大小
注意:如果没有规定字体大小,普通文本(比如段落)的默认大小是 16 像素 (16px=1em)。
使用 em 来设置字体大小
如果要避免在 Internet Explorer 中无法调整文本的问题,许多开发者使用 em
单位代替 pixels
。
W3C 推荐使用 em
尺寸单位。
1em
等于当前的字体尺寸。如果一个元素的font-size
为 16 像素,那么对于该元素,1em
就等于 16 像素。在设置字体大小时,em
的值会相对于父元素的字体大小改变。
浏览器中默认的文本大小是 16 像素。因此 1em
的默认尺寸是 16 像素。
可以使用下面这个公式将像素转换为em
:pixels/16=em
注:16 等于父元素的默认字体大小,假设父元素的font-size
为 20px
,那么公式需改为:pixels/20=em)
h1 {font-size:3.75em;} /* 60px/16=3.75em */
h2 {font-size:2.5em;} /* 40px/16=2.5em */
p {font-size:0.875em;} /* 14px/16=0.875em */
在上面的例子中,以em
为单位的文本大小与前一个例子中以像素计的文本是相同的。不过,如果使用 em
单位,则可以在所有浏览器中调整文本大小。
不幸的是,在 IE 中仍存在问题。在重设文本大小时,会比正常的尺寸更大或更小。
结合使用百分比和 EM
在所有浏览器中均有效的方案是为 body
元素(父元素)以百分比设置默认的 font-size
值:
body {font-size:100%;}
h1 {font-size:3.75em;}
h2 {font-size:2.5em;}
p {font-size:0.875em;}
这个方法在所有浏览器中,可以显示相同的文本大小,并允许所有浏览器缩放文本的大小