【HTML+CSS】week5-summary

作者:mario 发布时间: 2026-08-19 阅读量:12 评论数:0

第 5 周总结:CSS 进阶与动效 — 让页面"活"起来

蜗牛往上爬 · 前端工业可视化学习笔记 第 5 周总结
本周是 CSS 的"进阶收尾周"——定位让元素脱离文档流,transition 让变化平滑,transform 让变形高效,@keyframes 让动画自动播放,伪元素让装饰不污染 HTML。这五样能力组合起来,就是大屏的"视觉灵魂"。


目录


一、本周学了什么

天数

主题

核心知识点

产出

Day 1-2

定位与层级

position 五种模式、定位上下文、z-index

设备信息弹窗

Day 3-4

过渡与变换

transition、缓动、transform(位移/旋转/缩放)

卡片悬停动效

Day 5-6

动画与伪元素

@keyframes、animation、::before/::after

呼吸灯面板 + 数据跳动

知识图谱

CSS 进阶与动效
├── 定位(position)
│   ├── static(默认)
│   ├── relative(相对自己,不脱标)
│   ├── absolute(相对定位祖先,脱标)
│   ├── fixed(相对窗口,脱标,不随滚动)
│   ├── sticky(粘性,到达阈值后固定)
│   ├── 定位上下文:父relative + 子absolute
│   └── z-index(层级控制)
│
├── 过渡(transition)
│   ├── transition-property / duration / timing-function / delay
│   ├── 缓动:ease / linear / ease-in / ease-out / ease-in-out
│   └── 写在元素本身,不写在 :hover 里
│
├── 变换(transform)
│   ├── translate(位移)
│   ├── rotate(旋转)
│   ├── scale(缩放)
│   ├── skew(倾斜)
│   ├── transform-origin(变换原点)
│   └── 性能好:只触发合成,不触发重排
│
├── 动画(animation)
│   ├── @keyframes(定义关键帧)
│   ├── animation-name / duration / timing-function / iteration-count / direction
│   ├── infinite(无限循环)
│   └── transition vs animation:触发式 vs 自动播放
│
└── 伪元素(::before / ::after)
    ├── content(必须写)
    ├── 不修改 HTML,插入虚拟元素
    ├── 装饰用伪元素,功能用真实 DOM
    └── 伪元素 + 动画 = 呼吸灯边框

二、三个练习页面回顾

练习 1:设备信息弹窗

用时:Day 1-2,约 2 小时

核心代码

.overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 1000; }
.modal { position: relative; }
.close-btn { position: absolute; top: 12px; right: 16px; }

收获:掌握了 positioning 五种模式 + 遮罩层弹窗模式。fixed 做全屏遮罩,absolute 做关闭按钮,z-index 控制层级。

练习 2:卡片悬停动效

用时:Day 3-4,约 2 小时

核心代码

.card { transition: transform 0.3s ease, box-shadow 0.3s ease; }
.card:hover { transform: translateY(-8px); box-shadow: 0 12px 32px rgba(0,0,0,0.3); }
.card:hover .value { color: #219ebc; }
.card:hover .status { transform: scale(1.5); }

收获:transition + transform 组合是悬停动效的标配。translateY 上浮、scale 放大、transition 平滑过渡。

练习 3:呼吸灯面板 + 数据跳动

用时:Day 5-6,约 2 小时

核心代码

.panel::before { animation: borderBreathe 2s ease-in-out infinite; }
.panel.alert::before { animation: alertBreathe 1s ease-in-out infinite; }
.panel.loading::after { animation: spin 1s linear infinite; }
.value { animation: countUp 0.6s ease-out; }

收获@keyframes + 伪元素 = 大屏动效。呼吸灯用 ::before,旋转加载用 ::after,完全不污染 HTML。


三、动效核心速记

定位速记

static   → 默认
relative → 微调,做定位上下文
absolute → 弹窗,相对定位祖先
fixed    → 固定导航/遮罩,相对窗口
sticky   → 吸顶,到达阈值后固定

transition vs animation

transition  → 需要触发器(hover/focus)
animation   → 自动播放,可循环
transform   → 位移/旋转/缩放,性能好

常用动画模板

呼吸灯    → opacity 1 ↔ 0.3
数据跳动  → translateY + opacity
旋转      → rotate(0deg → 360deg)
闪烁      → opacity 0 ↔ 1
边框呼吸  → border-color + box-shadow

伪元素黄金法则

装饰(边框呼吸、图标、分割线)→ ::before / ::after
功能(按钮、输入框)         → 真实 DOM

四、本周踩过的坑

原因

解决

absolute 定位跑偏

父元素没设 relative

父relative + 子absolute

z-index 不生效

没设定位

只有定位元素 z-index 才生效

transition 移开时瞬间跳回

transition 写在 :hover 里

写在元素本身上

伪元素不显示

没写 content

必须写 content: ""

动画不播放

没写 duration

必须同时写 name 和 duration

伪元素挡住内容

绝对定位盖住了

pointer-events: none


五、自测清单

全部打勾再进入下一周。

  • [ ] 能说出 position 五种模式:static/relative/absolute/fixed/sticky

  • [ ] 能解释"父relative + 子absolute"模式

  • [ ] 能使用 z-index 控制层级

  • [ ] 能写出 transition 简写(属性 时长 缓动)

  • [ ] 能使用 transform 做位移(translate)、旋转(rotate)、缩放(scale)

  • [ ] 能说出 transition 和 animation 的区别

  • [ ] 能写出 @keyframes 关键帧动画

  • [ ] 能使用 animation 简写

  • [ ] 能使用 ::before 和 ::after 伪元素

  • [ ] 能做出呼吸灯边框(伪元素 + 动画)

  • [ ] 3 个练习页面全部完成并在浏览器验证

  • [ ] 每日博客文章 1 篇(共 3 篇)+ 本篇周总结 = 4 篇完成


六、下周预告

第 6 周:综合实战——大屏风格静态页面

下周是阶段 0 的收官周——综合 HTML+CSS 所有知识,做一个完整的大屏风格静态页面。

预计内容:

  • 大屏布局设计(1920×1080 固定尺寸)

  • 深色主题 + 渐变 + 半透明面板

  • 数据面板网格(Grid 布局)

  • 呼吸灯边框 + 数据跳动动效

  • 完整的"智慧工厂监控大屏"静态页面

动手练:从零搭建一个完整的大屏静态页面,包含标题栏、数据面板、图表占位区、告警面板、底部状态栏。


📎 本文为"蜗牛往上爬"学习博客系列 · 阶段 0(HTML+CSS)第 5 周 · 总结篇

评论