(超详细)强大的grid布局

grid布局

1.什么是grid布局?

Flex布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局,Grid 布局则是将容器划分成“行"和“列”,产生单元格,然后指定"项目所在”的单元格,可以看作是二维布局,Grid布局远比 Flex布局强大。(不过存在兼容性问题,使用之前应看具体需求)

grid布局.png

2.布局方式----常用三种

1.传统布局方式

利用position属性 + display属性 + float属性布局, 兼容性最好, 但是效率低, 麻烦!

2.flex布局

有自己的一套属性, 效率高, 学习成本低, 兼容性强!

3.grid布局 dispaly:grid;

网格布局(grid)是最强大的布局方案, 但是知识点比较多, 学习成本相对较高, 目前兼容性不如flex布局!

3.基本概念

1.容器---有容器属性(container)

2.项目---有项目属性(items)

Grid概念图.png
Grid网格图.png

4.容器属性

  1. grid-template-columns

  2. grid-template-rows

  3. grid ow-gap

  4. grid-column-gap

  5. grid-gap (3和4的简写)

  6. grid-template-areas

  7. grid-auto-flow

  8. justify-items

  9. align-items

  10. place-items(8和9的简写)

  11. justify-content

  12. align-content

  13. place-content(11和12的简写)

  14. grid-auto-columns

  15. grid-auto-rows

(1)容器属性 grid-template-*

1.你想要多少行或者列,就填写相应属性值的个数,不填写,自动分配

容器属性1.png
grid-template-columns:100px 100px 100px; // 显示为三列每一列宽度100px 
grid-template-columns:repeat(3,100px);  //同上

2.auto-fill,有时,单元格的大小是固定的,但是容器的大小不确定,这个属性就会自动填充

grid-template-columns: repeat(auto-fill,100px);
auto-fill.png
  1. fr,为了方便表示比例关系,网格布局提供了fr关键字(fraction 的缩写,意为"片段”)
grid-template-columns:repeat(4,1fr); // 宽度平均分成四等份 
grid-template-columns:1fr 2fr 3fr;   // 列宽这样是分成6份各占 1 2 3 份 效果如下图 
fr.png
  1. minmax(),函数产生一个长度范围,表示长度就在这个范围之中,它接受两个参数,分别为最小值和最大值
grid-template-columns: 1fr minmax(150px,1fr);  // 第一个参数最小值,第二个最大值
minmax.png

5.auto,表示由浏览器自己决定长度

grid-template-columns: 100px auto 100px;
auto.png

6.网格线.可以用方括号定义网格线名称,方便以后给盒子定位使用

grid-template-columns: [c1] 100px [c2] 100px [c3] 100px [c4];  
Grid网格图.png

(2)容器属性 grid-gap / grid-column-gap

一句话解释就是,item(项目)相互之间的距离

gap.png

注意:根据最新标准,上面三个属性名的grid-前缀已经删除, grid-column-gap和grid-row-gap写成column-gap和row-gap,grid-gap写成gap

(3)容器属性 grid-template-areas

一个区域由单个或多个单元格组成,由你决定(具体使用,需要在项目属性里面设置)

areas.png

名字相同表示在一个区域,定位或者写项目属性的时候会用到

(4)容器属性 grid-auto-flow

划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格。默认的放置顺序是"先行后列".即先填满第一行,再开始放入第二行(就是子元素的排放顺序)

flow.png
dense.png

row dense属性值表示换行时留下的空间可以由下面的元素填补上去

(5)容器属性 justify-items(水平方向)/ align-items(垂直方向)

设置单元格内容的水平和垂直的对齐方式

duiqi.png

place-items : start end; 这是两个属性的简写

(6)容器属性 justify-content (水平方向)/ align-content(垂直方向)

设置整个内容区域(所有的项目的总和)的水平和垂直的对齐方式

justify-content: start | end | center | stretch | space-around | space-between | space-evenly;   //水平方向
align-content: start | end | center | stretch | space-around | space-between | space-evenly;     // 垂直方向

(7)容器属性grid-auto-columns / grid-auto-rows

用来设置多出来的项目宽和高

auto-rows.png

5.项目属性

  1. grid-column-start

  2. grid-column-end

  3. grid-row-start

  4. grid-row-end

  5. grid-column(1和2的简写形式)

  6. grid-row(3和4的简写形式)

  7. grid-area

  8. justify-self

  9. align-self

  10. place-self (8和9的简写形式)

(1)grid-column-start / grid-column-end grid-row-start / grid-row-end

一句话解释,用来指定item的具体位置,根据在哪根网格线

items属性.png

grid-column: 1 / 3; 前两个的简写

span.png

指定了项目所占的格数,跨列数

简写全部grid-co-ro.png

(2)gird-area

  1. 指定项目放在哪一个区域
area-items.png
  1. grid-area 还是 grid-row-start / grid-column-start / grid-row-end / grid-column-end 的缩写形式 缩写格式如下
grid-area:1 / 1 / 2 / 3;

(3)justify-self / align-self / place-self

self.png

place-self.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 兼容性:https://www.caniuse.com/css-grid[https://www.caniuse....
    我是Msorry阅读 837评论 0 0
  • CSS Grid 网格布局教程 作者: 阮一峰 一、概述 网格布局(Grid)是最强大的 CSS 布局方案。 它将...
    Daeeman阅读 854评论 0 2
  • 一、概述 网格布局(Grid)是最强大的 CSS 布局方案。 它将网页划分成一个个网格,可以任意组合不同的网格,做...
    文艺小菜阅读 565评论 0 1
  • 参考资料 CSS Grid 网格布局教程 - 阮一峰 概述 网格布局(Grid)是最强大的 CSS 布局方案。 它...
    Lia代码猪崽阅读 387评论 0 0
  • grid布局是一种新的布局方案。传统布局使用浮动和定位,而grid布局可以像表格一样将页面容器分割成一块一块的区域...
    gaiyb阅读 615评论 0 0