https://ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html

  • Grid 布局只对项目生效
  • 划分网格的线,称为"网格线"(grid line)。水平网格线划分出行,垂直网格线划分出列。

容器

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

    • inline-grid
    • 容器子元素(项目)的float、display: inline-block、display: table-cell、vertical-align和column-*等设置都将失效
  • grid-template-columns属性定义每一列的列宽
    • grid-template-columns: 100px 100px 100px;
    • 除了使用绝对单位,也可以使用百分比。grid-template-columns: 33.33% 33.33% 33.33%;
    • 重复写同样的值非常麻烦,尤其网格很多时。这时,可以使用repeat()函数。grid-template-columns: repeat(3, 33.33%);
      • repeat()重复某种模式也是可以的。grid-template-columns: repeat(2, 100px 20px 80px);
    • 单元格的大小是固定的,但是容器的大小不确定。如果希望每一行(或每一列)容纳尽可能多的单元格,这时可以使用auto-fill关键字表示自动填充。
      • grid-template-columns: repeat(auto-fill, 100px);
    • auto-fit则会尽量扩大单元格的宽度
    • 为了方便表示比例关系,网格布局提供了fr关键字(fraction 的缩写,意为"片段")。如果两列的宽度分别为1fr和2fr,就表示后者是前者的两倍。
      • 分成3份grid-template-columns: 1fr 2fr;
      • fr可以与绝对长度的单位结合使用,这时会非常方便
    • minmax()函数产生一个长度范围,表示长度就在这个范围之中。它接受两个参数,分别为最小值和最大值。
      • grid-template-columns: 1fr 1fr minmax(100px, 1fr);
    • auto关键字表示由浏览器自己决定长度
      • grid-template-columns: 100px auto 100px;
    • grid-template-columns属性和grid-template-rows属性里面,还可以使用方括号,指定每一根网格线的名字
      • grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4];
      • 网格布局允许同一根线有多个名字,比如[fifth-line row-5]
  • grid-template-rows属性定义每一行的行高
    • grid-template-rows: 100px 100px 100px;
  • row-gap属性设置行与行的间隔(行间距)
    • row-gap: 20px;
    • 可以理解为项目周围有一圈10px的margin
  • column-gap属性设置列与列的间隔(列间距)
  • 网格布局允许指定"区域"(area),一个区域由单个或多个单元格组成。grid-template-areas属性用于定义区域
    • 如果某些区域不需要利用,则使用"点"(.)表示
    • 区域的命名会影响到网格线。每个区域的起始网格线,会自动命名为区域名-start,终止网格线自动命名为区域名-end
display: grid;
grid-template-columns: 100px 100px 100px;
grid-template-rows: 100px 100px 100px;
grid-template-areas: 'a a a'
'd . f'
'g h i';
  • grid-auto-flow属性决定,默认值是row,即"先行后列"。也可以将它设成column,变成"先列后行"

    • 划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格。默认的放置顺序是"先行后列",即先填满第一行,再开始放入第二行
    • row dense和column dense。这两个值主要用于,某些项目指定位置以后,剩下的项目怎么自动放置。
      • 设为row dense,表示"先行后列",并且尽可能紧密填满,尽量不出现空格
      • 注释:网格布局会按照子项顺序一个个塞入网格中,遵循从左到右或从上到下放到最后一个空网格中,设置了 dense 后会放在从左到右或从上到下可能存在的空格中。
  • justify-items属性设置单元格内容的水平位置(左中右)
    • justify-items: start | end | center | stretch;
    • stretch:拉伸,占满单元格的整个宽度(默认值)。
  • align-items属性设置单元格内容的垂直位置(上中下)
    • align-items: start | end | center | stretch;
  • justify-content属性是整个内容区域在容器里面的水平位置(左中右)
    • justify-content: start | end | center | stretch | space-around | space-between | space-evenly;
    • space-around - 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍。
    • space-between - 项目与项目的间隔相等,项目与容器边框之间没有间隔。
    • space-evenly - 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔。
    • 注释:并不一定是整个容器的位置,而是容器内行和列的位置
  • align-content属性是整个内容区域的垂直位置(上中下)
    • align-content: start | end | center | stretch | space-around | space-between | space-evenly;
  • grid-auto-columns属性和grid-auto-rows属性用来设置,浏览器自动创建的多余网格的列宽和行高。
    • 有时候,一些项目的指定位置,在现有网格的外部。比如网格只有3列,但是某一个项目指定在第5行。这时,浏览器会自动生成多余的网格,以便放置项目。
    • 它们的写法与grid-template-columns和grid-template-rows完全相同
    • 如果不指定这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高。
    • grid-auto-rows: 50px指定新增的行高统一为50px

简写

  • grid属性是grid-template-rows、grid-template-columns、grid-template-areas、 grid-auto-rows、grid-auto-columns、grid-auto-flow这六个属性的合并简写形式
  • place-items属性是align-items属性和justify-items属性的合并简写形式
    • place-items: <align-items> <justify-items>;
    • place-items: start end;
    • 如果省略第二个值,则浏览器认为与第一个值相等。
  • place-content属性是align-content属性和justify-content属性的合并简写形式
    • 如果省略第二个值,浏览器就会假定第二个值等于第一个值
  • gap属性是column-gap和row-gap的合并简写形式
    • gap: <row-gap> <column-gap>;
    • 如果gap省略了第二个值,浏览器认为第二个值等于第一个值
  • grid-template属性是grid-template-columns、grid-template-rows和grid-template-areas这三个属性的合并简写形式

项目

  • grid-column-start属性:左边框所在的垂直网格线

    • grid-column-start: 2;
    • 这四个属性的值,除了指定为第几个网格线,还可以指定为网格线的名字grid-column-start: header-start;
    • 这四个属性的值还可以使用span关键字,表示"跨越",即左右边框(上下边框)之间跨越多少个网格。
      • grid-column-start: span 2;左边框距离右边框跨越2个网格
  • grid-column-end属性:右边框所在的垂直网格线
  • grid-row-start属性:上边框所在的水平网格线
  • grid-row-end属性:下边框所在的水平网格线
  • grid-area属性指定项目放在哪一个区域
    • grid-area: e
  • justify-self属性设置单元格内容的水平位置(左中右)
    • start:对齐单元格的起始边缘。
    • end:对齐单元格的结束边缘。
    • center:单元格内部居中。
    • stretch:拉伸,占满单元格的整个宽度(默认值)。
  • align-self属性设置单元格内容的垂直位置(上中下)

简写

  • grid-column属性是grid-column-start和grid-column-end的合并简写形式

    • grid-column: 1 / 3;
    • 这两个属性之中,也可以使用span关键字,表示跨越多少个网格grid-column: 1 / span 2;
  • grid-row属性是grid-row-start属性和grid-row-end的合并简写形式。grid-area: <row-start> / <column-start> / <row-end> / <column-end>;
    • grid-area: 1 / 1 / 3 / 3;
  • grid-area属性还可用作grid-row-start、grid-column-start、grid-row-end、grid-column-end的合并简写形式,直接指定项目的位置。
  • place-self属性是align-self属性和justify-self属性的合并简写形式
    • 如果省略第二个值,place-self属性会认为这两个值相等

grid网格布局的更多相关文章

  1. CSS Grid 网格布局全解析

    介绍 CSS Grid(网格) 布局使我们能够比以往任何时候都可以更灵活构建和控制自定义网格. Grid(网格) 布局使我们能够将网页分成具有简单属性的行和列.它还能使我们在不改变任何HTML的情况下 ...

  2. python之tkinter使用-Grid(网格)布局管理器

    # 使用tkinter编写登录窗口 # Grid(网格)布局管理器会将控件放置到一个二维的表格里,主控件被分割为一系列的行和列 # stricky设置对齐方式,参数N/S/W/E分别表示上.下.左.右 ...

  3. CSS Grid网格布局全攻略

    CSS Grid网格布局全攻略 所有奇技淫巧都只在方寸之间. 几乎从我们踏入前端开发这个领域开始,就不停地接触不同的布局技术.从常见的浮动到表格布局,再到如今大行其道的flex布局,css布局技术一直 ...

  4. 【CSS】343- CSS Grid 网格布局入门

    CSS Grid(网格) 布局使我们能够比以往任何时候都可以更灵活构建和控制自定义网格.Grid(网格) 布局使我们能够将网页分成具有简单属性的行和列. 它还能使我们在不改变任何HTML的情况下,使用 ...

  5. grid网格布局使用

    定义 grid布局是指对网页进行划分成一个一个网格,然后根据自己的要求,可以任意组合. 以前写类似的功能,很麻烦,需要写很多的CSS去控制,有了grid就很方便了,可以随意进行组合. 跟flex有很多 ...

  6. 轻松上手CSS Grid网格布局

    今天刚好要做一个好多div格子错落组成的布局,不是田字格,不是九宫格,12个格子这样子,看起来有点复杂.关键的是笔者有点懒,要写那么多div和css真是不想下手啊.多看了两眼,这布局不跟网格挺像吗?c ...

  7. Grid 网格布局详解

    Grid网格布局详解: Grid布局与Flex布局有着一定的相似性,Grid布局是将容器划分成行和列,产生单元格,可以看做是二维布局. 基本概念: 采用网格布局的区域,称为"容器" ...

  8. TKinter布局之grid 网格布局

    1.由于我们的程序大多数都是矩形,因此特别适合于网格 布局,也就是 grid 布局. 2.使用 grid 布局的时候,我们使用 grid 函数,在里面指 定两个参数,用 row 表示行,用 colum ...

  9. Grid 网格布局

    CSS 网格布局(Grid Layout) 是CSS中最强大的布局系统. 这是一个二维系统,这意味着它可以同时处理列和行,不像 flexbox 那样主要是一维系统. 你可以通过将CSS规则应用于父元素 ...

  10. CSS Grid 网格布局教程

    一.概述 网格布局(Grid)是最强大的 CSS 布局方案. 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局.以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了. 上 ...

随机推荐

  1. Odoo 自定义form表单按钮点击事件处理程序

    实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 方案1 通过研究发现,点击odoo form表单按钮时,会调用odoo14\odoo\addons\w ...

  2. LRZ

    1.在平面直角坐标系中,已知点 \(A(-2,2).B(3,4).C(0,1)\),直线 \(y=kx+b\) 过点 \(C\) 且与线段 \(AB\) 有交点,则 \(k\) 的取值范围是_____ ...

  3. 垃圾回收器比较:CMS 和 G1

    前言 在查看系统内存监控的过程中,发现有几台机器的内存使用率一直很高,而且是呈现一个不太正常的高度,初始以为是 GC 不完全,也就是 JVM 内有大量对象不能回收,于是采用 Arthas 诊断查看一下 ...

  4. JSR303统一校验使用

    JSR303也称为bean validation,定义了一套bean验证规范.通过注解的方式关联属性与规则 使用方式 1.引入依赖 <dependency> <groupId> ...

  5. Microsoft Dynamics CRM 365/2016 配置POP3/STMP邮箱(附例)

    前期准备: 必须支持pop3/stmp的邮箱 以下用网易163邮箱做的测试,注意开通了独立安全码,非邮箱登录密码 1.打开设置>>电子邮件配置 2.新建电子邮件配置 pop3/smtp 3 ...

  6. 云计算:Docker-compose快速部署前后端项目

    | 更好的观看效果请前往,原文博客地址:https://www.zeker.top/posts/338829e1/ 介绍 Docker Compose 是官方编排的项目之一,负责快速的部署分布式应用. ...

  7. (计算机类)人工智能方向会议的截止时间表 —— AI Conference Deadlines —— 会议投稿截止时间

    由 https://paperswithcode.com/ 提供的时间表. 做AI方向的research,经常需要关注的就是conference的deadline,之前往往都是需要手动的去挨个搜索,下 ...

  8. 【转载】流形学习 (Manifold Learning) ——(学习笔记)

    第一篇:   摘抄自:https://zhuanlan.zhihu.com/p/54516805 从度量空间到拓扑空间 拓扑这门学科的一个方向涉及到去研究集合在"连续变形"下一些不 ...

  9. 再探 游戏 《 2048 》 —— AI方法—— 缘起、缘灭(4) —— state-of-the-art

    <2048>游戏在线试玩地址: https://play2048.co/ 该游戏的解法比较不错的资料为外网的一个讨论帖子: What is the optimal algorithm fo ...

  10. Apache DolphinScheduler 1.3.4升级至3.1.2版本过程中的踩坑记录

    因为在工作中需要推动Apache DolphinScheduler的升级,经过预研,从1.3.4到3.1.2有的体验了很大的提升,在性能和功能性有了很多的改善,推荐升级. 查看官方的升级文档,可知有提 ...