CSS Grid 网格布局完整教程
前言一、概述二、基本概念
2.1 容器和项目2.2 行和列2.3 单元格2.4 网格线
三、容器属性
3.1 display 属性3.2 行与列属性定义
明文定义百分比定义repeat()定义auto-fill 关键字fr 关键字minmax()auto 关键字网格线名称定义布局实例
gap沟槽定义grid-template-areas 区域属性grid-auto-flow 排列属性垂直对齐属性水平对齐属性3.8 指定列(行)定义合并简写
四、项目属性
4.1 项目位置属性4.2 合并简写4.4 内容对齐定义
扩展阅读简介基础知识和浏览器支持
桌面(Desktop) 浏览器手机(Mobile) / 平板(Tablet)浏览器
重要术语
网格容器(Grid Container)网格项(Grid Item)网格线(Grid Line)网格轨道(Grid Track)网格单元格(Grid Cell)网格单元格(Grid Cell)
扩展阅读
前言细心的网友可能发现了,在最新的Zoomla!逐浪CMS中,调试网页时,会有一些新的变化,比如有一个蓝色的线架,同时有grid字样,如下图所示:
嗯,web开发者的自学打怪又要晋级了。这就是本期的gird布局教程。
CSS一直用来布局网页,但一直都不完美。 一开始我们使用table 做布局,然后转向浮动、定位以及inline-block,但所有这些方法本质上都是 Hack 的方式,并且遗漏了很多重要的功能(例如垂直居中)。 Flexbox的出现在一定程度上解决了这个问题,但是它的目的是为了更简单的一维布局,而不是复杂的二维布局(Flexbox和Grid实际上一起工作得很好)。 只要我们一直在制作网站,我们就一直在为解决布局问题不断探索, 而Grid是第一个专门为解决布局问题而生的CSS模块。
grid布局又称CSS网格布局,(又名“网格”)是一个二维的基于网格的布局系统,其目的只在于完全改变我们设计基于网格的用户界面的方式。grid中的一些概念网格容器(Grid Container)元素应用display:grid,它是其所有网格项的父元素。网格项(Grid Item)网格容器的直接子元素网格线(Grid Line)组成网格线的分界线。它们可以是列网格线(column grid lines),也可以是行网格线(row grid lines)并居于行或列的任意一侧网格轨道(Grid Track)两个相邻的网格线之间为网格轨道。网格单元(Grid Cell)两个相邻的列网格线和两个相邻的行网格线组成的是网格单元,它是最小的网格单元。网格区(Grid Area)网格区是由任意数量网格单元组成
grid目前兼容性目前还可以,主流浏览器对它的支持力度很大,相信不久的将来grid将成为每一个前端工作人员必备的布局技能。
一、概述网格布局(Grid)是最强大的 CSS 布局方案。
它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了。
上图这样的布局,就是 Grid 布局的拿手好戏。
Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。
Flex 布局是轴线布局,只能指定”项目”针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成”行”和”列”,产生单元格,然后指定”项目所在”的单元格,可以看作是二维布局。Grid 布局远比 Flex 布局强大。
二、基本概念学习 Grid 布局之前,需要了解一些基本概念。
父元素上的属性:
属性
说明
display
设置grid布局
grid-template-rows
设置网格的行数
grid-template-columns
设置网格的列数
grid-template-areas
根据子元素的网格名字来排列
grid-column-gap
用来指定竖网格轨道的大小
grid-row-gap
用来指定行网格轨道的大小
grid-gap
grid-column-gap和grid-row-gap这两个属性的缩写方式
justify-items
网格中所有单元格中的内容在X轴的对齐方式
align-items
网格中所有单元格中的内容在Y轴的对齐方式
justify-content
来设置整个网格在网格容器中的X轴的排列方式
align-content
来设置整个网格在网格容器中的Y轴的排列方式
grid-auto-columns
设定隐藏的网格的高
grid-auto-rows
设定隐藏的网格的宽
grid-auto-flow
在布局的时候,选择网格填充的方法
2.1 容器和项目采用网格布局的区域,称为”容器”(container)。容器内部采用网格定位的子元素,称为”项目”(item)。
<div>
<div><p>1</p></div>
<div><p>2</p></div>
<div><p>3</p></div>
</div>
上面代码中,最外层的<div>元素就是容器,内层的三个<div>元素就是项目。
注意:项目只能是容器的顶层子元素,不包含项目的子元素,比如上面代码的<p>元素就不是项目。Grid 布局只对项目生效。
2.2 行和列容器里面的水平区域称为”行”(row),垂直区域称为”列”(column)。
上图中,水平的深色区域就是”行”,垂直的深色区域就是”列”。
2.3 单元格行和列的交叉区域,称为”单元格”(cell)。
正常情况下,n行和m列会产生n*m个单元格。比如,3行3列会产生9个单元格。
2.4 网格线划分网格的线,称为”网格线”(grid line)。水平网格线划分出行,垂直网格线划分出列。
正常情况下,n行有n+1根水平网格线,m列有m+1根垂直网格线,比如三行就有四根水平网格线。
上图是一个 4 x 4 的网格,共有5根水平网格线和5根垂直网格线。
三、容器属性Grid 布局的属性分成两类。一类定义在容器上面,称为容器属性;另一类定义在项目上面,称为项目属性。这部分先介绍容器属性。
3.1 display 属性display: grid指定一个容器采用网格布局
完整,网格,布局,教程,grid