03文本与字体
文字是网页的第一主角。这一课把「字」讲透: 字体属性决定每个字长什么样(字体、字号、粗细、斜正), 文本属性决定一群字怎么排(对齐、行高、间距、装饰)。
一、font-family:字体族与回退机制
font-family 指定文字使用哪套字体。写法是一串备选名单,
从左往右找:用户电脑装了第一种就用第一种,没装就试下一种,
最后用一个通用字体族(如 sans-serif)兜底。
Georgia 删掉,看回退机制依次往后找| 通用字体族 | 中文含义 | 观感与用途 |
|---|---|---|
serif | 衬线体 | 笔画带装饰脚(宋体、Georgia),书卷气,适合长文印刷感 |
sans-serif | 无衬线体 | 笔画平直(雅黑、苹方、Arial),清爽易读,屏幕主流 |
monospace | 等宽体 | 字符同宽(Consolas、Courier),代码与数字表格 |
cursive | 手写体 | 连笔手写风,中文对应楷书类,慎用于正文 |
fantasy | 艺术体 | 夸张装饰风,几乎只做标题彩蛋 |
二、font-size:字号与 px / em / rem
font-size 设置字号。单位先用最直观的 px(像素),
再认识两个「相对单位」:em 相对父级字号,
rem 相对根元素(html)字号。
另外还有一个 %:用在 font-size 上与 em 等价,100% 就是父级字号。
.ems 的 20px 改成 30px,只有 em 那行跟着变| 单位 | 参照物 | 效果 | 使用场景 |
|---|---|---|---|
| px | 固定像素 | 写多少是多少,不随环境变化 | 精确控制:小元件、边框配套文字 |
| em | 父元素字号 | 父级变它跟着变;层层嵌套会逐级放大或缩小 | 组件内部按比例缩放 |
| rem | 根元素 html 字号(默认 16px) | 全站统一基准,改 html 一处全站缩放 | 整站字号体系的首选 |
| % | 父元素字号 | 100% = 父级字号,效果与 em 等价 | 与 em 二选一,看团队习惯 |
三、font-weight:字重 100 ~ 900
font-weight 控制笔画粗细:normal 等于 400,
bold 等于 700,完整刻度是 100、200 …… 900 共九档。
| 属性值 | 效果 | 使用场景 |
|---|---|---|
| normal | 常规,等于 400(默认值) | 正文;也可用来「取消」标题标签的默认加粗 |
| bold | 加粗,等于 700 | 强调、小标题、按钮文字 |
| lighter | 比父级细一档(相对计算) | 在加粗上下文里局部回调 |
| bolder | 比父级粗一档(相对计算) | 在正文中局部加粗 |
| 100 ~ 300 | 极细 ~ 较细 | 大号标题的轻盈感、高级感排版 |
| 400 ~ 500 | 常规 ~ 中等 | 正文、轻度强调 |
| 600 ~ 700 | 半粗 ~ 加粗 | 强调、导航、小标题 |
| 800 ~ 900 | 特粗 ~ 黑体 | 海报、封面大标题 |
font-weight: bold 不变化是正常的。四、font-style 与 font-variant:斜体与小型大写
font-style 决定文字正斜:italic 是真斜体(字体专门设计),
oblique 是把正体硬掰斜;normal 恢复正体,
常用来「取消」<em>、<i> 的默认斜体。
| 属性 | 属性值 | 效果 | 使用场景 |
|---|---|---|---|
font-style | normal | 正体(默认) | 取消 <em>、<i>、<address> 的默认斜体 |
| italic | 真斜体:使用字体专门设计的斜体字形 | 英文强调、书名、引文 | |
| oblique | 把正体机械倾斜,字形本身没有斜体设计 | 字体没有 italic 字形时的替代,观感略逊 | |
font-variant | normal | 正常大小写(默认) | 常规文本 |
| small-caps | 小写字母显示为「缩小版大写」,大写不变 | 英文标题、术语行的仪式感(仅对英文生效) |
五、color:文字颜色的三种写法
颜色值有三种主流写法:关键字(写名字)、 十六进制(#RRGGBB,最常用)、 rgb / rgba 函数(三原色数值,rgba 多一个透明度)。
| 写法 | 格式 | 说明 | 使用建议 |
|---|---|---|---|
| 关键字 | red、firebrick | 约 140 个命名颜色 | 演示、临时取色 |
| 十六进制 | #B3472E / #F00 | 三位缩写等于六位展开(#F00 = #FF0000) | 日常首选 |
| RGB | rgb(179, 71, 46) | 每通道 0 ~ 255,也可写百分比 | 需要计算颜色时 |
| RGBA | rgba(179, 71, 46, 0.45) | 第 4 位 alpha:0 全透明,1 不透明 | 叠层、蒙版、毛玻璃 |
六、text-align:水平对齐四联
text-align 决定行内内容在盒子里靠哪边:
left 左对齐(默认)、center 居中、right 右对齐、
justify 两端对齐(左右两边都撑齐)。
| 属性值 | 效果 | 使用场景 |
|---|---|---|
| left | 左对齐(默认值) | 正文、常规排版 |
| center | 水平居中 | 标题、按钮文字、海报式居中段 |
| right | 右对齐 | 价格、日期、数值列 |
| justify | 两端对齐:除最后一行外,每行左右撑齐 | 多行正文排整齐、报刊式版面 |
text-align: center 没用——
它只管盒子里面的文字。块级盒子自己居中要用 margin: 0 auto(盒模型一课细讲)。七、line-height:行高与垂直居中技巧
line-height 是一行文字所占的高度。行高太小文字挤成一团,
太大又松散。无单位倍数(如 1.8)是最推荐的写法:
行高 = 字号 × 倍数,字号变了行高自动跟着变。
line-height 改成别的值,文字立刻跑偏| 写法 | 行高怎么算 | 继承给子元素的是 | 使用场景 |
|---|---|---|---|
| normal | 浏览器默认,约 1.2 ~ 1.4(因字体而异) | normal 本身 | 不推荐显式依赖,行高不可控 |
| 无单位倍数,如 1.8 | 自身字号 × 1.8 | 倍数 1.8:子元素按自己的字号重算 | 正文首选,伸缩自如 |
| px,如 28px | 固定 28px,与字号无关 | 固定值 28px | 「行高 = 盒高」的单行垂直居中技巧 |
| em / %,如 1.8em、180% | 自身字号 × 1.8,算出固定值 | 算好的固定值:子元素字号变了行高不跟 | 容易踩坑,了解即可 |
line-height: 1.8 继承给子元素的是「倍数」;
而 1.8em / 28.8px 继承的是「算好的固定值」——
子元素字号一变,行高就跟不上,垂直居中技巧也会失灵。八、text-decoration 与 text-transform
text-decoration 给文字加装饰线,其实是「线型 + 样式 + 颜色」的复合属性;
text-transform 改英文大小写显示(原文本不变)。
下划线 underline | 上划线 overline | 删除线 line-through(原价 ¥199)
波浪线 wavy + 自定义颜色 | 我是去了下划线的链接
uppercase: hello css world
lowercase: HELLO CSS WORLD
capitalize: hello css world
| 属性值 | 效果 | 典型场景 |
|---|---|---|
| underline | 下划线 | 强调、链接默认样式 |
| overline | 上划线 | 少用,特殊装饰 |
| line-through | 删除线 | 原价、过期信息 |
| none | 无装饰 | 导航链接去下划线:a { text-decoration: none; } |
| underline wavy 颜色 | 线型 + 样式 + 颜色 | 拼写检查般的提示效果 |
| 属性值 | 效果 | 使用场景 |
|---|---|---|
| none | 不转换(默认) | 常规文本 |
| uppercase | 全部大写 | 英文标题、角标、按钮 |
| lowercase | 全部小写 | 统一用户输入的显示风格 |
| capitalize | 每个单词首字母大写 | 英文标题式(Title Case) |
a { text-decoration: none; } 去掉默认下划线,
再用 color 或 :hover 变色提示「这是链接」——
这是几乎所有网站的起手式。九、letter-spacing、word-spacing 与 text-indent
三个「间距」属性各管一段:letter-spacing 管字符之间,
word-spacing 管英文单词之间(对中文无效),
text-indent 管段落第一行缩进。
2em 改成 4em,缩进立刻翻倍山川湖海(默认字距)
山川湖海(字距 4px)
山川湖海(字距 10px)
The quick brown fox jumps over the lazy dog(词距 10px)
中文段落的首行缩进用 2em 最稳:em 跟着字号走,字号改了缩进依然正好两个字的宽度。段落缩进是中文书刊的传统排版习惯,网页正文可以按需取舍。
| 属性 | 属性值 | 效果 | 使用场景 |
|---|---|---|---|
letter-spacing | normal | 默认字距(0) | 正文 |
| 正值,如 4px | 字符间撑开 | 标题提气质(1 ~ 6px)、海报大字 | |
| 负值,如 -1px | 字符收紧,过负会粘连 | 大号标题的紧凑感,慎用 | |
word-spacing | normal | 默认词距 | 常规文本 |
| 长度,如 10px | 加大单词间的空隙 | 只对空格分隔的英文单词生效,中文无效 | |
text-indent | px,如 32px | 固定缩进 | 字号固定时用 |
| em,如 2em | 按当前字号换算,2em = 两个字宽 | 中文段落首行缩进首选 | |
| %,如 10% | 相对容器宽度 | 少用,宽度变化时缩进不稳 |
十、text-shadow:文字阴影
text-shadow 给文字加影子,让标题「立」起来。
写法是水平偏移、垂直偏移两个值必填,模糊半径和颜色可选;
还能用逗号叠加多层阴影,做出描边、发光等效果。
| 参数 | 是否必填 | 效果 | 说明 |
|---|---|---|---|
| 水平偏移 | 必填 | 影子左右挪:正右负左 | 如 2px、-2px |
| 垂直偏移 | 必填 | 影子上下挪:正下负上 | 如 3px |
| 模糊半径 | 可选,默认 0 | 越大越虚,0 是锋利实影 | 不能为负值 |
| 颜色 | 可选,默认跟随文字色 | 影子的颜色 | 常用 rgba 调浓淡 |
| 效果 | 写法 | 关键点 |
|---|---|---|
| 柔和投影 | text-shadow: 2px 3px 6px rgba(0,0,0,.25) | 小偏移 + 中模糊 |
| 浮雕 | text-shadow: 0 1px 0 rgba(255,255,255,.9) | 1px 无模糊,深色底配亮影 |
| 发光 | text-shadow: 0 0 12px 颜色 | 偏移归 0,多层叠加更亮 |
十一、font 简写:一行写完字体六件套
font 是复合简写属性,一行能同时写下
font-style、font-variant、font-weight、
font-size、line-height、font-family。
规则很严:font-size 和 font-family 必填且必须排在最后,
行高跟在字号后面用斜杠 / 分隔,其余三项可省略、顺序随意。
italic,斜体消失但规则照常生效下面的正文用另一组简写:16px 字号、1.8 倍行高、无衬线字体族。
| 组成项 | 是否必填 | 说明 |
|---|---|---|
font-style | 可省 | 与 variant、weight 一起可任意顺序 |
font-variant | 可省 | 同上 |
font-weight | 可省 | 同上 |
font-size | 必填 | 后面可用 /line-height 顺带写行高 |
line-height | 可省 | 不写则被重置为 normal |
font-family | 必填,且收尾 | 备选名单照旧,逗号分隔 |
font: 16px sans-serif 会把 line-height 重置成 normal,
把你之前单独写的行高冲掉。所以要么简写写全,要么把单独声明放在简写之后。十二、本章小结
用一张表分清两类属性——「字长什么样」与「字怎么排」:
| 分类 | 属性 | 一句话职责 |
|---|---|---|
| 字体属性 (字形本身) | font-family | 用哪套字体,多备选 + 通用族兜底 |
font-size | 字号:px / em(相对父级)/ rem(相对根) | |
font-weight | 粗细 100 ~ 900,normal=400、bold=700 | |
font-style | 正斜体:italic / oblique / normal | |
font-variant | small-caps 小型大写(英文) | |
| 文本属性 (排版布局) | color | 文字颜色:关键字 / #十六进制 / rgb(a) |
text-align | 水平对齐:left / center / right / justify | |
line-height | 行高,推荐无单位倍数;=盒子高度时单行垂直居中 | |
text-decoration | 装饰线:underline / line-through / none / wavy | |
text-transform | 英文大小写:uppercase / lowercase / capitalize | |
letter-spacing | 字符间距,标题提气质 | |
word-spacing | 英文单词间距,对中文无效 | |
text-indent | 首行缩进,中文段落用 2em | |
text-shadow | 文字阴影:偏移必填,模糊与颜色可选,可叠多层 |
- 字体名单从左到右回退,含空格要引号,结尾留通用族
- 行高用无单位倍数,继承时倍数随行,不会失灵
text-align管盒子里面的文字,管不了盒子自己- 导航链接三件套:
text-decoration: none+ 自定义颜色 + hover 变色 - 颜色首选十六进制,需要透明度用 rgba
- 文字阴影偏移小、模糊适中、半透明最稳妥;
font简写会重置没写的项,用时要写全