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><元素名>内容</元素名></code> 。起头部分可以包含元素的一种或多种属性,以 <code>属性名="属性值" 的形式</code> 书写,属性之间用空格隔开,例如 <code><div id="ID" class="CLASS" data-lrc="DATA">内容</div></code>,里面用什么属性应根据元素特性和创建需求而定;</p>
<p>◇ 自闭合标签: <code><元素名></code> 。自闭合标签不需要后一节 <code></元素名></code> ,它是自闭合的,也可带元素的各种合法属性和自定义属性。以 img 元素为例,其标签可以写成:<code><img src="图片地址" alt="" title="美丽的家乡"></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>◇ <div>:通用的块级容器。
◇ <p>:段落标签。
◇ <h1> ~ <h6>:标题标签。
◇ <ul>, <ol>, <li>:列表相关标签。
◇ <section>, <article>, <header>, <footer>, <nav> 等:HTML5 语义化标签。
◇ <form>:表单容器。
◇ <table>:表格。
</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>◇ <span>:通用的行内容器。
◇ <a>:超链接标签。
◇ <strong>, <b>:加粗文本。
◇ <em>, <i>:斜体(强调)文本。
◇ <img>:图片。(注意:虽然常被归为此类讨论,但其默认行为是行内块)。
◇ <br>:换行符。
</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>◇ <img>:图像元素。
◇ <input>:表单输入框。
◇ <button>:按钮。
◇ <textarea>:多行文本框。
◇ <select>:下拉选择框。
</code></pre>
<p><strong>🛞 元素类别的转换</strong></p>
<p>元素类别并非一成不变,很多应用场景可以根据需要通过元素 CSS display 属性修改元素的类别。例如:</p>
<pre><code>/* 用class选择器(也可以用id选择器)定义元素为块级元素 */
.my-pic { display: block; }
<!-- html元素通过class属性使用块状级别 -->
<img src="图片地址" class="my-pic" alt="">
</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> 这些HTML元素应该都见到过,只是不知道它们是这样分类的{:4_173:} 元素的类别还能改变,这个挺重要的。
感谢黑黑的讲解,学习了{:4_187:} 正确区分很重要,谢谢马老师对元素的三种分类的详细讲解{:4_180:} 红影 发表于 2026-3-9 16:14
这些HTML元素应该都见到过,只是不知道它们是这样分类的
以前说到某元素时提到过块级、行内之类的概念,就是没有详细介绍过 红影 发表于 2026-3-9 16:14
元素的类别还能改变,这个挺重要的。
感谢黑黑的讲解,学习了
是啊。
不知道你记不记得,东篱闲人教授用图片做移动的小播,图片不听使唤。这就是因为图片原本是行内块级元素,要能令之多维方向移动,需要块级元素权限 杨帆 发表于 2026-3-9 16:28
正确区分很重要,谢谢马老师对元素的三种分类的详细讲解
{:4_191:} 谢谢黑黑老师讲解,学习了!{:4_187:} 马黑黑 发表于 2026-3-9 18:12
以前说到某元素时提到过块级、行内之类的概念,就是没有详细介绍过
是的,这个帖子好,做了系统的归纳{:4_187:} 马黑黑 发表于 2026-3-9 18:15
是啊。
不知道你记不记得,东篱闲人教授用图片做移动的小播,图片不听使唤。这就是因为图片原本是行内 ...
这个例子我不记得了,发现元素分类还是很重要的{:4_204:} 红影 发表于 2026-3-11 10:44
这个例子我不记得了,发现元素分类还是很重要的
上个世纪人们设计 HTML 的时候,就是按照不同用途而进行设计出不同的元素类型的。
需要注意的是,有些元素可以做容器(如 div),有些原则上不能做容器。所以,做帖子,习惯上都是是运算 div 做帖子容器。 红影 发表于 2026-3-11 10:43
是的,这个帖子好,做了系统的归纳
不过它还不够全面。例如,基于 flex弹性布局、grid布局 而产生的扩展元素类型,这里没有讨论到。
页:
[1]