语义化标签提升HTML结构质量与可访问性。用header/main/footer替代div,配合section/article/aside明确内容逻辑,避免无意义嵌套;Flexbox/Grid应直接作用于语义容器,减少class冗余。

直接用语义化标签搭骨架,比套 div 快得多,也更健壮。
用 header、main、footer 替代一堆 div class
浏览器默认不渲染这些标签的样式,但它们自带语义和隐式 ARIA 角色,对 SEO 和屏幕阅读器友好。手写时不用反复思考 class 名,结构一眼可读。
-
header放页眉、Logo、主导航,一个页面通常只用一次 -
main是页面唯一主内容区,不能嵌套在article或aside里 -
footer不一定只能在页面底部,它属于其最近的章节级祖先(比如某篇文章末尾的版权说明也可用footer) - 别用
div class="header"模拟语义标签——既没语义,又增加 CSS 选择器复杂度
嵌套层级要克制:避免 div 套 div 套 div
常见错误是把所有布局都压进 div,再靠 CSS 控制位置。结果 HTML 层级深、可读差、调试难。
- 优先用
section表达逻辑区块(如“产品介绍”“用户评价”) - 用
article包裹独立成篇的内容(博客条目、新闻稿) - 用
aside放附属信息(侧边栏推荐、作者简介),不是所有右边栏都叫sidebar - 如果某层
div只为加 margin/padding,大概率可以删掉,改用 CSS 的gap或padding直接作用于语义容器
Flexbox 和 Grid 应该配在语义容器上,不是 div 上
把 display: flex 写在 main 或 header 上,比写在 div.container 上更自然,也减少无意义 class。
-
main { display: flex; flex-direction: column; }可直接控制主内容流 -
header nav { display: flex; gap: 1rem; }比给每个li加浮动或 inline-block 更可控 - Grid 布局适合定义整体页面网格,比如
body { display: grid; grid-template-areas: "head head" "nav main" "foot foot"; },然后让header、nav、main各自grid-area - 别在
div上硬套 layout class(如class="d-flex justify-content-between"),那是 Bootstrap 的妥协,不是 HTML 本意
真正卡住人的不是标签怎么写,而是不确定某个内容该归到 section 还是 article,或者 aside 是否算主内容的一部分——这时候回看语义定义,比查 CSS 效果更快。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











