html中无官方“文本标签”分类,但开发者常将、~、、、、、、等用于表达文本语义与层级的标签统称为文本标签,核心作用是传达内容结构与含义,而非仅控制样式。

哪些标签算“文本标签”?先划清边界
严格来说,HTML里没有叫“文本标签”的官方分类,但开发者常把 <p></p>、<h1></h1>~<h6></h6>、<strong></strong>、<em></em>、<small></small>、<mark></mark>、<del></del>、<ins></ins> 这些用于包裹或修饰纯文本内容的标签统称为文本标签。它们不是用来布局或交互的,核心任务是表达文字的语义和层级。
<p></p> 和 <h1></h1>~<h6></h6>:结构不能乱用
很多人把 <h1></h1> 当作“加粗加大字号”的样式工具,这是最常见误用。实际规则很明确:
-
<h1></h1>应该全页唯一,代表页面主主题(比如文章标题);<h2></h2>是它的直接子级(如章节),依此类推,形成逻辑嵌套 -
<p></p>不是“换行符”,它表示一个语义完整的段落,浏览器默认上下有外边距;连续多个<p></p>会自然分段,不需要手动加<br> - 跳过层级(比如
<h2></h2>后直接写<h4></h4>)会破坏可访问性,屏幕阅读器可能无法正确播报结构
<strong></strong>、<em></em>、<mark></mark>、<del></del>:语义 ≠ 样式
这些标签的关键价值在语义,而非视觉效果:
-
<strong></strong>表示内容重要性高(比如警告、关键结论),不是单纯加粗;<b></b>才是纯视觉加粗,无语义 -
<em></em>表示强调语气(类似说话时重读),而<i></i>仅表示不同语调或术语(如拉丁文、船名),也不等价于斜体样式 -
<mark></mark>用于高亮“与当前上下文相关”的内容(比如搜索关键词在结果页中的匹配项),不是随便标黄 -
<del></del>和<ins></ins>必须成对使用才体现修改意图;单独<del></del>只表示“已删除”,但没说替换成什么
容易被忽略的细节:空格、换行、嵌套限制
HTML 对文本标签内空白字符的处理很特殊,这点直接影响渲染结果:
- 标签内连续空格、制表符、换行符会被浏览器合并为单个空格(
<pre class="brush:php;toolbar:false;"></pre>除外) -
<p></p>里不能嵌套<h1></h1>、<div>、<code><p></p>等块级元素(会触发自动闭合,导致结构错乱) -
<strong></strong>或<em></em>可以跨行、可以嵌套(比如<em>非常<strong>重要</strong></em>),但避免三层以上嵌套,影响可读性 -
<small></small>常被误用为“小号字体”,其实它专指旁注、版权、法律条款等次要信息,有明确语义权重
真正难的不是记住每个标签怎么写,而是每次敲下 <h3></h3> 或 <mark></mark> 时,得问一句:这个选择是否真实反映了内容在文档逻辑里的位置和作用。











