目录

  1. 第一部分:基础理论
    • 什么是 Div?
    • 什么是 CSS?
    • 为什么 Div + CSS 是现代网页布局的标准?
  2. 第二部分:第一个 Div 布局
    • 创建项目文件
    • div 的基本用法
    • CSS 的基本语法和引入方式
    • 盒模型:理解布局的核心
  3. 第三部分:导航栏布局详解
    • 目标:构建一个常见的顶部导航栏
    • 使用 display: inline-block (经典方法)
    • 使用 Flexbox (现代推荐方法)
    • 使用 CSS Grid (更现代的布局方法)
  4. 第四部分:综合实战 - 完整网页布局
    • 结构规划
    • 代码实现
    • 最终效果与扩展
  5. 第五部分:总结与进阶

第一部分:基础理论

什么是 Div?

<div> 是 HTML 中的一个块级元素,你可以把它想象成一个无形的盒子容器

div css网页及导航布局教程
(图片来源网络,侵删)
  • 作用:它本身没有任何特定的样式(浏览器默认会给它一些间距),但最主要的作用是组织和包裹页面上的其他元素(如文本、图片、其他 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 布局

让我们来创建一个最简单的三栏布局。

div css网页及导航布局教程
(图片来源网络,侵删)

创建项目文件

创建一个文件夹,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>&copy; 2025 我的网站</p>
        </div>
    </div>
</body>
</html>

解释

  • 我们创建了一个 .container 容器来包裹所有内容,方便整体控制。
  • 使用 class 属性(如 class="header")来给不同的 div 命名,这样我们就可以在 CSS 中精确地选择它们并添加样式。

CSS 的基本语法和引入方式

CSS 的基本语法是 选择器 { 属性: 值; }

div css网页及导航布局教程
(图片来源网络,侵删)
  • 选择器:告诉浏览器要给哪个元素添加样式。.header 就是选择所有 classheader 的元素。
  • 属性和值:定义具体的样式,color: blue; 将文字颜色设为蓝色。

index.html<head> 标签中,我们使用 <link> 标签来引入外部的 style.css 文件,这是最佳实践。

盒模型:理解布局的核心

这是 CSS 布局中最最重要的概念,每个 HTML 元素都可以看作一个矩形的“盒子”,这个盒子由四部分组成:

  1. Content (内容):元素的实际内容,如文本或图片。
  2. Padding (内边距)与边框之间的空间,它会增加元素的总大小。
  3. Border (边框):盒子边缘的线。
  4. 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; 是一个现代网页开发的必备属性,它告诉浏览器,当你设置一个元素的 widthheight 时,这个尺寸应该包含 contentpaddingborder,这会让布局计算变得非常直观。
  • 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 核心思想

  1. 给父元素(.main-navul)设置 display: flex;,它们就变成了 Flex 容器。
  2. 容器内的直接子元素(.logo, ulul 内的 li)就变成了 Flex 项目。
  3. 通过 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 核心思想

  1. 给父元素(.main-nav)设置 display: grid;
  2. 使用 grid-template-columns 定义列的布局。auto 1fr 的意思是:第一列(logo)由内容大小决定,第二列(菜单)占据剩余的所有可用空间 (1fr 代表一个分数单位)。
  3. 菜单部分通过 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>&copy; 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 布局的基础。
  • FlexboxCSS Grid 是现代 CSS 布局的两大核心技术,分别擅长一维和二维布局,是必须掌握的技能。

进阶学习路径

  1. 响应式设计:学习使用媒体查询 @media,让你的网页适配各种屏幕尺寸。
  2. CSS 预处理器:学习 Sass 或 Less,它们为 CSS 增加了变量、嵌套、混合等强大功能,能让你的 CSS 更易于维护和扩展。
  3. CSS 框架:学习使用 Bootstrap 或 Tailwind CSS,它们提供了大量预定义的样式和组件,可以让你快速构建出专业、美观的网站。
  4. CSS 动画与过渡:学习 transitionanimation,为你的网页添加流畅的动效,提升用户体验。

希望这份详细的教程能帮助你顺利入门 Div + CSS 布局的世界!多练习,多思考,你很快就能掌握网页布局的精髓。