Skip to content

grid 布局基础

页面布局如下

使用 tailwindcss 写的页面结构如下:

vue
<template>
  <div class="size-[300px] border border-black">
    <div class="size-[50px] bg-red-700"></div>
    <div class="size-[100px] bg-blue-700"></div>
  </div>
</template>

1. grid 设置后, 内容结构发生了变化

除去它们自身的高度,剩下的高度,它们均等分,即为 (300-50-100)/2=75, 也就是图中红色长条

而列方向布局(grid-auto-flow: column)也是一样的效果。

2. 相对于单元格内容的布局

2.1 justify-items 水平方向

justify-items: start | center| end, 水平方向 '左'、'中'、'右'。

1.justify-items-start

2.justify-items-center

3.justify-items-end

2.2 align-items 垂直方向

align-items: flex-start | flex-end | center, 垂直方向 '上'、'中'、'下'。

1.items-start

2.items-center

3.items-end

3. 把内容当作整体进行布局

3.1 justify-content '水平方向' 整体布局

justify-content: flex-start | center | flex-end, 水平方向 '左'、'中'、'右'。

TIP

justify-between 不起作用。因为这种情况它只有 1 列。

1.justify-start 整体 左

2.justify-center 整体 中

3.justify-end 整体 右

3.2 align-content '垂直方向' 整体布局

align-content: start | center | end | space-between 垂直方向 '上'、'中'、'下'、'两端对齐'布局

1.content-start 整体 上

2.content-center 整体 中

3.content-end 整体 下

4.content-between 两端对齐

4. 设置列方向布局

设置列方向布局 grid-auto-flow: column

4.1 相对于单元格 '水平方向' 布局

1.justify-items-start

2.justify-items-center

3.justify-items-end

4.2 相对于单元格 '垂直方向' 布局

1.items-start

2.items-center

3.items-end

4.3 内容当作整体, '水平方向' 布局

1.justify-start

2.justify-center

3.justify-end

4.justify-between

4.4 内容当作整体, '垂直方向' 布局

1.content-start

TIP

content-between 不起作用。因为这种情况它只有 1 行。

2.content-center

3.content-end

5 如何让内容水平和垂直居中

1.整体垂直居中-1

综上所诉, 应该把它们当作一个整体进行布局, 所以设置 justify-centercontent-center, 或者 place-content-center

2. 整体垂直居中-2

红色方块相对于蓝色水平居中

1.设置父元素place-content-center, 设置红色方块 justify-self-center

2.设置父元素 content-center justify-items-center