博客列表 >CSS高级知识网格布局Grid常用属性

CSS高级知识网格布局Grid常用属性

wen。
wen。原创
2021年02月07日 13:54:501023浏览

网格布局

CSS网格布局擅长将一个页面划分为几个主要区域以及定义这些区域的大小、位置、层次等关系像表格一样,网格布局让我们能够按行或列来对齐元素。然后在布局上,网格比表格更可能做到或更简单。

类型 方式 实现方式
传统 div+css布局 基于float + postition 来实现
弹性盒子 flex 主要是针对移动端布局(基于一维空间)
网格布局 grid 理解为 table Plus+ 基于行与列的二维空间布局

grid 常用属性

类型 描述
网格容器 由若干个矩形网格单元构成
网格项目 网络容器的子元素,必须放在网络单元中
网格单元 有”单元格”和”网络区域”二种表现形式
网格轨道 由多个网络单元组成,根据排序方向有”行轨”和”列轨”之分
轨道间距 容器中轨道之间的间距

1.1 grid-template-columns

设置轨道的列宽

grid-template-columns属性为 auto是自适应列宽

  1. /* 设置轨道的列宽 */
  2. /* 默认 grid-template-columns: auto; */
  3. grid-template-columns: 10rem 10rem 10rem;
  4. grid-template-columns: auto auto auto;

网格容器列宽

属性 排序方式
grid-template-columns 设置轨道的列宽
grid-template-rows 设置轨道的行高

1.2 gap

设置轨道的间距

  1. /* 设置轨道的间距 */
  2. /* gap: 水平 垂直; */
  3. gap: 0.5rem 1rem;

轨道间距

1.3 fr 网格新单位

fr和auto同等都是响应式

如何让第2个元素是其他元素的2倍呢?

  1. grid-template-columns: 1fr 2fr 1fr;

fr单位布局

  • fr 与auto之间的区别

    1. grid-template-columns: 1fr auto 1fr;
    2. /* 此时 auto 完全失灵 */
  • fr 与 % 的区别

    1. grid-template-columns: 1fr 3fr 1fr;
    2. /* 因为百分比不支持gap轨道间距,所有会超出网格容器 */
    3. grid-template-columns: 20% 60% 20%;
  • fr 与其他单位混合,如 em,px

    1. /* px是固定的,em也是固定;计算时要减去这些固定值,将剩下的空间在fr之间分配 */
    2. /* 总宽度 - 8em - 200px,将剩下的空间分配fr */
    3. grid-template-columns: 8em 1fr 2fr 200px;
    4. /* 网格宽度会受限制 */
  • fr 尽可能不要与auto同时使用

    1. /* auto 与 px , em , 会自动计算 */
    2. grid-template-columns: 30% auto 10em;
    3. /* auto网格单位会被压缩 */
    4. grid-template-columns: 1fr auto 10em;

1.4 函数

  • repeat()
    参数形式:repeat(重复片段,行或列形式)
    1. grid-template-columns: repeat(3,1fr);
    一行三列展示效果图
    reoeat函数
  • minmax()
    参数形式:minmax(最小宽度,最大宽度)
    1. /* 中间列,最小宽度是20em,最大宽高是左右的2倍 */
    2. grid-template-columns: 1fr minmax(10em,2fr) 1fr;
    效果图如下
    最大值和最小值

隐式轨道

2.1 grid-auto-flow

隐式轨道:原有网格单元设置轨道的行高后,当新进网格单元是不受网格轨道的,这个时候需要设置隐式轨道的行高
原始轨道

  1. /* 默认项目在容器中按: 先行后列的顺序排列,“行优先” */
  2. grid-auto-flow: row;
  3. /* 自动生成的隐式轨道的高度是自动的 */
  4. /* 行优先时要设置隐式轨道的行高 */
  5. grid-auto-rows: 5rem;

效果如下
隐式轨道

排序方式

  1. /* 默认项目在容器中按: 先行后列的顺序排列,“行优先” */
  2. grid-auto-flow: row;
  3. /* 自动生成的隐式轨道的高度是自动的 */
  4. /* 行优先时要设置隐式轨道的行高 */
  5. grid-auto-rows: 5rem;
  6. /* 列优先 */
  7. grid-auto-flow: column;
  8. /* 列优先要设置的隐式轨道的列宽 */
  9. grid-auto-columns: 1fr;

列方式比较不是经常用

grid-area

grid-area属性在网格布局中指定网格项的大小和位置

  1. .container .item:nth-last-of-type(5){
  2. background-color: lawngreen;
  3. /* grid-area: 设置任何一个项目所在的网格单元的区域 */
  4. /* grid-area: 行始编号 / 列始编号 / 行结束编号 / 列结束编号 */
  5. grid-area: 1 / 1 / 2 / 2;
  6. }

指定网格项

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议