Skip to content

基础选择器与文字样式 ​

选择器回答“样式应用给谁”。本节先掌握标签、类、ID 和通配选择器,再用字体、字号、行高和颜色建立管理后台的文字层级。根据结构、属性和状态选择元素放在下一节。

选择需要设置样式的元素 ​

标签选择器 ​

选择要格式化的元素,最常用的标准可能是元素的名称或类型。例如,可能要让所有的h1 元素以大字号、粗体显示,让所有的p元素以无衬线字体显示

下方是这张图的内联 HTML 示意,重点标出标签选择器 h1:

标签选择器:写要选择的元素名称
h1 {
color: red;
}
匹配对象:页面中所有 <h1> 元素
css
body {
    color: #273142;
}

h1 {
    font-size: 28px;
}

p {
    line-height: 1.7;
}

标签选择器会匹配页面中的同名元素,适合设置稳定的基础样式。不要为了修改一个局部段落而改变全站所有 p。

类选择器 ​

类选择器使用 .(英文点号)进行标识,后面紧跟类名。

下方是这张图的内联 HTML 示意,点号和类名一起构成 .very 选择器:

类选择器:用 . 指定 class 名称
.very {
color: red;
}
匹配对象:class="very",或类名列表中包含 very 的元素

HTML:

html
<h1 class="page-title">学员管理</h1>
<p class="status status-active">正常</p>
<p class="status status-disabled">已停用</p>

CSS:

css
.page-title {
    color: #17233d;
}

.status {
    font-size: 14px;
    font-weight: 600;
}

.status-active {
    color: #16803c;
}

.status-disabled {
    color: #b42318;
}

类选择器以 . 开头,可以重复用于多个元素。一个元素也可以拥有多个类,类名之间用空格分隔。

课程项目大部分可复用样式使用类选择器。

课堂案例:

html
<span class="blue">G</span>
<span class="red">o</span>
<span class="orange">o</span>
<span class="blue">g</span>
<span class="green">l</span>
<span class="red">e</span>
html
<style>
    .blue {color: blue;font-size: 100px;}
    .red {color: red;font-size: 100px;}
    .orange {color: orange;font-size: 100px;}
    .green {color: green;font-size: 100px;}
</style>

ID 选择器 ​

id 选择器使用 # 进行标识,后面紧跟 id 名

html

<section id="student-search">...</section>

下方用内联 HTML 重现图中的 #gaudi 示例;后面的 #student-search 采用相同写法:

ID 选择器:用 # 指定 id 名称
#gaudi {
color: red;
}
匹配对象:id="gaudi" 的元素
css
#student-search {
    background-color: #ffffff;
}

ID 选择器以 # 开头,同一页面中的 id 应保持唯一。ID 还用于表单标签、页内锚点和 JavaScript 定位,因此不建议把大量视觉样式绑定在 ID 上。

通配选择器 ​

通配符选择器用 * 号表示,* 就是选择所有的标签他是所有选择器中作用范围最广的,能匹配页面中所有的元素。

下方用内联 HTML 重现图中的 * { color: red; };后面的 box-sizing 示例使用同一个选择器:

通配选择器:用 * 匹配所有元素
* {
color: red;
}
匹配对象:页面中的所有元素,包括不同名称的标签
css
* {
    box-sizing: border-box;
}

* 匹配所有元素。它适合少量全局基础设置,不适合随意添加复杂规则。

常见的盒模型初始化写法:

css
*,
*::before,
*::after {
    box-sizing: border-box;
}

box-sizing 和伪元素会在后续章节讲解。

比较基础选择器 ​

基础选择器我们一共学了 4 个,每个都有自己的价值,可能再某个地方都能用到。但是如果说,一定要找个最常用的,那么,肯定是类选择器。

选择器作用缺点使用情况用法
标签选择器可以选出所有相同的标签,比如 p不能差异化选择较多p { color:red;}
类选择器可以选出一个或者多个标签可以根据需求选择非常多.nav { color: red; }
id 选择器一次只能选择器一个标签只能使用一次不推荐使用#nav {color: red;}
通配符选择器选择所有的标签选择的太多,有部分不需要不推荐使用* {color: red;}

常见使用场景

需求推荐选择器
所有页面使用相同正文颜色body
多张统计卡片使用相同外观.stat-card
正常状态使用绿色.status-active
页面唯一的结构锚点id,样式仍优先使用类

类名描述角色或状态,例如 .search-form、.student-card、.is-active。避免 .red-text、.left-box 这类只描述当前外观的名称。

字体 ​

字体族 ​

css
body {
    font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
}

浏览器从左到右查找可用字体,最后的 sans-serif 是通用无衬线字体族。包含空格的字体名使用引号。

不要假设每台设备都安装同一种字体。

  • 网页中常用的字体有宋体、微软雅黑、黑体等,例如将网页中所有段落文本的字体设置为微软雅黑
  • 可以同时指定多个字体,中间以逗号隔开,表示如果浏览器不支持第一个字体,则会尝试下一个,直到找到合适的字体, 如果都没有,则以我们电脑默认的字体为准。
css
p {font-family: Arial,"Microsoft Yahei", "微软雅黑";}

字号 ​

font-size 属性用于设置字号

css
p {
    font-size: 20px;
}

单位:

  • 可以使用相对长度单位,也可以使用绝对长度单位。
  • 页面字号优先考虑 rem,局部组件可根据上下文使用 em,边框等精细尺寸常使用 px。
相对长度单位说明
rem相对于根元素的字体尺寸,适合建立页面字号体系
em对 font-size 通常相对于父元素字号,对其他属性通常相对于当前元素字号
pxCSS 像素,适合边框和需要精确控制的局部尺寸
绝对长度单位说明
in英寸
cm厘米
mm毫米
pt点

注意:

  • 浏览器通常以 16px 作为根元素的默认字号,但用户可能会调整默认字号,因此不要把所有文字都锁死为像素值。
  • 可以在根元素或组件上使用 rem 建立可缩放的字号体系。
  • 响应式标题可以使用 clamp() 在最小值和最大值之间平滑变化:
css
.page-title {
    font-size: clamp(1.5rem, 2vw + 1rem, 2rem);
}

字重 ​

  • 在 html 中如何将字体加粗我们可以用标签来实现
    • 使用 b 和 strong 标签是文本加粗。
  • 可以使用 CSS 来实现,但是 CSS 是没有语义的。
属性值描述
normal默认值(不加粗的)
bold定义粗体(加粗的)
100~900400 等同于 normal,而 700 等同于 bold 我们重点记住这句话

提倡:

用数字来表示加粗和不加粗更加方便。

案例:

css
.page-title {
    font-size: 28px;
    font-weight: 700;
}

.field-label {
    font-size: 14px;
    font-weight: 600;
}

.help-text {
    font-size: 13px;
    font-weight: 400;
}

字体风格 ​

  • 在 html 中如何将字体倾斜我们可以用标签来实现
    • 字体倾斜除了用 i 和 em 标签,
  • 可以使用 CSS 来实现,但是 CSS 是没有语义的

font-style 属性用于定义字体风格,如设置斜体、倾斜或正常字体,其可用属性值如下:

属性作用
normal默认值,浏览器会显示标准的字体样式 font-style: normal;
italic浏览器会显示斜体的字体样式。

小技巧:

平时我们很少给文字加斜体,反而喜欢给斜体标签(em,i)改为普通模式。

文字外观 ​

行高 ​

css
body {
    line-height: 1.6;
}

无单位行高会随当前字号计算,适合正文继承。也可以使用固定长度:

css
.page-title {
    font-size: 28px;
    line-height: 40px;
}

正文行高过小会拥挤,过大则会破坏段落联系。基础页面通常从 1.5 到 1.8 之间试验。

颜色 ​

css
.page-title {
    color: #17233d;
}

.panel {
    background-color: rgb(255 255 255);
}

.overlay {
    background-color: rgb(15 23 42 / 60%);
}

常见颜色写法:

  • 关键字:white、transparent。
  • 十六进制:#17233d。
  • RGB:rgb(23 35 61)。
  • 带透明度的 RGB:rgb(23 35 61 / 60%)。

正文文字和背景应保持足够对比度,不要只依靠红绿颜色区分状态,还应保留“正常”“停用”等文字。

文字对齐与装饰 ​

css
.page-title {
    text-align: left;
}

.table-number {
    text-align: right;
}

.nav-link {
    color: inherit;
    text-decoration: none;
}
  • text-align 控制行内内容在容器中的水平对齐。
  • text-decoration 控制下划线等装饰。

删除链接下划线后,应使用颜色、悬停或焦点样式继续表明它可以点击。

处理单行文字溢出 ​

单行长文字常见组合:

css
.student-email {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

这三个属性需要配合,并且元素需要受到宽度约束。溢出会在后续章节正式讲解。

完成学员状态面板 ​

目前卡片还没有间距、边框和排列,这是后面盒模型与布局章节的任务。

html
<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>学员状态</title>
    <link rel="stylesheet" href="./styles.css">
</head>
<body>
<main class="page">
    <h1 class="page-title">学员状态</h1>
    <p class="page-description">查看当前班级的学员状态。</p>

    <section class="student-card">
        <h2 class="student-name">张三</h2>
        <p><span class="field-label">班级:</span>FastAPI Web 1 班</p>
        <p><span class="field-label">邮箱:</span>zhangsan@example.com</p>
        <p class="status status-active">正常</p>
    </section>

    <section class="student-card">
        <h2 class="student-name">李四</h2>
        <p><span class="field-label">班级:</span>FastAPI Web 1 班</p>
        <p><span class="field-label">邮箱:</span>lisi@example.com</p>
        <p class="status status-disabled">已停用</p>
    </section>
</main>
</body>
</html>
css
body {
    background-color: #f4f7fb;
    color: #273142;
    font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
    font-size: 16px;
    line-height: 1.6;
}

.page-title {
    color: #17233d;
    font-size: 28px;
    line-height: 1.4;
}

.page-description {
    color: #667085;
}

.student-card {
    background-color: #ffffff;
}

.student-name {
    color: #17233d;
    font-size: 20px;
}

.field-label,
.status {
    font-weight: 600;
}

.status-active {
    color: #16803c;
}

.status-disabled {
    color: #b42318;
}

小结 ​

  1. 元素选择器适合基础样式,类选择器适合可复用组件和状态。
  2. ID 应保持唯一,不建议大量绑定视觉样式。
  3. 字体、字号、字重、行高与颜色共同建立文字层级。
  4. 类名优先表达角色与状态,不只描述颜色或位置。
  5. 选择器负责选中元素,具体布局会在后续章节完成。