grid网格布局
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);
- repeat()重复某种模式也是可以的。
- 单元格的大小是固定的,但是容器的大小不确定。如果希望每一行(或每一列)容纳尽可能多的单元格,这时可以使用auto-fill关键字表示自动填充。
grid-template-columns: repeat(auto-fill, 100px);
- auto-fit则会尽量扩大单元格的宽度
- 为了方便表示比例关系,网格布局提供了fr关键字(fraction 的缩写,意为"片段")。如果两列的宽度分别为1fr和2fr,就表示后者是前者的两倍。
- 分成3份
grid-template-columns: 1fr 2fr; - fr可以与绝对长度的单位结合使用,这时会非常方便
- 分成3份
- 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网格布局的更多相关文章
- CSS Grid 网格布局全解析
介绍 CSS Grid(网格) 布局使我们能够比以往任何时候都可以更灵活构建和控制自定义网格. Grid(网格) 布局使我们能够将网页分成具有简单属性的行和列.它还能使我们在不改变任何HTML的情况下 ...
- python之tkinter使用-Grid(网格)布局管理器
# 使用tkinter编写登录窗口 # Grid(网格)布局管理器会将控件放置到一个二维的表格里,主控件被分割为一系列的行和列 # stricky设置对齐方式,参数N/S/W/E分别表示上.下.左.右 ...
- CSS Grid网格布局全攻略
CSS Grid网格布局全攻略 所有奇技淫巧都只在方寸之间. 几乎从我们踏入前端开发这个领域开始,就不停地接触不同的布局技术.从常见的浮动到表格布局,再到如今大行其道的flex布局,css布局技术一直 ...
- 【CSS】343- CSS Grid 网格布局入门
CSS Grid(网格) 布局使我们能够比以往任何时候都可以更灵活构建和控制自定义网格.Grid(网格) 布局使我们能够将网页分成具有简单属性的行和列. 它还能使我们在不改变任何HTML的情况下,使用 ...
- grid网格布局使用
定义 grid布局是指对网页进行划分成一个一个网格,然后根据自己的要求,可以任意组合. 以前写类似的功能,很麻烦,需要写很多的CSS去控制,有了grid就很方便了,可以随意进行组合. 跟flex有很多 ...
- 轻松上手CSS Grid网格布局
今天刚好要做一个好多div格子错落组成的布局,不是田字格,不是九宫格,12个格子这样子,看起来有点复杂.关键的是笔者有点懒,要写那么多div和css真是不想下手啊.多看了两眼,这布局不跟网格挺像吗?c ...
- Grid 网格布局详解
Grid网格布局详解: Grid布局与Flex布局有着一定的相似性,Grid布局是将容器划分成行和列,产生单元格,可以看做是二维布局. 基本概念: 采用网格布局的区域,称为"容器" ...
- TKinter布局之grid 网格布局
1.由于我们的程序大多数都是矩形,因此特别适合于网格 布局,也就是 grid 布局. 2.使用 grid 布局的时候,我们使用 grid 函数,在里面指 定两个参数,用 row 表示行,用 colum ...
- Grid 网格布局
CSS 网格布局(Grid Layout) 是CSS中最强大的布局系统. 这是一个二维系统,这意味着它可以同时处理列和行,不像 flexbox 那样主要是一维系统. 你可以通过将CSS规则应用于父元素 ...
- CSS Grid 网格布局教程
一.概述 网格布局(Grid)是最强大的 CSS 布局方案. 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局.以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了. 上 ...
随机推荐
- 使用了条件三元运算符来判断 this.temp.id 是否存在且 mt_qty 是否已被赋值
mt_qty: (this.temp.id && this.temp.mt_qty) ? this.temp.mt_qty : event.wo_wip,在这个修正后的代码中,使用了条 ...
- oeasy教您玩转vim - 90 - # 语法定义syntax
内容查找 grep 回忆 我们这次研究了一下配色方案 murphy虽然配色好看 但是对于java的支持并不好 我们对于murphy进行了修改 增加了String.StorageClass颜色的定义 ...
- 前缀函数及 Knuth–Morris–Pratt 算法学习笔记
\(\text{1 引言 Preface}\) 对于形如以下的问题: 给予一个模式串 \(T\) 和主串 \(S\),在主串中寻找 \(T\). 我们称之为字符串匹配. 很显然朴素算法时间复杂度是 \ ...
- 【转载】 Pytorch手动释放显存
原文地址: http://www.shijinglei.com/2020/04/20/pytorch%E9%87%8A%E6%94%BE%E6%98%BE%E5%AD%98/ ============ ...
- X86架构CPU下Ubuntu系统环境源码编译pytorch-gpu-2.0.1版本
本文操作步骤与 aarch64架构CPU下Ubuntu系统环境源码编译pytorch-gpu-2.0.1版本大致相同,只是CPU架构不同而已,因此这里只记录不同的地方. 重点: 一个个人心得,那就是要 ...
- [题解] [ABC221H] Count Multiset - DP
[ABC221H] Count Multiset 题面翻译 输入两个正整数 \(N,M\),并存在一个集合,问你一个长度为 \(k\) 的合法集合存在多少个?你需要回答 \(k\) 的值为 \(1\) ...
- 10-canva绘制数据点
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- AWG(American wire gauge)美国线规
AWG(American wire gauge)美国线规,是一种区分导线直径的标准,又被称为 Brown & Sharpe线规.这种标准化线规系统于1857年起在美国开始使用.AWG前面的数值 ...
- MPTCP(一) :MPTCP概览
MPTCP概览 参考链接 MPTCP官网 http://multipath-tcp.org/ MPTCP入门 https://access.redhat.com/documentation/zh-cn ...
- JavaScript设计模式样例九 —— 桥接模式
桥接模式(Bridge Pattern) 定义:是用于把抽象化与实现化解耦,使得二者可以独立变化. 目的:将抽象部分与实现部分分离,使它们都可以独立的变化. 场景:实现系统可能有多个角度分类,每一种角 ...