1 |
- (window.webpackJsonp=window.webpackJsonp||[]).push([[28],{256:function(t,s,a){"use strict";a.r(s);var e=a(0),n=Object(e.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"content"},[t._m(0),t._v(" "),a("p",[t._v("作者: 阮一峰")]),t._v(" "),a("p",[t._v("日期: 2019年3月25日")]),t._v(" "),t._m(1),t._v(" "),a("p",[t._v("网格布局(Grid)是最强大的 CSS 布局方案。")]),t._v(" "),a("p",[t._v("它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了。")]),t._v(" "),a("css-grid-01"),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),a("p",[t._v("学习 Grid 布局之前,需要了解一些基本概念。")]),t._v(" "),t._m(6),t._v(" "),a("p",[t._v('采用网格布局的区域,称为"容器"(container)。容器内部采用网格定位的子元素,称为"项目"(item)。')]),t._v(" "),t._m(7),t._m(8),t._v(" "),a("p",[t._v("注意:项目只能是容器的顶层子元素,不包含项目的子元素,比如上面代码的")]),a("p",[t._v("元素就不是项目。Grid 布局只对项目生效。")]),t._v(" "),t._m(9),t._v(" "),a("p",[t._v('容器里面的水平区域称为"行"(row),垂直区域称为"列"(column)。')]),t._v(" "),a("css-grid-02"),t._v(" "),a("p",[t._v('上图中,水平的深色区域就是"行",垂直的深色区域就是"列"。')]),t._v(" "),t._m(10),t._v(" "),a("p",[t._v('行和列的交叉区域,称为"单元格"(cell)。')]),t._v(" "),t._m(11),t._v(" "),t._m(12),t._v(" "),a("p",[t._v('划分网格的线,称为"网格线"(grid line)。水平网格线划分出行,垂直网格线划分出列。')]),t._v(" "),t._m(13),t._v(" "),a("css-grid-03"),t._v(" "),a("p",[t._v("上图是一个 4 x 4 的网格,共有5根水平网格线和5根垂直网格线。")])],1)},[function(){var t=this.$createElement,s=this._self._c||t;return s("h1",{attrs:{id:"grid-布局教程"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#grid-布局教程","aria-hidden":"true"}},[this._v("#")]),this._v(" Grid 布局教程")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"一、概述"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#一、概述","aria-hidden":"true"}},[this._v("#")]),this._v(" 一、概述")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("上图这样的布局,就是 "),s("code",[this._v("Grid")]),this._v(" 布局的拿手好戏。")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[s("code",[this._v("Grid")]),this._v(" 布局与 "),s("code",[this._v("Flex")]),this._v(" 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("p",[a("code",[t._v("Flex")]),t._v(' 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。'),a("code",[t._v("Grid")]),t._v(' 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。'),a("code",[t._v("Grid")]),t._v(" 布局远比 "),a("code",[t._v("Flex")]),t._v(" 布局强大。")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h2",{attrs:{id:"二、基本概念"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#二、基本概念","aria-hidden":"true"}},[this._v("#")]),this._v(" 二、基本概念")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"_2-1-容器和项目"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-1-容器和项目","aria-hidden":"true"}},[this._v("#")]),this._v(" 2.1 容器和项目")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"language-html line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-html"}},[a("code",[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("div")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("div")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("p")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("1"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("</")]),t._v("p")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("</")]),t._v("div")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("div")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("p")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("2"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("</")]),t._v("p")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("</")]),t._v("div")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("div")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("p")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("3"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("</")]),t._v("p")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("</")]),t._v("div")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("</")]),t._v("div")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br")])])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("上面代码中,最外层的"),s("code",[this._v("<div>")]),this._v("元素就是容器,内层的三个"),s("code",[this._v("<div>")]),this._v("元素就是项目。")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"_2-2-行和列"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-2-行和列","aria-hidden":"true"}},[this._v("#")]),this._v(" 2.2 行和列")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"_2-3-单元格"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-3-单元格","aria-hidden":"true"}},[this._v("#")]),this._v(" 2.3 单元格")])},function(){var t=this.$createElement,s=this._self._c||t;return s("p",[this._v("正常情况下,"),s("code",[this._v("n")]),this._v("行和"),s("code",[this._v("m")]),this._v("列会产生"),s("code",[this._v("n x m")]),this._v("个单元格。比如,3行3列会产生9个单元格。")])},function(){var t=this.$createElement,s=this._self._c||t;return s("h3",{attrs:{id:"_2-4-网格线"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-4-网格线","aria-hidden":"true"}},[this._v("#")]),this._v(" 2.4 网格线")])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("p",[t._v("正常情况下,"),a("code",[t._v("n")]),t._v("行有"),a("code",[t._v("n + 1")]),t._v("根水平网格线,"),a("code",[t._v("m")]),t._v("列有"),a("code",[t._v("m + 1")]),t._v("根垂直网格线,比如三行就有四根水平网格线。")])}],!1,null,null,null);s.default=n.exports}}]);
|