语义化标签不可替代:<strong>表强重要性,<em>表语气强调,<b>/<i>仅视觉无语义;<time>必须带合法datetime属性;<pre><code>须嵌套使用以保结构与可访问性。

<strong> 不是“加粗”,<em> 不是“斜体”——它们表达的是内容在句子中的逻辑权重和语气倾向,这是格式化标签语义化的起点。
为什么 <strong> 和 <em> 不能用 <b>、<i> 替代
浏览器默认渲染效果可能相似,但机器读取方式完全不同。屏幕阅读器遇到 <strong> 会加重语气并放慢语速,遇到 <em> 会改变语调强调;而 <b> 和 <i> 只触发样式变化,无任何语义信号。
-
<strong>表示内容具有强重要性(如警告、法律条款关键句),可嵌套使用,层级越深语义越重 -
<em>表示强调语气(如反讽、对比、转折),通常单层,连续嵌套易造成语音混乱 -
<b>仅用于“需要视觉突出但无额外重要性”的场景,比如产品名、关键词高亮(非作者主观强调) -
<i>适用于外文术语、科技术语、船名、古代文献中特定称谓等分类性斜体,不是为了强调
<time> 的 datetime 属性到底要不要写
要写,而且必须是机器可解析的格式。不写 datetime,<time> 就退化成普通容器,搜索引擎和日历工具无法提取时间信息。
- 人类显示文本可以自由写:
<time datetime="2026-09-30">今天</time> - 日期必须为
YYYY-MM-DD,时间需补全时分秒和时区:2026-09-30T11:30:00+08:00 - 避免用中文或模糊表述:
<time>上周三</time>或<time>九月三十号</time>对机器完全无效 - 动态生成页面时,后端或构建脚本必须同步注入合法
datetime值,前端 JS 拼接字符串容易漏掉时区
<pre> 和 <code> 的组合为什么不是可选,而是必须
<pre> 只负责保留空格与换行,<code> 才声明内容类型为“计算机代码”。两者语义不同、职责分离,混用或省略任一都会破坏可访问性和 SEO。
立即学习“前端免费学习笔记(深入)”;
- 单独用
<pre>:屏幕阅读器不会提示“这是一段代码”,只按普通文本逐字朗读 - 单独用
<code>:内部所有换行和缩进被浏览器合并为单空格,代码结构彻底丢失 - 正确写法必须嵌套:
<pre><code class="js">console.log("hello");</code></pre> -
class="js"这类标记虽非强制,但能被语法高亮库识别,也辅助代码分析工具归类
真正难的不是记住标签名,而是每次敲下 <strong> 之前,先问一句:这句话如果脱离颜色和粗细,仅靠语音或纯文本呈现,是否仍能准确传递作者想强化的那个判断或态度?



















