几个月前初学 CSS 布局,写了一篇关于 CSS 常用布局学习 的博客,介绍了一些传统的依靠 position 和 float 等实现简单的布局方式的例子,这些布局只能简单得实现基本功能,十分不便。
今天,作为引申,我们用同样例子,来使用上篇中简单提到的 flex 布局的方案实现。与此同时,我将推荐最近学习的 grid 布局,它十分强大,可以方便得解决各种布局方案,且十分便于理解。

Flex 实现左中右布局

主要是在父元素中使用以下代码

1
2
display: flex;
flex-direction:row;

相对于传统布局,是不是简便得多Flex 左中右

Flex 实现垂直居中

1
2
3
display: flex;
justify-content:center;
align-items:center;

Flex 垂直居中

可以看到 flex 布局十分方便
想要了解更多 flex 布局相关技巧可以阅读阮大大 博客 当然你可以看 MDN

前面介绍的都是一维布局,但是在复杂的二维布局方面,无疑是为解决布局而创建的 CSS 网格布局更为专业
学习网格布局事实上是学习对应英文的过程,所以英语好真的很有优势

Grid 布局实现左中右

虽然有点大材小用,但是我们是为了和前面的布局方法做对比
你只需用两行代码

1
2
display: grid;
grid-template-columns: 30% 40% 30%;

grid 布局的代码更省,子元素不需要各自设定,直接在父元素上设定了Grid 左中右当然这里的子元素要与对应的格子相配,即 30% 40% 30% 对应的是 div.container 里面的顺序

网格布局

这里的 fr 为分数单位

1
2
3
display: grid;
grid-template-columns: 1fr 1fr 1fr; // 3列均分
grid-template-rows: 1fr 1fr 1fr; // 3行均分

通过上面代码实现了一个 3*3 的网格
可以通过下面代码选择对应网格,并添加属性

1
2
grid-column: 1; // or 2 or 3
grid-row: 1; // or 2 or 3

网格布局示例


以上只是 flex 布局和 grid 布局的小例子和基本用法
想要了解更多 grid 相关内容可以看这篇 博客
通过 flex 和 grid 布局配合使用,基本上可以解决所有 CSS 布局问题

本文仅供个人学习使用