在 HTML 中,元素根据其在页面布局中的表现行为主要分为行内元素、块级元素和空元素。理解它们的区别对于掌握 CSS 布局至关重要。
一、行内元素 (Inline Elements)
特点:
- 不独占一行:多个行内元素可以在同一行内依次排列(直到该行空间不足才换行)。
- 宽度和高度:无法直接设置
width
和height
(除非将其display
改为inline-block
或block
)。 - 垂直方向的
margin
和padding
:margin-top
/margin-bottom
通常无效或表现异常(不会影响其他元素的布局),但padding-top
/padding-bottom
会显示背景,但不影响布局。 - 水平方向的
margin
和padding
:有效。 - 内容决定尺寸:其宽度和高度由其内容(文本、图片等)决定。
- 不能包含块级元素:通常只能包含文本或其他行内元素。
常见行内元素示例:
<span>
:通用的行内容器,无语义。<a>
:超链接。<strong>
:重要性强调(语义化粗体)。<em>
:语气强调(语义化斜体)。<b>
:粗体(仅外观,无强调语义)。<i>
:斜体(仅外观,如外文、书名)。<u>
:下划线。<s>
/<del>
:删除线。<small>
:小号文本。<mark>
:高亮文本。<img>
:图像(虽然是行内元素,但表现类似inline-block
,可设置宽高)。<br>
:换行(严格来说是空元素,但常用于行内)。<code>
:代码片段。<sub>
/<sup>
:下标/上标。<q>
:短引用。<cite>
:作品标题引用。
二、块级元素 (Block-level Elements)
特点:
- 独占一行:每个块级元素都会从新的一行开始,并且其后的元素也必须从新的一行开始。
- 宽度和高度:可以设置
width
和height
。 margin
和padding
:所有方向的margin
和padding
都有效,并且会影响布局。- 默认宽度:在未设置宽度时,默认占据其父元素的整个宽度。
- 可以包含:可以包含其他块级元素、行内元素以及文本。
常见块级元素示例:
<div>
:通用的块级容器,无语义。<p>
:段落。<h1>
到<h6>
:标题。<ul>
/<ol>
/<li>
:无序列表、有序列表、列表项。<dl>
/<dt>
/<dd>
:定义列表、定义术语、定义描述。<section>
:文档中的节或区域。<article>
:独立的文章内容。<aside>
:侧边栏或与内容相关但可独立的部分。<nav>
:导航链接。<header>
:页眉。<footer>
:页脚。<main>
:页面主要内容。<figure>
/<figcaption>
:图文组合及其标题。<form>
:表单。<table>
:表格。<hr>
:主题分隔线。<pre>
:预格式化文本。<blockquote>
:长引用。
注意:
<li>
元素比较特殊,它既是块级元素(默认独占一行),又可以包含块级和行内元素。
三、空元素 (Void Elements)
特点:
- 没有内容:不能包含任何子元素或文本内容。
- 没有结束标签:在 HTML5 中,空元素是自闭合的,不需要写结束标签(如
<br>
而不是<br></br>
)。虽然在 XHTML 中要求写成<br />
,但在 HTML5 中/
是可选的。 - 行内或块级:空元素本身也有行内或块级的分类。
常见空元素示例:
<br>
:插入一个换行符(行内元素)。<hr>
:插入一条水平分隔线(块级元素)。<img>
:嵌入图像(行内元素,但可设宽高)。<input>
:输入控件(行内元素)。<meta>
:元数据(位于<head>
中)。<link>
:链接外部资源(如 CSS)(位于<head>
中)。<source>
:为<picture>
、<audio>
、<video>
提供媒体资源。<track>
:为<audio>
或<video>
提供文本轨道(如字幕)。<embed>
:嵌入外部内容(如插件)。<area>
:图像映射中的可点击区域。<base>
:为页面上的所有链接规定默认地址或默认目标(位于<head>
中)。<col>
:定义表格列的属性(通常与<colgroup>
一起使用)。<keygen>
:(已废弃)生成密钥对。<param>
:为<object>
元素定义参数。
总结对比
特性 | 行内元素 (Inline) | 块级元素 (Block-level) | 空元素 (Void) |
---|---|---|---|
是否独占一行 | 否 | 是 | 取决于具体元素(如 <br> 是行内,<hr> 是块级) |
能否设置宽高 | 默认不能(需改 display ) | 能 | 能(如果该元素支持,如 <img> , <input> ) |
margin /padding | 垂直方向通常无效,水平方向有效 | 所有方向都有效 | 取决于具体元素 |
默认宽度 | 由内容决定 | 占据父元素 100% 宽度 | 由内容或属性决定 |
能否包含块级元素 | 不能 | 能 | 不能(本身无内容) |
是否有结束标签 | 有(除空元素外) | 有(除空元素外) | 无(自闭合) |
典型代表 | <span> , <a> , <strong> , <em> | <div> , <p> , <h1> , <ul> , <li> | <br> , <hr> , <img> , <input> , <meta> |
重要提示:通过 CSS 的 display
属性,可以改变元素的显示类型:
display: block;
可以将行内元素变为块级。display: inline;
可以将块级元素变为行内。display: inline-block;
可以创建一个既有行内特性(不独占一行)又有块级特性(可设宽高)的元素。
THE END