核心概念:盒模型 与 Flexbox

在开始之前,需要理解两个关键的 CSS 概念:

div标签布局网页模板
(图片来源网络,侵删)
  1. 盒模型:在 CSS 中,每一个元素都可以看作一个盒子,这个盒子由 、内边距边框外边距 组成,理解盒模型是进行精确布局的基础。
  2. Flexbox (弹性盒布局):这是一种一维的布局方法,非常适合在容器中排列子元素,通过设置 display: flex;,我们可以轻松地控制子元素的排列方向、对齐方式、大小分配等,是实现现代布局最强大的工具之一。

完整的网页模板代码

下面是一个包含 HTML 和 CSS 的完整模板,您可以直接复制这些代码到一个 .html 文件中,在浏览器中打开即可看到效果。

index.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">Div 布局模板</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <!-- 1. 页眉: 通常包含网站的标题和 Logo -->
    <header class="main-header">
        <h1>我的网站</h1>
    </header>
    <!-- 2. 导航栏: 包含网站的主要链接 -->
    <nav class="main-nav">
        <ul>
            <li><a href="#">首页</a></li>
            <li><a href="#">关于我们</a></li>
            <li><a href="#">服务</a></li>
            <li><a href="#">博客</a></li>
            <li><a href="#">联系我们</a></li>
        </ul>
    </nav>
    <!-- 3. 主体内容区: 使用 Flexbox 布局,包含侧边栏和主内容 -->
    <div class="main-container">
        <!-- 侧边栏 -->
        <aside class="sidebar">
            <h3>侧边栏</h3>
            <p>这里是一些额外的链接或信息。</p>
            <ul>
                <li><a href="#">链接 1</a></li>
                <li><a href="#">链接 2</a></li>
                <li><a href="#">链接 3</a></li>
            </ul>
        </aside>
        <!-- 主内容区 -->
        <main class="content">
            <article>
                <h2>主文章标题</h2>
                <p>这里是主要内容区域,你可以在这里放置文章、产品信息、图片等任何核心内容,这个区域通常是页面上最重要的部分,占据最多的空间。</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
            </article>
            <article>
                <h2>另一篇文章</h2>
                <p>这是另一篇示例文章,展示了如何在主内容区放置多个独立的文章块。</p>
            </article>
        </main>
    </div>
    <!-- 4. 页脚: 包含版权信息、联系方式等 -->
    <footer class="main-footer">
        <p>&copy; 2025 我的网站. 保留所有权利.</p>
    </footer>
</body>
</html>

style.css

/* 全局样式和重置 */
* {
    box-sizing: border-box; /* 让 padding 和 border 不会撑大元素 */
    margin: 0;
    padding: 0;
}
body {
    font-family: Arial, sans-serif;
    line-height: 1.6;
    background-color: #f4f4f4;
    color: #333;
}
/* 通用容器样式 */
.container {
    width: 80%;
    margin: 0 auto; /* 水平居中 */
    padding: 20px;
}
/* --- 页眉 --- */
.main-header {
    background-color: #333;
    color: #fff;
    text-align: center;
    padding: 1rem;
    margin-bottom: 20px;
}
/* --- 导航栏 --- */
.main-nav {
    background-color: #444;
    padding: 0.5rem 0;
}
.main-nav ul {
    list-style-type: none; /* 移除列表前的点 */
    display: flex; /* 使用 Flexbox 布局 */
    justify-content: center; /* 水平居中 */
}
.main-nav ul li {
    margin: 0 15px; /* 给列表项之间添加间距 */
}
.main-nav a {
    color: #fff;
    text-decoration: none; /* 移除下划线 */
    font-weight: bold;
}
.main-nav a:hover {
    text-decoration: underline;
}
/* --- 主体内容区 (Flexbox 布局的核心) --- */
.main-container {
    display: flex; /* 将 .main-container 变成一个 flex 容器 */
    gap: 20px; /* 子元素之间的间距 */
}
/* --- 侧边栏 --- */
.sidebar {
    flex: 1; /* 占用 1 份空间 */
    background-color: #fff;
    padding: 20px;
    border-radius: 5px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
/* --- 主内容区 --- */
.content {
    flex: 3; /* 占用 3 份空间,是侧边栏的 3 倍宽 */
    background-color: #fff;
    padding: 20px;
    border-radius: 5px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
/* --- 页脚 --- */
.main-footer {
    background-color: #333;
    color: #fff;
    text-align: center;
    padding: 1rem;
    margin-top: 20px;
}
/* 响应式设计:在小屏幕上,布局变为单列 */
@media (max-width: 768px) {
    .main-container {
        flex-direction: column; /* 将子元素从水平排列改为垂直排列 */
    }
    .sidebar, .content {
        flex: 1; /* 侧边栏和主内容区宽度相同 */
    }
}

代码结构详解

HTML 结构

  1. <header class="main-header">:

    • <header> 标签语义化地定义了页面的头部区域。
    • 通常包含网站的 Logo、主标题等。
  2. <nav class="main-nav">:

    • <nav> 标签用于定义导航链接的区域。
    • 内部的 <ul> (无序列表) 是组织导航链接的最佳实践,因为它具有清晰的语义结构。
  3. <div class="main-container">:

    div标签布局网页模板
    (图片来源网络,侵删)
    • 这是一个容器,它包裹了页面的核心布局部分(侧边栏和主内容)。
    • 使用 <div> 是因为它本身没有特定的语义,纯粹用于布局和分组。
  4. <aside class="sidebar">:

    • <aside> 标签语义化地定义了侧边栏,其内容与页面的主要内容相关但可以独立存在(如链接、广告、作者信息等)。
  5. <main class="content">:

    • <main> 标签定义了页面的主要内容,一个页面中只能有一个 <main> 元素。
    • 这里的 <article> 标签用于表示一篇独立的文章或内容块。
  6. `

    :

    • <footer> 标签语义化地定义了页脚,通常包含版权信息、联系方式、相关链接等。

CSS 样式

  1. *` { box-sizing: border-box; }`**:

    div标签布局网页模板
    (图片来源网络,侵删)
    • 非常重要的设置! 它告诉浏览器,当你设置一个元素的 widthheight 时,paddingborder 应该被包含在内,这使得布局计算变得非常直观。
  2. .main-container { display: flex; }:

    • 这是整个布局的核心,它将 .main-container 变成一个 Flex 容器,其直接子元素(.sidebar.content)会自动成为 Flex 项目,并按照 Flex 规则进行排列。
  3. .sidebar { flex: 1; }.content { flex: 3; }:

    • flex 属性是 Flexbox 的缩写,它定义了 Flex 项目如何分配容器的可用空间。
    • flex: 1 意味着 .sidebar 占用可用空间的 1 份。
    • flex: 3 意味着 .content 占用可用空间的 3 份。
    • 区的宽度是侧边栏的 3 倍,这是一种非常灵活和高效的布局方式。
  4. gap: 20px;:

    • 这是 Flexbox 的一个属性,用于在 Flex 项目之间创建一个固定的间隙,比使用 margin 更简单。
  5. @media (max-width: 768px):

    • 这是响应式设计的关键,当浏览器窗口宽度小于 768 像素(在平板或手机上)时,这个代码块会生效。
    • flex-direction: column; 将 Flex 容器的方向从水平(row,默认值)改为垂直(column),这样侧边栏就会跑到主内容的下面,形成单列布局,更适合小屏幕浏览。

如何使用这个模板

  1. 创建一个文件夹,my-website
  2. 在该文件夹中创建两个文件:index.htmlstyle.css
  3. 将上面的代码分别复制粘贴到对应的文件中。
  4. 用浏览器打开 index.html 文件,你就能看到一个完整的、带有响应式设计的布局模板了。
  5. 你可以基于此模板,修改内容、颜色、字体等,来构建你自己的网站。