学习笔记 | 青训营

86 阅读3分钟

display属性

display: grid指定一个容器采用网格布局。

grid-template-columns 属性,grid-template-rows 属性

容器指定了网格布局以后,接着就要划分行和列。grid-template-columns属性定义每一列的列宽,grid-template-rows属性定义每一行的行高。

代码:.container {

  display: grid;

  grid-template-columns: 100px 100px 100px;

  grid-template-rows: 100px 100px 100px;

}

上面这段代码设置的是一个三行三列的容器,行高和列高都是100px,每一个单元格高和宽都是100px,除了绝对单位,也可以使用百分比。

 

repeat()

有时候连续设置多个同样的行高或列高就比较麻烦,可以使用repeat函数简化重复的值

repeat可以接受两个值,第一个是重复的次数,第二个是重复的值

也可以写成一下这种形式:  grid-template-columns: repeat(2, 100px 20px 80px);

auto-fill关键字

有时,单元格的大小是固定的,但是容器的大小不确定。如果希望每一行(或每一列)容纳尽可能多的单元格,这时可以使用auto-fill关键字表示自动填充。

fr 关键字

为了方便表示比例关系,网格布局提供了fr关键字(fraction 的缩写,意为"片段")。如果两列的宽度分别为1fr和2fr,就表示后者是前者的两倍。

minmax()

minmax函数产生一个长度范围,接受两个参数,分别是最小值和最大值

auto关键字

设置auto后,将由浏览器自行决定长度,尽可能的会沾满剩余空间,除非有其他设置,利用这个关键字可以轻易的实现三列或两列布局。

网格线

grid布局叫做网格布局,那自然少不了网格线的存在,使用方括号,指定每一根网格线的名字,方便以后的做定位时使用。

.container {

  display: grid;

  grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4];

  grid-template-rows: [r1] 100px [r2] 100px [r3] auto [r4];

}

网格间距

row-gap用于设置行与行的间隔(行间距),column-gap属性设置列与列的间隔(列间距

grid-template-areas属性

用于定义区域,一个区域由一个或者多个单元格组成

grid-auto-flow属性

划分网格以后,容器的子元素会安装顺序,自动放置在每一个网格。默认的放置顺序是“先行后列”,即先填满第一行,再开始放入第二行

这个顺序可以由grid-auto-flow属性决定,默认值是row,可以设置为“先列后行”。

单元格内容的排列方式(justify-items,align-items,place-items)

justify-items属性设置单元格内容的水平位置(左中右),align-items属性设置单元格内容的垂直位置(左中右)。

代码:.container {

  justify-items: start | end | center | stretch;

  align-items: start | end | center | stretch;

}

start:对齐单元格的起始边缘。

end:对齐单元格的结束边缘。

center:单元格内部居中。

stretch:拉伸,占满单元格的整个宽度(默认值)。

内容在容器中的排列方式(justify-content,align-content,place-content)

justify-content属性是整个内容区域在容器里面的水平位置(左中右),align-content属性是整个内容区域的垂直位置(上中下)。

代码:.container {

  justify-content: start | end | center | stretch | space-around | space-between | space-evenly;

  align-content: start | end | center | stretch | space-around | space-between | space-evenly;  

}

设置多余网格的宽高

对于网格有显式网格和隐式网格,显示网格通过grid-template-columns 和 grid-template-rows 属性中定义的行和列,当实际行数或者列数大于设置的行列数时,就会有多余的网格,这些网格的宽高通过grid-auto-columns和grid-auto-rows属性来设置。