









前端学习全景图 · HTML5 + CSS3 全部知识点
📚 前端学习全景图
涵盖 HTML5 全部语义化标签与 CSS3+ 现代特性 — 从选择器到容器查询,从Flex到Grid,从过渡到滚动驱动动画。
HTML5 语义化 CSS Grid + Subgrid Flexbox 容器查询 级联层 @layer 嵌套CSS :has() 选择器 滚动驱动动画
语义化标签、文档结构、文本、列表、表格、表单、多媒体等
使用 <header> <nav> <main> <section> <article> <aside> <footer> 等标签构建清晰的文档结构。
<header> 页头<nav> 导航
<main> 主内容区<aside> 侧栏
<footer> 页脚
示例文本展示各种文本标签:
<strong> 重要文本 | <em> 强调文本 | <mark> 高亮文本 | <del> 删除文本 | <ins> 插入文本 | <sub> 下标 | <sup> 上标 | <small> 小字 | <abbr> 缩写 | <cite> 引用 | <q> 短引用
| <code> 代码 | <kbd> 键盘输入 |<samp> 输出| <var> 变量 | <time> 时间 | <bdo> 文字方向 | <bdi> 隔离文本
这是 <span> 通用行内容器 和
<div> 通用块容器
使用 <blockquote> 创建引用块:
学而不思则罔,思而不学则殆。—— 《论语》
使用 <pre> 保留格式:
function hello() {
console.log("Hello, World!");
}
| 技术 | 类型 | 难度 | 流行度 |
|---|---|---|---|
| HTML5 | 标记语言 | ⭐ | ⭐⭐⭐⭐⭐ |
| CSS3 | 样式语言 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| JavaScript | 编程语言 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 数据更新于 2024年 | |||
📸 使用 <picture> 和 <source> 实现响应式图片
<figure> + <figcaption> 图文组合
SVG 图形
点击展开 — <details> 和 <summary>
这是展开后的内容。使用了 HTML5 的详情披露组件。
默认展开的详情
这个 details 元素使用了 open 属性,默认展开。
这是使用 <dialog> 元素创建的原生对话框。
💡 这是使用 popover 属性创建的原生弹出层!
data-* 自定义数据属性:悬停查看提示
✏️ 这是一个 contenteditable 元素 — 点击即可编辑此文本!
🖐️ 这是一个 draggable 元素
从基础选择器到现代 :has() 和伪元素
p { color: red; }
这是 p 元素
.highlight { ... }
类选择器效果
#unique { ... }
ID 选择器效果
* { margin: 0; }
选择所有元素
[data-type="demo"]
[data-type="demo"]
[href^="https"] 以...开头 | [href$=".pdf"] 以...结尾 | [class*="btn"] 包含
.parent > .child { }
只选择直接子元素
h4 ~ p { }
同一父元素下后续所有兄弟
:not(.excluded) 选中所有非该类的元素
:is(h1, h2, h3) { margin: 0; }
零特异性(:where) vs 最高特异性(:is)
.card:has(> img) { }
:has(.child.active) 选中此父元素
已选中
已禁用
:focus-within 当内部元素聚焦时
::before 图标 →
← ::after 图标
首字母大写装饰效果,使用 ::first-letter 伪元素。
使用 ::first-line 伪元素来改变第一行的样式。这一行会显示为粗体并使用不同的颜色。
选中此文本查看自定义选中颜色效果。
内容(content) + 内边距(padding) + 边框(border) + 外边距(margin)
box-sizing: border-box 是最常用的盒模型,使 padding 和 border 包含在总宽高内。
box-sizing: content-box
宽高不含 padding/border
box-sizing: border-box
宽高含 padding/border
static
relative (偏移)
absolute
固定定位示例(右下角的固定按钮):
sticky 定位示例 — 请参考页面顶部的导航栏(position: sticky; top: 0)
float: left
float: right
这是环绕浮动元素的文本内容。使用 float: inline-start(逻辑属性)和 float: inline-end。文本会围绕浮动元素排列,展示传统的浮动布局方式。
使用 clear: both 清除浮动。
一维布局系统,用于在行或列中排列元素。
flex: 1 1 200px
项目 1
flex-grow: 3
项目 2(增长更多)
flex-shrink: 0
flex-basis: 150px
项目 3(不收缩)
项目 4
对齐属性:justify-content(主轴对齐)align-items(交叉轴对齐)gap(间距)
space-between
space-between
space-between
二维布局系统,同时控制行和列。
1fr 1fr 1fr
grid-column: span 2
grid-row: span 2
auto-fill + minmax
响应式网格
自动调整
子网格项 1
此项目使用 grid-template-rows: subgrid 与父网格对齐。
子网格项 2
子网格允许嵌套网格继承父网格的轨道定义。
这是子网格的第二行内容,与父网格对齐。
子网格项 3
这是多列布局的示例文本。使用 column-count 和 column-gap 属性可以轻松创建类似报纸的多列排版效果。文本会自动从一列流到下一列。
多列布局非常适合展示大段的文本内容。你可以使用 column-rule 添加列之间的分隔线。
使用 column-width 替代 column-count 可以创建响应式的多列布局,列数会根据容器宽度自动调整。
使用 container-type 和 @container 根据容器尺寸而非视口尺寸应用样式。
📦
大容器(≥500px 时横向排列,通过 @container 实现)
使用 transition 属性在状态变化时实现平滑过渡。
缓动函数:ease ease-in ease-out ease-in-out linear cubic-bezier() steps()
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.element {
animation: fadeIn 0.8s ease-out both;
}
使用 animation-timeline: view() 或 scroll() 让动画随滚动进度驱动。
页面顶部的彩色进度条就是使用 animation-timeline: scroll(root) 实现的滚动驱动动画。
向下滚动页面,观察元素的滚动触发动画:
2D 变换:translate rotate scale skew
translate
rotate
scale
skewX
3D 变换(悬停查看效果):
使用 perspective 创建3D透视效果。
悬停移除滤镜
mix-blend-mode
clip-path
使用 --variable-name 定义变量,var() 引用。
:root {
--primary-color: oklch(0.75 0.15 200);
--spacing-unit: 1rem;
}
.element {
color: var(--primary-color);
padding: var(--spacing-unit);
}
使用 @property 注册自定义属性类型:
@property --angle {
syntax: '';
inherits: false;
initial-value: 0deg;
}
.parent {
color: blue;
& .child {
color: red;
}
&:hover {
color: green;
}
.sibling {
font-weight: bold;
}
}
悬停此元素查看嵌套CSS效果(子元素会变色)
@layer reset, base, components, utilities;
/* 后面的层优先级更高 */
@layer reset { ... }
@layer base { ... }
@layer components { ... }
本页面的所有样式都组织在 @layer 中,优先级从低到高依次为:reset → base → components → utilities → animations
使用相对书写方向的属性,替代物理方向属性。
此元素使用 margin-inline padding-block border-inline-start 等逻辑属性。
逻辑属性会根据 writing-mode 和 direction 自动调整。
这是使用 writing-mode: vertical-rl 的竖排文字示例。
现代 CSS 颜色:oklch() color-mix() lab() lch()
圆锥渐变示例:
calc() min() max() clamp()
/* clamp() 用于流式排版 */ font-size: clamp(1rem, 0.8rem + 0.5vw, 1.5rem); /* min() 取最小值 */ inline-size: min(100%, 800px); /* max() 取最大值 */ padding: max(1rem, 2vw); /* calc() 计算 */ inline-size: calc(100% - 2rem);
scroll-behavior: smooth 实现平滑滚动,scroll-snap-type 实现滚动吸附。
使用 text-wrap: balance 和 text-wrap: pretty 优化文本排版。
这是一个使用 text-overflow: ellipsis 的溢出文本示例,文本超出容器宽度时会被截断并显示省略号。
这是一个使用 -webkit-line-clamp 进行多行文本截断的示例。当文本超过指定行数时,会被截断并显示省略号。这是第二行内容。这是第三行内容,超过三行就会被截断。
文字阴影效果
波浪线下划线
字母间距与大小写转换
单词间距与行高设置示例文本
aspect-ratio: 16/9
object-fit: cover + object-position: center 30%
content-visibility: auto 可以提升大型页面的渲染性能。
此元素使用 content-visibility: auto 和 contain-intrinsic-size: 200px 进行性能优化。
使用 @media 根据设备特征应用不同样式。
@media (max-width: 768px) {
/* 移动端样式 */
}
@media (min-width: 769px) and (max-width: 1200px) {
/* 平板端样式 */
}
@media (min-width: 1200px) {
/* 桌面端样式 */
}
@media (prefers-reduced-motion: reduce) {
/* 用户偏好减少动画 */
}
@media (prefers-color-scheme: dark) {
/* 暗色模式 */
}
@media print {
/* 打印样式 */
}
当前页面根据视口宽度自动调整网格列数、字体大小和间距。尝试调整浏览器窗口大小来查看效果。
视口单位:vh vw vmin vmax dvh svh lvh
100vw
视口宽度
100dvh
动态视口高度
50vmin
视口短边的50%
50vmax
视口长边的50%
相对单位:em rem ch ex lh rlh %
使用 srcset 和 sizes 属性根据设备像素比和视口宽度加载不同尺寸的图片。
根据视口宽度自动选择最佳图片尺寸
@supports (display: grid) {
/* 支持 Grid 的浏览器应用这些样式 */
.layout { display: grid; }
}
@supports not (display: grid) {
/* 不支持的浏览器使用 fallback */
.layout { display: flex; }
}
@scope (.card) {
/* 这些样式只作用于 .card 内部 */
h3 { color: var(--clr-primary); }
p { font-size: 0.95em; }
:scope { border: 1px solid var(--clr-border); }
}
使用 ::after 和 data-* 属性创建纯 CSS 工具提示:
悬停查看 这个文本 的效果。
这是一个使用 ::first-letter 伪元素实现首字母下沉效果的段落。首字母会变大并浮动到左侧,其他文字环绕排列。这种效果常见于杂志和报纸的排版中。
此元素继承了父级定义的 --custom-color 变量。
子元素重新定义了 --custom-color 变量。
使用 fallback 值:var(--undefined, fallback)
dir="rtl" 从右到左:
هذا نص باللغة العربية
<bdo> 双向覆盖:这段文字会被从右到左显示
<bdi> 双向隔离:用户输入内容
使用 will-change 提示浏览器优化动画性能:
.animated-element {
will-change: transform, opacity;
/* 动画结束后移除 will-change */
}
优先使用 transform 和 opacity 进行动画,避免触发布局和绘制。
本页面涵盖了 HTML5 和 CSS3 的核心知识点及最新特性
HTML5 语义化 CSS Grid + Flexbox 容器查询 @layer 级联层 CSS 嵌套 :has() 选择器 滚动驱动动画 逻辑属性 oklch 颜色 color-mix() subgrid 子网格 @container aspect-ratio clip-path mix-blend-mode popover / dialog scroll-snap prefers-reduced-motion @supports @scope
构建于 2024 · 使用最新 CSS 特性 · 持续更新中
📧 联系:learn@frontend.dev此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。