📜  CSS Grid网格(1)

📅  最后修改于: 2023-12-03 14:40:17.031000             🧑  作者: Mango

CSS Grid网格

CSS Grid网格是一个强大的二维布局系统,它使得在网页上创建复杂的布局变得更加容易和直观。网格由容器和网格项组成,容器定义了网格的基础结构,网格项则放置在网格中。

容器属性
display

为了创建一个网格,我们需要将其父元素设置为网格容器。这可以通过设置display: grid 来实现。

.container {
    display: grid;
}
grid-template-rows和grid-template-columns

网格布局的核心是定义网格行和列的数量以及大小。可以使用grid-template-rowsgrid-template-columns属性来实现。这些属性接受一系列的值,每个值表示一个行或列的大小。

.container {
    display: grid;
    grid-template-rows: 100px 100px;
    grid-template-columns: 1fr 2fr;
}

这个例子创建了一个具有两个行和两个列的网格,第一行和第二行的高度都是100像素,第一列占据网格的1/3,第二列占据网格的2/3。

grid-template-areas

网格模板区域允许我们以一种更可读且符合视觉的方式来定义网格。我们可以通过命名网格单元格来定义网格区域,并使用grid-template-areas来指定网格的布局。

.container {
    display: grid;
    grid-template-areas:
        'header header '
        'menu   main'
        'menu   footer';
    grid-template-columns: 200px 1fr;
    grid-template-rows: 100px 1fr 100px;
}

.header {
    grid-area: header;
}

.menu {
    grid-area: menu;
}

.main {
    grid-area: main;
}

.footer {
    grid-area: footer;
}
网格项属性
grid-row和grid-column

通过属性grid-rowgrid-column,我们可以控制一个网格项的行和列位置。

.header {
    grid-row: 1;
    grid-column: 1 / 3;
}
grid-area

grid-area属性将grid-rowgrid-columngrid-row-endgrid-column-end属性组合起来,以非常方便的方式来指定网格项的位置。它允许我们直接使用我们在容器属性中定义的区域名称来定义网格项。

.header {
    grid-area: header;
}
响应式设计

在响应式设计中,我们可能需要在不同的视口大小下,更改我们的网格布局。通过媒体查询,我们可以使用不同的网格模板来实现这一点。

/* 980px 及以下 */
@media (max-width: 980px) {
    .container {
        display: grid;
        grid-template-rows: auto;
        grid-template-columns: 1fr;
    }
}

/* 640px 及以下 */
@media (max-width: 640px) {
    .container {
        display: grid;
        grid-template-rows: auto auto auto;
        grid-template-columns: 1fr;
        grid-template-areas:
            'header'
            'menu'
            'main';
    }
}

以上是CSS Grid网格的一些基本属性和用法。CSS Grid网格强大的功能使其成为布局柔性和响应式设计的理想选择。