目录
- 第一部分:基础理论
- 什么是 Div?
- 什么是 CSS?
- 为什么 Div + CSS 是现代网页布局的标准?
- 第二部分:第一个 Div 布局
- 创建项目文件
div的基本用法- CSS 的基本语法和引入方式
- 盒模型:理解布局的核心
- 第三部分:导航栏布局详解
- 目标:构建一个常见的顶部导航栏
- 使用
display: inline-block(经典方法) - 使用 Flexbox (现代推荐方法)
- 使用 CSS Grid (更现代的布局方法)
- 第四部分:综合实战 - 完整网页布局
- 结构规划
- 代码实现
- 最终效果与扩展
- 第五部分:总结与进阶
第一部分:基础理论
什么是 Div?
<div> 是 HTML 中的一个块级元素,你可以把它想象成一个无形的盒子或容器。

- 作用:它本身没有任何特定的样式(浏览器默认会给它一些间距),但最主要的作用是组织和包裹页面上的其他元素(如文本、图片、其他
div等)。 - 特点:
- 默认情况下,
div会占据一整行。 - 它是一个“语义化”很弱的标签,纯粹用于布局,在 HTML5 中,有更多语义化的标签(如
<header>,<nav>,<main>,<footer>)来替代它,提高代码可读性。
- 默认情况下,
什么是 CSS?
CSS (Cascading Style Sheets) 层叠样式表,是用来描述 HTML 元素在屏幕上如何显示的语言。
- 作用:控制网页的视觉表现,包括:
- 布局:元素的位置、大小。
- 颜色:背景色、文字颜色。
- 字体:字体类型、大小、粗细。
- 间距:外边距、内边距。
- 视觉效果:边框、阴影、圆角等。
为什么 Div + CSS 是现代网页布局的标准?
在早期,网页布局主要使用表格,这种方法有很多弊端:
- 代码冗余:大量的
<table>,<tr>,<td>标签使 HTML 文件变得臃肿。 - 维护困难和样式混在一起,修改布局需要改动大量的 HTML。
- 加载缓慢:浏览器需要解析整个表格才能显示内容,影响加载速度。
- SEO (搜索引擎优化) 不友好:搜索引擎难以从复杂的表格结构中提取主要内容。
Div + CSS 的优势:
- 内容与表现分离:HTML 只负责内容结构,CSS 只负责样式表现,代码更清晰,易于维护。
- 加载速度快:HTML 结构简单,浏览器可以更快地渲染页面。
- SEO 友好:搜索引擎可以轻松抓取到清晰的 HTML 结构和主要内容。
- 灵活性与可重用性:一个 CSS 文件可以控制整个网站的样式,修改样式时只需改动 CSS 文件即可。
第二部分:第一个 Div 布局
让我们来创建一个最简单的三栏布局。

创建项目文件
创建一个文件夹,my-website,在里面创建两个文件:
index.html(HTML 结构)style.css(CSS 样式)
div 的基本用法
打开 index.html,编写如下代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">我的第一个 Div 布局</title>
<!-- 引入 CSS 文件 -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>这是一个简单的三栏布局</h1>
<div class="container">
<div class="header">
<h2>页头</h2>
</div>
<div class="sidebar">
<h3>侧边栏</h3>
<p>这是侧边栏的内容。</p>
</div>
<div class="main-content">
<h3>主内容区</h3>
<p>这是主内容区,通常占据最多的空间,这里可以放置文章、产品信息等。</p>
</div>
<div class="footer">
<p>© 2025 我的网站</p>
</div>
</div>
</body>
</html>
解释:
- 我们创建了一个
.container容器来包裹所有内容,方便整体控制。 - 使用
class属性(如class="header")来给不同的div命名,这样我们就可以在 CSS 中精确地选择它们并添加样式。
CSS 的基本语法和引入方式
CSS 的基本语法是 选择器 { 属性: 值; }。

- 选择器:告诉浏览器要给哪个元素添加样式。
.header就是选择所有class为header的元素。 - 属性和值:定义具体的样式,
color: blue;将文字颜色设为蓝色。
在 index.html 的 <head> 标签中,我们使用 <link> 标签来引入外部的 style.css 文件,这是最佳实践。
盒模型:理解布局的核心
这是 CSS 布局中最最重要的概念,每个 HTML 元素都可以看作一个矩形的“盒子”,这个盒子由四部分组成:
- Content (内容):元素的实际内容,如文本或图片。
- Padding (内边距)与边框之间的空间,它会增加元素的总大小。
- Border (边框):盒子边缘的线。
- Margin (外边距):盒子与盒子之间的空间,它不会增加元素的总大小,而是影响其周围元素的位置。
我们给 style.css 添加一些样式,看看盒模型是如何工作的。
/* style.css */
/* 重置浏览器默认样式,让所有元素表现更一致 */
* {
margin: 0;
padding: 0;
box-sizing: border-box; /* 关键!让 width 和 height 包含 content + padding + border */
}
body {
font-family: Arial, sans-serif;
line-height: 1.6;
}
.container {
width: 80%; /* 容器宽度为视口的80% */
margin: 20px auto; /* 上下外边距20px,左右自动(居中) */
border: 2px solid #333;
padding: 20px;
}
.header, .footer {
background-color: #f4f4f4;
padding: 15px;
margin-bottom: 10px;
text-align: center;
}
.sidebar {
width: 25%; /* 侧边栏宽度为父容器宽度的25% */
background-color: #e6f7ff;
padding: 15px;
float: left; /* 让侧边栏浮动到左侧 */
margin-right: 10px;
}
.main-content {
width: 75%; /* 主内容区宽度为父容器宽度的75% */
background-color: #f0f8e6;
padding: 15px;
float: left; /* 让主内容区也浮动到左侧,紧跟侧边栏 */
}
解释:
box-sizing: border-box;是一个现代网页开发的必备属性,它告诉浏览器,当你设置一个元素的width和height时,这个尺寸应该包含content、padding和border,这会让布局计算变得非常直观。float: left;是一种经典的布局方式,它可以让元素脱离正常的文档流,并向左或向右浮动,从而实现并排排列。
打开 index.html 在浏览器中查看,你已经成功用 Div + CSS 创建了你的第一个布局!
第三部分:导航栏布局详解
导航栏是网站的骨架,我们来创建一个常见的顶部导航栏。
目标:
HTML 结构
在 index.html 的 <body> 开头,添加导航栏的 HTML 结构:
<!-- 在 <body> 的最开始 -->
<nav class="main-nav">
<a href="#" class="logo">我的Logo</a>
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">关于我们</a></li>
<li><a href="#">服务</a></li>
<li><a href="#">联系我们</a></li>
</ul>
</nav>
<nav>:HTML5 语义化标签,专门用于导航区域。<ul>和<li>:无序列表,非常适合用来做导航菜单。<a>:超链接,用于跳转。
CSS 样式
我们使用两种现代流行的方法来布局这个导航栏。
使用 Flexbox (强烈推荐)
Flexbox 是一维布局模型,非常适合用来做导航栏、页脚等。
/* 在 style.css 中添加 */
.main-nav {
background-color: #333;
padding: 0 20px; /* 左右内边距 */
display: flex; /* 1. 声明为 Flex 容器 */
justify-content: space-between; /* 2. 子元素之间平均分布空间 */
align-items: center; /* 3. 子元素在垂直方向上居中对齐 */
}
.main-nav ul {
list-style: none; /* 去掉列表前的圆点 */
display: flex; /* 4. 让列表项也变成 Flex 容器,实现水平排列 */
margin: 0; /* 去掉默认外边距 */
padding: 0; /* 去掉默认内边距 */
}
.main-nav ul li {
margin-left: 20px; /* 列表项之间的间距 */
}
.main-nav a {
color: white;
text-decoration: none; /* 去掉下划线 */
font-size: 18px;
padding: 10px 0; /* 上下内边距撑开点击区域 */
display: block; /* 让 a 标签可以撑满整个 li,方便点击 */
}
.main-nav a:hover {
color: #f4f4f4; /* 鼠标悬停时的颜色 */
}
.main-nav .logo {
color: white;
font-size: 24px;
font-weight: bold;
text-decoration: none;
}
Flexbox 核心思想:
- 给父元素(
.main-nav和ul)设置display: flex;,它们就变成了 Flex 容器。 - 容器内的直接子元素(
.logo,ul或ul内的li)就变成了 Flex 项目。 - 通过
justify-content(主轴对齐) 和align-items(交叉轴对齐) 等属性,可以轻松控制这些项目的排列方式。
使用 CSS Grid
CSS Grid 是一个二维布局系统,非常适合做页面整体布局,但用它来做导航栏同样非常简单。
/* 使用 Grid 实现导航栏的样式 */
.main-nav {
background-color: #333;
padding: 0 20px;
display: grid; /* 1. 声明为 Grid 容器 */
/* 创建两列:第一列(logo)自动大小,第二列(菜单)占据剩余空间 */
grid-template-columns: auto 1fr;
align-items: center; /* 子项目在网格单元格内垂直居中 */
}
.main-nav ul {
list-style: none;
margin: 0;
padding: 0;
/* 让列表项水平排列,并靠右对齐 */
display: flex;
justify-content: flex-end; /* 2. 关键:让列表项靠右 */
}
/* 其他 a, li, .logo 的样式与 Flexbox 方法中类似 */
.main-nav ul li {
margin-left: 20px;
}
.main-nav a {
color: white;
text-decoration: none;
font-size: 18px;
padding: 10px 0;
display: block;
}
.main-nav a:hover {
color: #f4f4f4;
}
.main-nav .logo {
color: white;
font-size: 24px;
font-weight: bold;
text-decoration: none;
}
Grid 核心思想:
- 给父元素(
.main-nav)设置display: grid;。 - 使用
grid-template-columns定义列的布局。auto 1fr的意思是:第一列(logo)由内容大小决定,第二列(菜单)占据剩余的所有可用空间 (1fr代表一个分数单位)。 - 菜单部分通过
justify-content: flex-end;实现了在它自己的网格空间内靠右对齐。
第四部分:综合实战 - 完整网页布局
我们把学到的知识整合起来,构建一个包含导航、三栏内容和页脚的完整网页。
结构规划
<body>
<nav>导航栏</nav>
<div class="page-wrapper">
<header>页头(大标题)</header>
<div class="content-wrapper">
<aside>侧边栏</aside>
<main>主内容区</main>
</div>
<footer>页脚</footer>
</div>
</body>
代码实现
index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">完整网页布局示例</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<nav class="main-nav">
<a href="#" class="logo">Logo</a>
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">lt;/a></li>
<li><a href="#">服务</a></li>
<li><a href="#">联系</a></li>
</ul>
</nav>
<div class="page-wrapper">
<header class="main-header">
<h1>欢迎来到我的网站</h1>
</header>
<div class="content-wrapper">
<aside class="sidebar">
<h3>侧边栏</h3>
<p>这里是侧边栏内容,可以是一些链接、广告或者分类。</p>
</aside>
<main class="main-content">
<h2>主标题</h2>
<p>这里是网站的主要内容,Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor.</p>
<p>Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.</p>
</main>
</div>
<footer class="main-footer">
<p>© 2025 完整网页布局. 保留所有权利.</p>
</footer>
</div>
</body>
</html>
style.css
/* --- 基础和重置 --- */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.7;
color: #333;
background-color: #f9f9f9;
}
/* --- 导航栏 (使用 Flexbox) --- */
.main-nav {
background-color: #2c3e50;
padding: 0 2rem;
display: flex;
justify-content: space-between;
align-items: center;
height: 60px; /* 固定高度 */
}
.main-nav ul {
list-style: none;
display: flex;
}
.main-nav ul li {
margin-left: 25px;
}
.main-nav a {
color: white;
text-decoration: none;
font-size: 1rem;
font-weight: 500;
transition: color 0.3s ease;
}
.main-nav a:hover {
color: #3498db;
}
.main-nav .logo {
color: white;
font-size: 1.5rem;
font-weight: bold;
text-decoration: none;
}
/* --- 页面主体布局 (使用 Flexbox) --- */
.page-wrapper {
max-width: 1200px; /* 限制最大宽度,让内容在宽屏上不致过宽 */
margin: 2rem auto;
padding: 0 1rem;
display: flex;
flex-direction: column; /* 子元素垂直排列 */
}
.main-header {
text-align: center;
margin-bottom: 2rem;
}
.content-wrapper {
display: flex; /* 内容区使用 Flex 实现并排 */
gap: 2rem; /* 子元素之间的间距,替代了 margin */
margin-bottom: 2rem;
}
.sidebar {
flex: 1; /* 侧边栏占据1份空间 */
background: #fff;
padding: 1.5rem;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.main-content {
flex: 3; /* 主内容区占据3份空间 */
background: #fff;
padding: 1.5rem;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
/* --- 页脚 --- */
.main-footer {
text-align: center;
padding: 1.5rem;
background-color: #34495e;
color: #ecf0f1;
border-radius: 5px;
}
最终效果与扩展
将上述代码保存并打开 index.html,你将看到一个结构清晰、样式美观的完整网页。
可以尝试的扩展:
- 响应式设计:使用媒体查询
@media,让布局在小屏幕设备(如手机)上自动变为单栏布局。 - 固定导航栏:给
.main-nav添加position: fixed; top: 0; left: 0; width: 100%;,让导航栏在滚动时始终停留在顶部。 - 添加交互效果:给按钮或链接添加更复杂的悬停、点击效果。
第五部分:总结与进阶
- Div (或更语义化的标签) 是构建网页结构的骨架。
- CSS 是美化网页、控制布局的外衣。
- 盒模型 是理解所有 CSS 布局的基础。
- Flexbox 和 CSS Grid 是现代 CSS 布局的两大核心技术,分别擅长一维和二维布局,是必须掌握的技能。
进阶学习路径
- 响应式设计:学习使用媒体查询
@media,让你的网页适配各种屏幕尺寸。 - CSS 预处理器:学习 Sass 或 Less,它们为 CSS 增加了变量、嵌套、混合等强大功能,能让你的 CSS 更易于维护和扩展。
- CSS 框架:学习使用 Bootstrap 或 Tailwind CSS,它们提供了大量预定义的样式和组件,可以让你快速构建出专业、美观的网站。
- CSS 动画与过渡:学习
transition和animation,为你的网页添加流畅的动效,提升用户体验。
希望这份详细的教程能帮助你顺利入门 Div + CSS 布局的世界!多练习,多思考,你很快就能掌握网页布局的精髓。
