<div> 是什么?
<div> 是一个“块级”(block-level)容器标签,全称是 division(分区、分割),它的核心作用是:

(图片来源网络,侵删)
将 HTML 文档中的内容(文本、图片、其他标签等)组合成一个独立的、有意义的区块。
你可以把它想象成一个“盒子”或“容器”,你可以在里面放任何东西,然后对这个盒子本身进行样式设置和布局控制。
为什么需要 <div>?—— 结构与样式分离
在网页开发中,一个最重要的原则是 “结构、表现、行为分离”。
- 结构: 由 HTML 负责定义,它描述了网页内容的逻辑组织,这是页头”、“这是导航菜单”、“这是主要内容区”、“这是页脚”。
<div>在这里扮演着关键角色,它为内容提供了结构化的“骨架”。 - 表现: 由 CSS (层叠样式表) 负责定义,它决定了网页的视觉外观,比如颜色、字体、间距、布局等。
- 行为: 由 JavaScript 负责定义,它处理用户的交互,比如点击按钮、表单提交等。
<div> 本身没有特定的语义(不像 <header> 代表页头,<article> 代表文章),所以它是一个纯粹的结构化工具,非常灵活。

(图片来源网络,侵删)
<div> 如何嵌入和构建网页:一个完整的例子
下面我们通过一个典型的网页布局来理解 <div> 的嵌套和使用。
基础 HTML5 结构
一个标准的 HTML5 文档有一个固定的骨架。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">我的网页</title>
<!-- 在这里引入 CSS 文件 -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 网页内容将在这里构建 -->
</body>
</html>
使用 <div> 构建页面布局
我们将在 <body> 标签内使用 <div> 来创建不同的区块,每个区块都有一个 id 或 class 属性,这样我们就可以用 CSS 来精确地定位和样式化它们。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">我的网页</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 1. 整个页面的最外层容器,方便统一设置页面样式 -->
<div id="page-container">
<!-- 2. 页头 -->
<div id="header">
<h1>欢迎来到我的网站</h1>
<p>这是一个使用 div 构建的简单示例</p>
</div>
<!-- 3. 导航菜单 -->
<div id="nav">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于我们</a></li>
<li><a href="#">服务</a></li>
<li><a href="#">联系方式</a></li>
</ul>
</div>
<!-- 4. 主要内容区,可以再嵌套其他 div -->
<div id="main-content">
<!-- 左侧边栏 -->
<div id="sidebar">
<h3>相关链接</h3>
<p>这里是一些侧边栏内容。</p>
</div>
<!-- 右侧文章区 -->
<div id="article">
<h2>文章标题</h2>
<p>这里是文章的主要内容,Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...</p>
</div>
</div>
<!-- 5. 页脚 -->
<div id="footer">
<p>© 2025 我的网站. 保留所有权利.</p>
</div>
</div>
</body>
</html>
代码解读:

(图片来源网络,侵删)
- 嵌套:
<div>可以无限地嵌套。#page-container包含了所有其他<div>,#main-content又包含了#sidebar和#article,这种嵌套关系清晰地定义了页面的层级结构。 - ID vs. Class:
id(如id="header"): 在一个页面中是唯一的,用于标识一个特定的、唯一的元素,通常用于页面中只出现一次的大区块。class(如class="menu-item"): 可以被多个元素共享,当你希望多个元素拥有相同的样式时,使用class,在上面的例子中,<li>标签就共享了class。
使用 CSS 进行样式化
创建了 HTML 结构后,我们需要 CSS 来让它变得美观,我们将创建一个 style.css 文件,并将其链接到 HTML 文件中。
/* style.css */
/* 重置一些默认样式,让所有浏览器表现一致 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
line-height: 1.6;
}
/* 最外层容器,设置页面宽度和居中 */
#page-container {
width: 80%;
max-width: 1200px;
margin: 20px auto; /* 上下 20px,左右 auto 实现水平居中 */
border: 1px solid #ccc;
padding: 20px;
}
/* 页头样式 */
#header {
background-color: #f4f4f4;
padding: 20px;
text-align: center;
border-bottom: 2px solid #ddd;
}
/* 导航菜单样式 */
#nav ul {
list-style-type: none; /* 去掉列表前的点 */
background-color: #333;
overflow: hidden; /* 清除浮动 */
}
#nav ul li {
float: left; /* 让列表项横向排列 */
}
#nav ul li a {
display: block; /* 让链接可以设置宽高和内边距 */
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none; /* 去掉下划线 */
}
#nav ul li a:hover {
background-color: #111;
}
区,使用 Flexbox 布局 */
#main-content {
display: flex; /* 启用 Flexbox */
gap: 20px; /* 子元素之间的间距 */
}
#sidebar {
flex: 1; /* 侧边栏占据 1 份空间 */
background-color: #f9f9f9;
padding: 15px;
}
#article {
flex: 3; /* 文章区占据 3 份空间,比侧边栏更宽 */
padding: 15px;
}
/* 页脚样式 */
#footer {
background-color: #333;
color: #fff;
text-align: center;
padding: 10px;
margin-top: 20px;
}
CSS 解读:
- 选择器(如
#header,.menu-item)直接对应 HTML 中的id和class。 - 通过设置
width,margin,padding,background-color等属性,我们为每个<div>“盒子”赋予了外观和尺寸。 - 使用
float或现代的display: flex/display: grid来控制<div>的布局,实现并排、嵌套等复杂效果。
<div> 与 HTML5 语义化标签
虽然 <div> 非常灵活,但 HTML5 引入了许多具有明确语义的标签,如:
<header>: 页眉或区块的头部。<nav>: 导航链接区域。<main>: 文档的主要内容。<article>: 独立的内容单元,如博客文章、新闻。<section>: 文档中的一个独立区域,通常有标题。<aside>: 侧边栏,与主要内容相关但可以独立存在。<footer>: 页脚或区块的底部。
最佳实践是:
优先使用语义化标签,只有在没有合适的语义化标签时,才使用
<div>。
优化后的 HTML 代码
<body>
<div id="page-container">
<header>
<h1>欢迎来到我的网站</h1>
<p>这是一个使用语义化标签构建的示例</p>
</header>
<nav>
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于我们</a></li>
<li><a href="#">服务</a></li>
<li><a href="#">联系方式</a></li>
</ul>
</nav>
<main>
<section id="sidebar">
<h3>相关链接</h3>
<p>这里是一些侧边栏内容。</p>
</section>
<article>
<h2>文章标题</h2>
<p>这里是文章的主要内容。</p>
</article>
</main>
<footer>
<p>© 2025 我的网站. 保留所有权利.</p>
</footer>
</div>
</body>
使用语义化标签的好处:
- 可读性更强:代码更容易被开发者理解。
- SEO 优化:搜索引擎能更好地理解页面结构,从而可能提升排名。
- 可访问性:屏幕阅读器等辅助技术可以为残障用户提供更好的导航体验。
| 特性 | 描述 |
|---|---|
| 作用 | 一个通用的、无语义的块级容器,用于组合和布局 HTML 内容。 |
| 核心价值 | 提供“结构”,让 CSS 和 JavaScript 能够有针对性地操作页面区块。 |
| 如何嵌入 | 通过嵌套 <div> 标签,并赋予 id 或 class 属性来构建复杂的页面层级。 |
| 与 CSS 的关系 | <div> 是 CSS 布局(如 Flexbox, Grid, Float)的主要操作对象。 |
| 与语义化标签的关系 | <div> 是“通用选手”,而 <header>, <nav>, <main> 等是“专业选手”,应优先使用语义化标签,<div> 作为补充。 |
掌握 <div> 的使用是学习 HTML 和 CSS 布局的基础,理解它如何与 CSS 协同工作,以及何时使用更现代的语义化标签,是成为一名前端开发者的关键一步。
