网格grid布局

375 阅读3分钟

grid网格布局

认识网格

image.png

相关函数和属性

fr fraction片段。是一个自适应单位,fr单位被用于在一系列长度值中分配剩余空间,如果多个已指定了多个部分,则剩下的空间根据各自的数字按比例分配。

minmax(100px,200px) 函数来创建行或列的最小和最大尺寸,可以接受任何长度值,也接受 auto 值。auto 值允许网格轨道基于内容的尺寸拉伸或挤压。如果条件允许则一直使用最大值,不满足则使用中间值,不能小于最小值。属于范围取值。

repeat(3,100px) 属性可以创建重复的网格轨道。这个适用于创建相等尺寸的网格项目和多个网格项目。接受两个参数:第一个参数定义网格轨道应该重复的次数,第二个参数定义每个轨道的尺寸。[col1-start] 100px [col1-end] 5px [col2-start] 100px,用来自定义网格线名称,用[]包裹。

auto-fill 自动填充。应用子repeat函数中,repeat(auto-fill,minmax(200px,1fr)),代表需要重复的次数会自动填充,尽可能占满屏幕。用来做响应式布局很方便

auto 自动。代表占据剩余高度和宽度的所有。一行代码轻松实现两端固定中间自适应布局grid-template-columns:100px auto 100px;

grid 父容器设置

当设置了网格布局后,column,float,clear,vertical-align将失效

以下设置的都是单元格的大小,并非item的大小,切记切记。当item设置了大小,并且小于单元格时,可以设置item在单元格内水平和垂直方向的排列方式,justify-items\align-items

  • display : grid(块级block) | line-grid(行内块inline-block) | subgrid(继承父元素的行和列的大小) ;

设置行数和列数

  • grid-template-columns : 40px 50px;列数和每列宽度。不超过grid item的个数
  • grid-template-rows :45px 50px; 行数和每行高度。超过显示的列数,超过的部分将失效;

设置行列间距

  • grid-row-gap:20px; 行间距
  • grid-column-gap:30px; 列间距
  • grid-gap : grid-row-gap grid-column-gap ;两个属性的缩写

设置item排列方向

  • grid-auto-flow:row|column; 调整横向或者纵向排列,默认row:横向排列

设置item在单元格内的排列方式

  • justify-items:start|center|end|stretch;item在单元格内的水平对齐方式
  • align-items:start|center|end|stretch;item在单元格内的垂直对齐方式
  • place-items:justify-items align-items;简写形式

设置网格在容器内的排列方式

  • justify-content:start|center|end|stretch|space-around|space-between|space-evenly;网格在容器水平方向上的位置
  • align-content:start|center|end|stretch|space-around|space-between|space-evenly;网格在容器垂直方向上的位置
  • place-content:justify-conent align-content;简写

grid item设置

下列数字都是指的网格线,并不是单元格,切记切记。都是用于合并单元格

  • grid-row-start: 2;
  • grid-row-end: 4;
  • grid-column-start: 1;
  • grid-column-end: 3;
  • grid-row:1/3; grid-row-start/grid-row-end
  • grid-column:1/3 ; 是 grid-column-start/grid-column-end 的简写。
  • grid-area : 2/2/3/4 | 单元格名称; grid-row-start/grid-column-start/grid-row-end/grid-column-end。也可以指定单元格名称,把该元素放到单元格名称对应的位置。需要grid-template-areas定义好每个单元格的名称
  • grid-template-areas : '单元格1 单元格2 单元格3'; 该属性用来定义网格区域,和单元格相对应,指定各个单元格的名称。