示例1:经典三栏布局(Flexbox实现)

这是最常见和实用的布局之一,包含一个页眉、一个页脚和中间的三栏内容区(侧边栏、主内容、另一个侧边栏),这个示例使用了现代、高效的 Flexbox 布局。

css布局的一个网页源代码
(图片来源网络,侵删)

特点:

  • 响应式:在小屏幕上,三栏会自动堆叠为单栏。
  • 语义化HTML:使用 <header>, <main>, <aside>, <footer> 等标签。
  • Flexbox:轻松实现等高布局和空间分配。

完整源代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">经典三栏布局 - Flexbox</title>
    <style>
        /* --- 全局样式和重置 --- */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
            line-height: 1.6;
            color: #333;
            background-color: #f4f4f4;
        }
        .container {
            max-width: 1200px;
            margin: 20px auto;
            padding: 0 20px;
        }
        /* --- 头部样式 --- */
        header {
            background-color: #333;
            color: #fff;
            text-align: center;
            padding: 1rem;
            border-radius: 5px;
        }
        /* --- 主要内容区布局 (Flexbox) --- */
        .main-content {
            display: flex; /* 启用 Flexbox 布局 */
            gap: 20px; /* 子元素之间的间距 */
            margin-top: 20px;
        }
        /* --- 左侧边栏 --- */
        .left-sidebar {
            flex: 1; /* 占用可用空间的一部分 */
            background-color: #fff;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
        }
        /* --- 主内容区 --- */
        .main-column {
            flex: 2; /* 占用比侧边栏更多的空间 */
            background-color: #fff;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
        }
        /* --- 右侧边栏 --- */
        .right-sidebar {
            flex: 1; /* 占用可用空间的一部分 */
            background-color: #fff;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
        }
        /* --- 页脚样式 --- */
        footer {
            background-color: #333;
            color: #fff;
            text-align: center;
            padding: 1rem;
            margin-top: 20px;
            border-radius: 5px;
        }
        /* --- 响应式设计 --- */
        @media (max-width: 768px) {
            .main-content {
                flex-direction: column; /* 在小屏幕上,将布局改为垂直堆叠 */
            }
        }
    </style>
</head>
<body>
    <header>
        <h1>我的网站标题</h1>
        <p>这是一个使用 Flexbox 实现的经典三栏布局</p>
    </header>
    <div class="container">
        <main class="main-content">
            <aside class="left-sidebar">
                <h2>左侧边栏</h2>
                <p>这里是左侧边栏的内容,在大屏幕上,它会显示在左侧。</p>
                <ul>
                    <li>链接 1</li>
                    <li>链接 2</li>
                    <li>链接 3</li>
                </ul>
            </aside>
            <section class="main-column">
                <h2>主要内容区</h2>
                <p>这里是网站的主要内容,在大屏幕上,它会占据最宽的空间,这个布局的核心是使用了 Flexbox,父元素 <code>main-content</code> 设置了 <code>display: flex;</code>,子元素(侧边栏和主内容)通过 <code>flex</code> 属性来分配空间。</p>
                <p>试着调整浏览器窗口的大小,当宽度小于 768px 时,布局会自动切换为垂直堆叠,以适应手机和平板等移动设备。</p>
            </section>
            <aside class="right-sidebar">
                <h2>右侧边栏</h2>
                <p>这里是右侧边栏的内容,在大屏幕上,它会显示在右侧。</p>
                <p>可以放置广告、热门文章列表或用户信息等。</p>
            </aside>
        </main>
    </div>
    <footer>
        <p>&copy; 2025 我的网站. 保留所有权利.</p>
    </footer>
</body>
</html>

示例2:CSS Grid 实现的“杂志”式布局

CSS Grid 是一个二维布局系统,非常适合创建复杂的、不规则的布局,比如杂志或新闻网站首页。

特点:

  • Grid布局:轻松控制行和列。
  • 区域命名:使用 grid-template-areas 可以直观地定义布局结构。
  • 高度灵活:可以轻松创建各种尺寸的内容卡片。

完整源代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">CSS Grid 杂志式布局</title>
    <style>
        /* --- 全局样式 --- */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            font-family: 'Georgia', serif;
            background-color: #f0f0f0;
            color: #333;
        }
        .grid-container {
            display: grid; /* 启用 Grid 布局 */
            grid-template-columns: repeat(12, 1fr); /* 创建12个等宽的列 */
            grid-template-rows: auto auto 1fr auto; /* 定义行高 */
            grid-template-areas:
                "header header header header header header header header header header header header"
                "featured featured featured featured featured featured featured featured featured . . ."
                "article1 article1 article1 article2 article2 article2 article3 article3 article3 . . ."
                "footer footer footer footer footer footer footer footer footer footer footer footer";
            gap: 20px; /* 网格项之间的间距 */
            max-width: 1200px;
            margin: 20px auto;
            padding: 20px;
        }
        /* --- 定义网格区域 --- */
        .header { grid-area: header; }
        .featured { grid-area: featured; }
        .article-1 { grid-area: article1; }
        .article-2 { grid-area: article2; }
        .article-3 { grid-area: article3; }
        .footer { grid-area: footer; }
        /* --- 通用卡片样式 --- */
        .card {
            background-color: #fff;
            border-radius: 8px;
            padding: 20px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
        }
        .header h1 { text-align: center; border-bottom: 2px solid #eee; padding-bottom: 10px; }
        .featured h2, .article-1 h2, .article-2 h2, .article-3 h2 { margin-bottom: 15px; }
        .footer { text-align: center; }
        /* --- 响应式设计 --- */
        @media (max-width: 768px) {
            .grid-container {
                grid-template-columns: 1fr; /* 在小屏幕上,所有列都变为单列 */
                grid-template-areas:
                    "header"
                    "featured"
                    "article1"
                    "article2"
                    "article3"
                    "footer";
            }
        }
    </style>
</head>
<body>
    <div class="grid-container">
        <header class="header card">
            <h1>杂志式网站布局</h1>
        </header>
        <article class="featured card">
            <h2>特色文章</h2>
            <p>这是一篇特色文章,占据了较宽的空间,通过 Grid 布局的 `grid-template-areas`,我们可以像画画一样轻松地定义每个部分的位置。</p>
        </article>
        <article class="article-1 card">
            <h2>文章一</h2>
            <p>Grid 布局非常适合创建这种灵活的、模块化的页面结构。</p>
        </article>
        <article class="article-2 card">
            <h2>文章二</h2>
            <p>每个卡片都是一个独立的网格项,我们可以精确控制它们跨越多少行和列。</p>
        </article>
        <article class="article-3 card">
            <h2>文章三</h2>
            <p>这种布局方式让前端开发变得更加直观和高效。</p>
        </article>
        <footer class="footer card">
            <p>&copy; 2025 CSS Grid 布局示例.</p>
        </footer>
    </div>
</body>
</html>

如何使用这些代码

  1. 复制:选择您喜欢的示例代码,将其全部复制。
  2. 粘贴:创建一个新的文本文件,将代码粘贴进去。
  3. 保存:将文件保存为 .html 格式,layout-example.html
  4. 打开:用任何现代浏览器(如 Chrome, Firefox, Edge)打开这个文件,您就可以看到效果了。
  5. 修改:您可以随意修改 HTML 结构和 CSS 样式,来观察布局的变化,这是学习 CSS 布局的最佳方式。

选择哪个示例?

  • 如果您是初学者,或者需要一个标准的、易于维护的网站布局,示例1(Flexbox三栏布局) 是最佳选择。
  • 如果您想学习更现代、更强大的二维布局技术,或者需要创建类似Pinterest、Behance等瀑布流或卡片式布局,示例2(CSS Grid布局) 会给您带来巨大启发。

希望这些示例能帮助您更好地理解和使用CSS布局!

css布局的一个网页源代码
(图片来源网络,侵删)