Grid 布局-属性浅记

145 阅读4分钟

理解Grid布局

Grid 布局是二维布局

又叫网格布局

Grid 布局是将容器划分成了“行”和“列”,产生了一个个的网格,我们可以将网格元素放在与这些行和列相关的位置上,从而达到我们布局的目的。

容器属性

display声明布局

  • display:grid 容器元素为块级元素
  • display: inline-grid 容器元素为行内元素

设置列宽行高

grid-template-columns 属性设置列宽,grid-template-rows 属性设置行高。

repeat(重复次数,重复值) 函数:简化重复的值。

repeat的第一个参数可以为auto-fill 关键字,不设置固定项目个数,表示填充满为止。

grid-template-columns: repeat(auto-fill, 200px)

fr 单位代表网格容器中可用空间的所占份额。

grid-template-columns: 200px 1fr 2fr;//有三列,第二列占剩余空间1/3,第三列占剩余空间2/3

minmax(最小值,最大值) 函数:给网格元素设置最小和最大尺寸。

grid-template-columns: 1fr 1fr minmax(300px, 2fr)

auto 关键字:自适应

//实现圣杯布局
{ 
    display: grid; 
    grid-template-columns: 100px auto 100px; 
    grid-gap: 5px; 
    grid-auto-rows: 50px; 
}

设置行间距和列间距

grid-row-gap 属性、grid-column-gap 属性分别设置行间距和列间距。grid-gap 属性是两者的简写形式。

grid-row-gap: 10px;     //----行间距是 10pxgrid-column-gap: 20px;  //----列间距是 20pxgrid-gap: 10px 20px;    //----合并上述两步

填充内容

使用grid-area给元素设置标识名称,然后在grid-template-areas进行填充描述。

。。。。。。
grid-template-areas: ". div3" "div2 div1";//在父元素中填充,第一个`.`表示跳过填充的位置。
grid-area: div1;//在子元素中设置标识名称

设置填充逻辑

  • 先行后列---grid-auto-flow: row;---默认
  • 先列后行---grid-auto-flow: column;

设置单元格对齐方式

设置单元格水平位置对齐方式:

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

设置单元格垂直位置对齐方式:

align-items: start | end | center | stretch; 
  • start:左对齐
  • end:右对齐
  • center:居中
  • stretch:拉伸

设置整个内容区域在容器里面的对齐方式

设置整个内容区域在容器里面水平方向对齐方式:

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

设置整个内容区域在容器里面垂直方向对齐方式:

align-content: start | end | center | stretch | space-around | space-between | space-evenly;
  • start - 对齐容器的起始边框
  • end - 对齐容器的结束边框
  • center - 容器内部居中
  • space-around - 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍
  • space-between - 项目与项目的间隔相等,项目与容器边框之间没有间隔
  • space-evenly - 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔
  • stretch - 项目大小没有指定时,拉伸占据整个网格容器

设置隐式网格的行高和列宽

隐式和显式网格:

  • 显式网格包含了在 grid-template-columnsgrid-template-rows 属性中定义的行和列。如果你在网格定义之外又放了一些东西,或者因为内容的数量而需要的更多网格轨道的时候,网格将会在隐式网格中创建行和列。
  • 隐式网格的行高和列宽根据 grid-auto-columns 属性和 grid-auto-rows 属性设置。使用方法和设置显示网格方法一致。如果不指定,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高

项目属性

设置位置-指定网格项目所在的四个边框

  • grid-column-start 属性:左边框所在的垂直网格线
  • grid-column-end 属性:右边框所在的垂直网格线
  • grid-row-start 属性:上边框所在的水平网格线
  • grid-row-end 属性:下边框所在的水平网格线

使用grid-area指定放置区域

grid-area 属性指定项目放在哪一个区域。

设置单个项目的单元格内容对齐方式

  • justify-self 属性设置单元格内容的水平位置(左中右),跟 justify-items 属性的用法完全一致,但只作用于单个项目。
  • align-self 属性设置单元格内容的垂直位置(上中下),跟align-items属性的用法完全一致,也是只作用于单个项目。

参考

最强大的 CSS 布局 —— Grid 布局