语义化标签需在实践中掌握,核心是理解结构含义而非死记硬背;、、、、 表达内容关系,非视觉容器; 代表可独立分发内容, 仅逻辑分组; 与 传递语义重要性,影响读屏体验;结构清晰比标签数量更重要。

直接上手写,别等“学完所有标签”再开始——语义化标签不是靠背出来的,是靠在真实结构里反复替换 <div> 才建立直觉的。
<h3>先搞懂 <code><header></header>、<nav></nav>、<main></main>、<aside></aside>、<footer></footer> 这五个最常错用的标签
它们不是“美化用的容器”,而是浏览器和屏幕阅读器能识别的结构信号。比如 <header></header> 不一定非得在页面顶部,但必须是某个“内容区块”的头部(比如一篇文章的标题区也可以套 <header></header>);<nav></nav> 必须包裹一组导航链接,纯 logo 或搜索框不能单独塞进去。
-
<main></main>在整个页面中只能出现一次,且不能嵌套在<article></article>、<aside></aside>、<nav></nav>、<footer></footer>里 -
<aside></aside>不等于“侧边栏”,而是与当前内容“相关但可独立存在”的信息,比如博客文章旁的作者简介、推荐阅读 - 如果拿不准该用
<section></section>还是<div>,问自己:这个区块有没有标题?如果有,优先用 <code><section></section>+<h2></h2>组合<article></article>和<section></section>的边界在哪?简单说:
<article></article>是能被单独分发、重用的内容单元(比如一篇博客、一条新闻、一个用户评论),它自带隐含的独立语义;<section></section>只是逻辑分组,没有独立性。一个<article></article>里可以有多个<section></section>,但反过来不行。- 错误写法:
<section><h2>关于我们</h2> <p>我们是一家…</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill4293" title="Doc To HTML"><img src="https://img.php.cn/upload/skill/000/000/081/178998486916110.jpg" alt="Doc To HTML" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill4293" title="Doc To HTML" class="overflowclass">Doc To HTML</a> <p class="overflowclass">使用 MinerU 文档处理引擎将 Word 文档(.doc、.docx)转换为保留结构和格式的干净 HTML。</p> </div> <a rel="nofollow" href="/xiazai/skill4293" title="Doc To HTML" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div></section>—— 这段没独立分发价值,用<div> 更合适 <li>正确写法:<code><article><h2>8月产品更新日志</h2> <p>新增了暗色模式…</p></article>—— 这条日志可被 RSS 抓取、可单独分享 - 注意:
<article></article>默认不带样式,视觉上不会自动缩进或加边框,别指望它“看起来像卡片” - 表单里的必填提示:“*为必填项”应写成
<strong>*</strong>为必填项,而不是<b>*</b> - 错误警告文字:
<strong>密码长度不足6位</strong>—— 读屏用户能立刻感知严重性 - 不要为了“统一用
<b></b>”而放弃语义,CSS 可以让<strong></strong>显示为普通字体,但语义无法靠 CSS 补回来
为什么
<strong></strong>比<b></b>更重要?这不是“哪个更好看”的问题,而是“浏览器/读屏软件怎么理解你这段话”的问题。
<strong></strong>表示内容有强重要性,读屏软件会加重语气;<b></b>只是视觉加粗,语义为零。同理:<em></em>是强调语气(读屏会变调),<i></i>只是斜体(适合外文术语、船名等)。最容易被忽略的一点:语义化不是贴标签比赛。一个
<main></main>里塞满<section></section>和<article></article>却没有合理层级(比如漏掉<h2></h2>),反而会让读屏软件迷失。结构清晰比标签数量更重要。 - 错误写法:










