区块与布局

HTML 教程 · 第 10 章 · 6 次浏览

区块元素(Block)占据整行,块与块上下堆叠;行内元素(Inline)在一行内流动,不换行。理解这两个概念是布局的基础。<div> 是最常用的区块容器,<span> 是最常用的行内容器。

div 与 span

<div>这是区块,独占一行</div>
<span>这是行内</span>
<span>元素,同一行显示</span>

divspan 本身没有任何默认样式,纯粹是"容器",用来给内容分组,再通过 class/id 让 CSS 去定位。它们是最通用的标签,但正因通用,能表达语义的地方应该优先用语义标签。

用 div 搭建页面骨架

一个典型页面的结构:头部、导航、主体(分主栏和侧栏)、底部。用 div 加 class 就能搭出来:

<div class="header">网站头部</div>
<div class="nav">导航菜单</div>
<div class="main">
    <div class="content">主要内容</div>
    <div class="sidebar">侧边栏</div>
</div>
<div class="footer">版权信息</div>

这个结构配合 CSS 的 Flex/Grid 就能实现两栏、三栏、响应式等各种布局。布局样式(左右排列、间距、宽度)全部由 CSS 控制,HTML 只负责内容分组。

区块 vs 行内怎么区分

对比项区块元素行内元素
典型标签div、p、h1-h6、ul、table、formspan、a、strong、em、img、input
排列方式独占一行,上下堆叠在一行内依次排列
宽高默认撑满可用宽度,可设宽高宽高由内容决定,不可直接设
内外边距上下左右都生效上下边距不生效(左右生效)

记一个要点:imginput 是行内元素但可以设宽高,属于"可替换元素",特例。行内元素想设宽高或上下边距,用 CSS 的 display: inline-blockflex 改变显示模式即可。

display 与布局的对应

  • display: block:默认的区块元素;
  • display: inline:默认的行内元素;
  • display: inline-block:行内排列但可设宽高;
  • display: flex / grid:现代布局的主力,见 CSS 教程的弹性布局章节。

现代开发中,页面骨架的语义化程度决定了维护难度:结构清晰的页面,改样式、调顺序都容易。下一章讲语义化标签,就是把 div 换成有意义的标签。

代码示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>区块布局示例</title>
    <style>
        .header, .nav, .footer { background: #f1f8e9; padding: 12px; margin-bottom: 8px; }
        .main { display: flex; gap: 8px; }
        .content { flex: 1; background: #fff; padding: 16px; border: 1px solid #e8e8e8; }
        .sidebar { width: 200px; background: #fff; padding: 16px; border: 1px solid #e8e8e8; }
        .footer { margin-bottom: 0; }
    </style>
</head>
<body>
    <div class="header">网站头部</div>
    <div class="nav">导航菜单</div>
    <div class="main">
        <div class="content">
            <h2>主要内容</h2>
            <p>这里是页面的核心内容区。</p>
            <span>行内元素一</span>
            <span>行内元素二</span>
        </div>
        <div class="sidebar">侧边栏</div>
    </div>
    <div class="footer">版权信息</div>
</body>
</html>
📚 HTML 标签速查
常用条目速查,完整版见对应教程章节。可复制代码到在线运行中测试。
写法 / 语法作用
&lt;h1&gt;-&lt;h6&gt;标题,h1 最高,每页只用一个 h1
&lt;p&gt;段落,自动加前后间距
&lt;a href=""&gt;链接,href 是目标地址
&lt;img src="" alt=""&gt;图片,src 地址,alt 替代文字
&lt;ul&gt; / &lt;li&gt;无序列表
&lt;ol&gt; / &lt;li&gt;有序列表,数字编号
&lt;dl&gt; / &lt;dt&gt; / &lt;dd&gt;自定义列表:术语 + 说明
&lt;table&gt; / &lt;tr&gt; / &lt;td&gt; / &lt;th&gt;表格:行 / 单元格 / 表头
&lt;form action="" method=""&gt;表单,action 提交地址,method 提交方式
&lt;input type=""&gt;输入控件,type 有 text/password/email/number 等
&lt;textarea&gt;多行文本输入
&lt;select&gt; / &lt;option&gt;下拉框及选项
&lt;button type="submit"&gt;按钮,submit 提交表单
&lt;strong&gt; / &lt;em&gt;加粗(重要)/ 斜体(强调)
&lt;div&gt; / &lt;span&gt;区块容器 / 行内容器
&lt;header&gt; &lt;nav&gt; &lt;main&gt;语义化:页眉 / 导航 / 主体
&lt;section&gt; &lt;article&gt; &lt;aside&gt;语义化:分节 / 独立内容 / 侧栏
&lt;footer&gt;页脚:版权、备案
&lt;video&gt; / &lt;audio&gt;HTML5 视频 / 音频,加 controls 显示控制条
&lt;iframe src=""&gt;嵌入其他网页
&lt;!-- 注释 --&gt;HTML 注释,不显示在页面
&lt;br&gt; / &lt;hr&gt;换行 / 水平分割线
&lt;pre&gt;保留空格和换行,原样显示
&lt;blockquote&gt; / &lt;q&gt;块级引用 / 行内引用
&lt;figure&gt; / &lt;figcaption&gt;图文组合及说明