# Grid风格布局
> CSS 网格布局(Grid Layout) 是CSS中最强大的布局系统。
>
> 这是一个二维系统,这意味着它可以同时处理列和行,不像 [flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/) 那样主要是一维系统。
>
> 你可以通过将CSS规则应用于父元素(成为网格容器)和该元素的子元素(网格元素),来使用网格布局。
[TOC]
## 1. 引言
* CSS网格布局(又名“网格”)是一个二维的基于网格的布局系统,其目的只在于完全改变我们设计基于网格的用户界面的方式。
* CSS一直用来布局网页,但一直都不完美。
* 一开始我们使用table 做布局,然后转向浮动、定位以及inline-block,但所有这些方法本质上都是 Hack 的方式,并且遗漏了很多重要的功能(例如垂直居中)。
* Flexbox的出现在一定程度上解决了这个问题,但是它的目的是为了更简单的一维布局,而不是复杂的二维布局(Flexbox和Grid实际上一起工作得很好)。
* Grid是第一个专门为解决布局问题而生的CSS模块
* 雷切尔·安德鲁(Rachel Andrew)的书[为CSS Grid布局准备](http://abookapart.com/products/get-ready-for-css-grid-layout)。 这本书对网格布局做了彻底、清晰的介绍,也是是整篇文章的基础,我强烈建议你购买并阅读他的书。
* 我的另一个重要灵感是Chris Coyier的[Flexbox完全指南](https://css-tricks.com/snippets/css/a-guide-to-flexbox/),当需要查阅 flexbox 的一切资料时我就会找这篇文章。
------------------------------------------------------------------------
## 2. 基础知识以及浏览器支持情况
* 一开始你需要使用`display:grid`把容器元素定义为一个网格,使用`grid-template-columns`和`grid-template-rows`设置列和行大小,然后使用`grid-column` 和 `grid-row`把它的子元素放入网格。
* 与flexbox类似,网格子元素的原始顺序不重要。 你的可以在 CSS 里以任意顺序放置它们,这使得使用媒体查询重新排列网格变得非常容易。 想象一下,我们需要定义整个页面的布局,然后为了适应不同的屏幕宽度完全重新排列,我们只需要几行CSS就能实现这个需求。 网格是有史以来最强大的CSS模块之一。
* 截至2017年3月,许多浏览器都提供了原生的、不加前缀的对CSS Grid的支持,比如 Chrome(包括Android),Firefox,Safari(包括iOS)和Opera。 另一方面,Internet Explorer 10和11支持它,但需要使用过时的语法。 Edge浏览器已经宣布将支持标准的Grid语法,但暂未支持
* 桌面浏览器:
| Chrome | Opera | Firefox | IE | Edge | Safari |
| :----- | :---- | :------ | :--- | :--- | :---------------- |
| 57 | 44 | 52 | 11* | 16 | 10.1移动端 / 平板 |
* 移动端 / 平板
| iOS Safari | Opera Mobile | Opera Mini | Android | Android Chrome | Android Firefox |
| :--------- | :----------- | :--------- | :------ | :------------- | :-------------- |
| 10.3 | No | No | 62 | 62 | 57 |
> 在生产环境中使用Grid只是时间问题,但现在是我们该学习的时候了
- 教学大纲
- HTML5基础
- 1-html基础知识
- 2-语义化结构元素
- 3-语义化文本元素
- 4-链接/列表/图像元素
- 5-表格元素
- 6-表单与控件元素[重点]
- CSS3基础
- 1-css与html文档
- 2-css选择器
- 3-细说盒模型
- Flex布局[精简版]
- 1-Flex概论
- 2-Flex布局是什么
- 3-Flex基本概念
- 4-Flex容器属性
- 5-Flex项目属性
- Flex布局[细说版]
- 1-flex 布局概述
- 2-flex 容器与项目
- 3-flex 容器主轴方向
- 4-flex 容器主轴项目换行
- 5-flex 容器主轴与项目换行简写
- 6-flex 容器主轴项目对齐
- 7-flex 容器交叉轴项目对齐
- 8-flex 多行容器交叉轴项目对齐
- 9-flex 项目主轴排列顺序
- 10-flex 项目交叉轴单独对齐
- 11-flex 项目放大因子
- 12-flex 项目收缩因子
- 13-flex 项目计算尺寸
- 14-flex 项目缩放的简写
- Flex布局[案例版]
- 1-调整项目顺序
- Grid布局[精简版]
- 1. 常用术语
- 2. 容器属性
- 3. 项目属性
- 4. 布局实例
- 1. 经典三列布局
- 2. 媒体查询
- Grid布局[细说版]
- 1-必知术语
- 2-容器创建与行列划分
- 3-单元格常用单位
- 4-项目填充到单元格
- 5-项目填充到网格区域
- 6-对齐容器中的所有项目
- 7-对齐单元格中所有项目
- 8-对齐单元格中某个项目
- 9-容器中行与列之间的间距