阮一峰的网格布局(grid)教程于3月25号发布,正好学习一波grid布局。虽然grid布局还不能够支持商用,扩展一下知识面也是好的。

grid布局在主流浏览器的支持情况can i use查看

grid号称是史上最强大的布局方案,它将网页划分成一个个小网格,可以任意组合不同的网格,做成各式各样的布局。

grid布局和flex布局不同,flex布局是一维布局,只能改变项目的轴线位置。grid布局是二维布局,将容器划分成行和列,产生单元格,然后指定项目所在的单元格。

容器属性

display属性

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

div{
    display:grid
}

默认情况下容器都是块级元素,但也可以设置成行内元素。

div{
    diplay:inline-grid;
}

注意:设置成网格布局之后,容器的float、display:inline-block、display:inline-cell、vertical-align和column-*等设置都失效。

grid-template-columns属性和grid-template-rows属性

容器指定为网格布局之后,就要设置列宽 grid-template-columns、行高 grid-template-rows

div{
    display:grid;
    grid-template-columns:100px 100px 100px;
    grid-template-rows:100px 100px 100px;
}
//指定了三行三列的网格,列宽和行高都是100px。

除了设置px还可以用百分比

div{
    display:grid;
    grid-template-columns:33.3% 33.3% 33.3%;
    grid-template-rows:33.3% 33.3% 33.3%;
}

repeat()

网格特别多的时候可以用repeat函数简化重复的值。

div{
    display:grid;
    grid-template-columns:repeat(3,33.3%);
    grid-template-rows:repeat(3,33.3%);
}

repeat()接受2个参数,第一个参数是重复的次数,第二个参数是所要重复的值。
repeat()重复某种模式也是可以的

grid-template-columns:repeat(2, 100px 20px 80px);

auto-fill关键字

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

.container{
    display:grid;
    grid-template-columns:repeat(auto-fill,100px)
}
//自动填充,每列宽100px;

fr关键字

为了表示比例关系,网格布局提供了fr关键字。如果两列的宽分别为1fr和2fr,就表示后者是前者的2倍。

.container{
    display:grid;
    grid-template-columns:1fr 1fr;
}

minmax()

minmax()函数产生一个长度范围,表示长度就在这个范围之内,接受两个参数,分别是最小值、最大值

grid-tempalte-columns:1fr 1fr minmax(100px,1fr);

auto关键字

auto关键字表示由浏览器自己决定长度。

grid-template-columns:100px auto 100px;
未完待续

沈小白
242 声望9 粉丝

小白