CSS Grid网格布局从入门到精通,构建二维响应式布局教程

CSS Grid是当今最强大的二维布局系统。它将网页划分为行和列,让你能够像设计图纸一样精确地控制元素的位置和大小。

本文将引导你构建你的第一个网格布局,让你更好的学会如何使用CSS布局呈现出完美的网页。

一、Grid是什么?

CSS Grid布局是一个用于网页的二维布局系统,意味着它可以同时处理行和列。这与Flexbox主要处理一个方向(一维)形成对比。Grid是创建复杂整体页面布局的理想选择。

二、基本概念:网格容器与网格项目

将元素设置为display: grid,它就成为网格容器,其直接子元素则成为网格项目

.container {
    display: grid; /* 或 inline-grid */
}

三、定义网格轨道

使用grid-template-columnsgrid-template-rows属性来定义网格的行和列(称为“轨道”)。

  1. 定义列和行​:
    .container {
        display: grid;
        grid-template-columns: 200px 1fr 100px; /* 三列:200px, 剩余空间, 100px */
        grid-template-rows: 100px 400px; /* 两行 */
        gap: 20px; /* 行和列之间的间隙(取代旧的 grid-gap) */
    }
    • fr单位​:表示网格容器中的剩余空间分配比例,非常灵活。
  2. 使用repeat()函数​:简化重复模式。
    .container {
        grid-template-columns: repeat(3, 1fr); /* 等同于 1fr 1fr 1fr */
        grid-template-rows: repeat(2, 150px);
    }

四、放置网格项目

默认情况下,项目会按顺序自动填充网格单元格。但你可以精确控制项目的位置。

  1. 基于线的放置​:通过指定项目从哪条网格线开始到哪条结束来放置。
    .header {
        grid-column-start: 1;
        grid-column-end: 4; /* 从第1条纵线延伸到第4条(占据3列) */
        grid-row-start: 1;
        grid-row-end: 2;
    }
    /* 简写 */
    .header {
        grid-column: 1 / 4;
        grid-row: 1 / 2;
    }
  2. 使用grid-template-areas​:一种更直观的布局方法。
    .container {
        display: grid;
        grid-template-areas:
            "header header header"
            "sidebar main main"
            "footer footer footer";
        grid-template-columns: 1fr 2fr 2fr;
    }
    
    .header { grid-area: header; }
    .sidebar { grid-area: sidebar; }
    .main { grid-area: main; }
    .footer { grid-area: footer; }

五、总结

CSS Grid为网页布局带来了前所未有的控制力。对于整体页面结构(如Header, Sidebar, Main, Footer),Grid是首选方案。结合Flexbox(用于组件内部的一维布局),你几乎可以应对任何布局挑战。

发表评论