下载工作台
前端开发入门

CSS 选择器与盒模型

试读上半部分 · 解锁后可读全文

第 4 章 · CSS 选择器与盒模型

本章目标:掌握 CSS 引入、选择器、优先级继承;理解盒模型box-sizingBFC;编写实用 reset;为 academy-demo 建立 css/base.css 美化全站。

学时建议:2.5 小时(含 50 分钟跟练与自检)

前置:第 1~3 章;academy-demo 已有 index、courses、register 页面。


4.1 引入 CSS 的三种方式

<link rel="stylesheet" href="css/base.css">   <!-- 推荐 -->
<style>h1 { color: #c2185b; }</style>          <!-- 单页原型 -->
<p style="color: gray;">行内</p>               <!-- 尽量避免 -->
方式场景
外链项目默认,可缓存
<style>原型、Critical CSS
行内动态计算等极少数情况

4.2 基础与组合选择器

p { line-height: 1.6; }              /* 元素 */
.card { border-radius: 12px; }        /* 类 — 复用首选 */
#main { scroll-margin-top: 72px; }    /* ID — 少用 */

nav a { text-decoration: none; }       /* 后代 */
ul > li { list-style: none; }          /* 子元素 */
h2 + p { margin-top: 0; }             /* 相邻兄弟 */
input:focus-visible { outline: 2px solid #e91e8c; }  /* 伪类 */
选择器含义
A B后代
A > B直接子元素
A + B紧邻兄弟
:hover / :focus-visible交互(键盘用 focus-visible)
::before / ::after伪元素,需 content

4.3 选择器优先级(特异性)

优先级:!important > 行内 style > ID > 类/属性/伪类 > 元素/伪元素
选择器特异性
p0,0,0,1
.card0,0,1,0
#hero .card p1,1,0,1
main p.intro { color: #334155; }  /* 0,0,1,1 — 胜 */
p { color: #94a3b8; }            /* 0,0,0,1 — 败 */

原则:避免 ID 与 !important;组件用单一类 .btn-primary;勿过深嵌套。


4.4 继承

可继承不可继承
colorfont-*line-heightmarginpaddingborder
text-alignwidthheightbackground
body {
  font-family: system-ui, "PingFang SC", sans-serif;
  color: #334155;
  line-height: 1.6;
}
.btn-link { color: inherit; font: inherit; }

4.5 盒模型详解

┌──────────── margin ────────────┐
│  ┌──────── border ────────┐   │
│  │  ┌──── padding ────┐   │   │
│  │  │    content      │   │   │
│  │  └─────────────────┘   │   │
│  └────────────────────────┘   │
└─────────────────────────────────┘
.course-card {
  width: 360px;
  padding: 16px;
  border: 1px solid #e2e8f0;
  margin: 12px;
}

4.5.1 content-box vs border-box

box-sizingwidth 含义
content-box(默认)仅内容;padding/border 撑大总宽
border-box含 padding+border,易控宽
*, *::before, *::after { box-sizing: border-box; }

width:200px; padding:20px; border:1px → content-box 总宽 242px;border-box 总宽 200px

4.5.2 外边距折叠

相邻块级元素垂直 margin 取较大值而非相加。防止:父设 padding/border,或触发 BFC。


4.6 BFC(块级格式化上下文)

独立渲染区域,内外布局互不影响。

触发方式

方式示例
display: flow-root推荐
overflow 非 visibleoverflow: auto
float 非 none老方法
display: flex/grid现代布局

用途

  1. 清除浮动:父 display: flow-root 包裹 float 子元素
  2. 阻止 margin 折叠
  3. 自适应栏:左 float + 右 overflow:auto(BFC)
.course-list { display: flow-root; }
.sidebar { float: left; width: 240px; }
.main-column { overflow: auto; }

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。