马黑黑 发表于 2026-3-9 12:48

HTML元素分类

<style>
        .showBox { font: normal 18px/1.2 sans-serif; overflow: auto; position: relative; }
        .showBox p { margin: 10px 0; }
        .showBox h1, .showBox h2 { margin: 4px 0; }
        .showBox code, .showBox pre { background: rgba(0,128,128,.25); padding: 2px 6px; tab-size: 4; }
        .showBox pre { padding: 10px 20px; white-space: pre-wrap; word-wrap: break-word; }
        .showBox pre code { padding: 0; background: none; }
        .showBox blockquote { margin: 10px 20px; padding: 2px 15px; border-left: 3px solid skyblue; background: rgba(240,248,255,.65); }
        .showBox table { border-collapse: collapse; white-space: pre-wrap; box-sizing: border-box; }
        .showBox th, .showBox td { padding: 8px 10px; border: 1px solid #999; }
        .showBox th { text-align: center; background: #eee; }
</style>

<div class="showBox">
<p>HTML元素(Element)有时也被称作标签。<strong>元素</strong> 和 <strong>标签</strong> 概念上其实有区别:标签侧重标记含义,是 HTML 中用于标记内容的符号,通常由尖括号包围;标签侧重书写形式,可以分为起始标签和结束标签,也有一些是自闭合标签。本文在行文上遵循二者的区别进行相关讨论。</p>
<p>在 HTML 中,元素根据其默认的布局行为被分为三类:<strong>块级元素</strong>、<strong>行内元素</strong> 和 <strong>行内块元素</strong>。它们的核心区别在于如何占据页面空间以及对 CSS 尺寸属性(如宽高、位置等等)的响应。</p>
<blockquote>
<p>HTML元素在WEB页面文档流中以标签的形式出现——</p>
<p>◇ 成对标签 :<code>&lt;元素名&gt;内容&lt;/元素名&gt;</code> 。起头部分可以包含元素的一种或多种属性,以 <code>属性名="属性值" 的形式</code> 书写,属性之间用空格隔开,例如 <code>&lt;div id="ID" class="CLASS" data-lrc="DATA"&gt;内容&lt;/div&gt;</code>,里面用什么属性应根据元素特性和创建需求而定;</p>
<p>◇ 自闭合标签: <code>&lt;元素名&gt;</code> 。自闭合标签不需要后一节 <code>&lt;/元素名&gt;</code> ,它是自闭合的,也可带元素的各种合法属性和自定义属性。以 img 元素为例,其标签可以写成:<code>&lt;img src="图片地址" alt="" title="美丽的家乡"&gt;</code> 。</p>
</blockquote>
<p>下面讨论元素的三种分类——</p>
<h2>1️⃣ 块级元素(Block-level Elements)</h2>
<p><strong>块级元素</strong> 是页面布局的骨架,主要用于构建大的结构区域。</p>
<ul>
<li>独占一行:无论内容多少,都会从新的一行开始,并迫使后面的元素换行显示。</li>
<li>可设置宽高:可以通过 CSS 设置 width、height、margin 和 padding 属性。</li>
<li>默认宽度:在未设置宽度时,默认宽度会撑满其父容器的可用宽度。</li>
<li>容器功能:通常可以包含其他块级元素和行内元素(存在少数特例,如 <p> 标签内不能放块级元素)。</p></li>
</ul>
<p><strong>常见块级元素:</strong></p>
<pre><code>◇ &lt;div&gt;:通用的块级容器。
◇ &lt;p&gt;:段落标签。
◇ &lt;h1&gt; ~ &lt;h6&gt;:标题标签。
◇ &lt;ul&gt;, &lt;ol&gt;, &lt;li&gt;:列表相关标签。
◇ &lt;section&gt;, &lt;article&gt;, &lt;header&gt;, &lt;footer&gt;, &lt;nav&gt; 等:HTML5 语义化标签。
◇ &lt;form&gt;:表单容器。
◇ &lt;table&gt;:表格。
</code></pre>
<h2>2️⃣ 行内元素(Inline Elements)</h2>
<p><strong>行内元素</strong> 主要用于包裹和修饰文本或小段内容,不会破坏文档的流动。
不换行:与其他行内元素在同一条水平线上排列,直到浏览器窗口宽度不足时才会换行。</p>
<ul>
<li>宽高无效:CSS 设置的 width 和 height 属性无效,其尺寸由内容(文本或图片)本身决定。</li>
<li>间距限制:垂直方向的 margin 和 padding 设置对布局无影响,只有水平方向的设置有效。</li>
<li>内容限制:通常只能包含文本或其他行内元素。</li>
</ul>
<pre><code>◇ &lt;span&gt;:通用的行内容器。
◇ &lt;a&gt;:超链接标签。
◇ &lt;strong&gt;, &lt;b&gt;:加粗文本。
◇ &lt;em&gt;, &lt;i&gt;:斜体(强调)文本。
◇ &lt;img&gt;:图片。(注意:虽然常被归为此类讨论,但其默认行为是行内块)。
◇ &lt;br&gt;:换行符。
</code></pre>
<h2>3️⃣ 行内块元素(Inline-block Elements)</h2>
<p><strong>行内块元素</strong> 结合了行内元素和块级元素的特性,是一种非常有用的显示类型。</p>
<ul>
<li>不换行:像行内元素一样,与其他行内或行内块元素在一行内显示。</li>
<li>可设置宽高:像块级元素一样,可以自由设置 width、height、margin 和 padding 等所有方向的属性。</li>
</ul>
<p><strong>常见行内块元素:</strong></p>
<pre><code>◇ &lt;img&gt;:图像元素。
◇ &lt;input&gt;:表单输入框。
◇ &lt;button&gt;:按钮。
◇ &lt;textarea&gt;:多行文本框。
◇ &lt;select&gt;:下拉选择框。
</code></pre>
<p><strong>&#128734; 元素类别的转换</strong></p>
<p>元素类别并非一成不变,很多应用场景可以根据需要通过元素 CSS display 属性修改元素的类别。例如:</p>
<pre><code>/* 用class选择器(也可以用id选择器)定义元素为块级元素 */
.my-pic { display: block; }

&lt;!-- html元素通过class属性使用块状级别 --&gt;
&lt;img src="图片地址" class="my-pic" alt=""&gt;
</code></pre>
<p>这样,图片元素就会从行内元素变为块级元素,拥有独占行的能力,两张图片放在一起时会一上一下排列。</p>
<h2>☪️ 小结:三者核心区别</h2>
<table>
<thead>
<tr>
<th align="right">元 素 名 称</th>
<th align="center">是否独占一行</th>
<th align="center">能否设置宽高</th>
</tr>
</thead>
<tbody><tr>
<td align="right">块状元素(Block)</td>
<td align="center">✅</td>
<td align="center">✅</td>
</tr>
<tr>
<td align="right">行内元素(Inline)</td>
<td align="center">❌</td>
<td align="center">❌</td>
</tr>
<tr>
<td align="right">行内块元素(Inline-block)</td>
<td align="center">❌</td>
<td align="center">✅</td>
</tr>
</tbody></table>
</div>

红影 发表于 2026-3-9 16:14

这些HTML元素应该都见到过,只是不知道它们是这样分类的{:4_173:}

红影 发表于 2026-3-9 16:14

元素的类别还能改变,这个挺重要的。
感谢黑黑的讲解,学习了{:4_187:}

杨帆 发表于 2026-3-9 16:28

正确区分很重要,谢谢马老师对元素的三种分类的详细讲解{:4_180:}

马黑黑 发表于 2026-3-9 18:12

红影 发表于 2026-3-9 16:14
这些HTML元素应该都见到过,只是不知道它们是这样分类的

以前说到某元素时提到过块级、行内之类的概念,就是没有详细介绍过

马黑黑 发表于 2026-3-9 18:15

红影 发表于 2026-3-9 16:14
元素的类别还能改变,这个挺重要的。
感谢黑黑的讲解,学习了

是啊。

不知道你记不记得,东篱闲人教授用图片做移动的小播,图片不听使唤。这就是因为图片原本是行内块级元素,要能令之多维方向移动,需要块级元素权限

马黑黑 发表于 2026-3-9 18:15

杨帆 发表于 2026-3-9 16:28
正确区分很重要,谢谢马老师对元素的三种分类的详细讲解

{:4_191:}

梦江南 发表于 2026-3-9 18:38

谢谢黑黑老师讲解,学习了!{:4_187:}

红影 发表于 2026-3-11 10:43

马黑黑 发表于 2026-3-9 18:12
以前说到某元素时提到过块级、行内之类的概念,就是没有详细介绍过

是的,这个帖子好,做了系统的归纳{:4_187:}

红影 发表于 2026-3-11 10:44

马黑黑 发表于 2026-3-9 18:15
是啊。

不知道你记不记得,东篱闲人教授用图片做移动的小播,图片不听使唤。这就是因为图片原本是行内 ...

这个例子我不记得了,发现元素分类还是很重要的{:4_204:}

马黑黑 发表于 2026-3-11 12:28

红影 发表于 2026-3-11 10:44
这个例子我不记得了,发现元素分类还是很重要的

上个世纪人们设计 HTML 的时候,就是按照不同用途而进行设计出不同的元素类型的。

需要注意的是,有些元素可以做容器(如 div),有些原则上不能做容器。所以,做帖子,习惯上都是是运算 div 做帖子容器。

马黑黑 发表于 2026-3-11 12:29

红影 发表于 2026-3-11 10:43
是的,这个帖子好,做了系统的归纳

不过它还不够全面。例如,基于 flex弹性布局、grid布局 而产生的扩展元素类型,这里没有讨论到。
页: [1]
查看完整版本: HTML元素分类