grid网格布局使用
定义
grid布局是指对网页进行划分成一个一个网格,然后根据自己的要求,可以任意组合。
以前写类似的功能,很麻烦,需要写很多的CSS去控制,有了grid就很方便了,可以随意进行组合。
跟flex有很多地方相似,包括有部分属性。不同的地方也很突出,尤其是flex是一维,只有横向。而grid是有横向和纵向。另外grid功能要更强大点。
基本属性
display
通过对父元素进行设置display:grid,表示里面包裹的元素全是网格布局。
display:grid
grid-template-columns/grid-template-cols
grid-template-columns:表示每行的宽度,有几个表示每行有几列,多出部分会往下排列
grid-template-cols:表示每列的宽度
.grid{
display: grid;
grid-template-columns: 50px 50px 50px 50px;
grid-template-rows: 50px 50px 50px 50px;
}
以上的代码表示横向的每个item宽度和高度是50px,多出一个就会被自动排布下去。
单位
单位既可以是px,也可以是百分比,或者用auto
- px
.grid{
display: grid;
grid-template-columns: 50px 50px 50px 50px;
grid-template-rows: 50px 50px 50px 50px;
}
- 百分比
.grid{
display: grid;
grid-template-columns: 33.33% 33.33% 33.33%;
grid-template-rows: 33.33% 33.33% 33.33%;
}
- auto 表示宽度或高度是剩余的部分
.grid{
display: grid;
grid-template-columns: 33.33% 10% auto;
grid-template-rows: 33.33% 20% auto;
}
repeat()
repeat()用来处理几个item宽度相同的时候,避免写相同的数值,或者是重复某种模式
.grid{
display: grid;
grid-template-columns: repeat(3,20%);
grid-template-rows: repeat(3,20%);
}
.grid{
display: grid;
grid-template-columns: repeat(3,100px 50px 100px);
grid-template-rows: repeat(3,100px 50px 100px);
}
auto-fill
当容器的宽度不确定,但是item的宽度确定,一行尽可能多的容纳item,这时可以使用auto-fill
.grid{
display: grid;
grid-template-columns: repeat(auto-fill,100px);
}
fr
方便表示比例关系,使用fr来表示
.grid{
display: grid;
grid-template-columns: 1fr 2fr;
}
这表示后者是前者的2倍
fr也可跟px结合,会更方便
.grid{
display: grid;
grid-template-columns:100px 1fr 2fr;
}
上面代码表示第一列是100px,第二列是第三列的一半。
minmax
表示最大值最小值
.grid{
display: grid;
grid-template-columns:1fr 2fr minmax(100px,1fr);
}
上面代码表示,最小值不小于100px,最大值不大于1fr
row-gap,column-gap,gap
row-gap:每行之间的间距
column-gap:每列之间的间距
gap:缩写行/列间距
.grid{
display: grid;
grid-template-columns:1fr 2fr 1fr;
row-gap: 10px;
column-gap: 10px;
}
或者简便的写法:gap
.grid{
display: grid;
grid-template-columns:1fr 2fr 1fr;
gap: 10px;
}
上面代码表示行/列之间的间隔是10px
grid-area/grid-template-area
grid-area和grid-template-area,用来划分区域,grid-area用来指定item的名称,grid-template-area根据子区域的名称来排布,表示展现的方式
.grid{
display: grid;
grid-template-columns:100px 100px 100px;
grid-template-rows: 100px 100px 100px;
grid-template-areas: "div1 div1 div1"
"div2 div3 div4"
"div5 div6 div7"
"div8 div9 div9";
}
.div1{
grid-area: div1;
background-color: tan;
}
上面代码表示div区域指代的grid的div1,整个页面想展示的布局是如下图:
grid-auto-flow
网格布局一般根据横向依次排布,如果想竖向排序,可以设置grid-auto-flow
.grid{
display: grid;
grid-template-columns:100px 100px 100px;
grid-template-rows: 100px 100px 100px;
grid-auto-flow: column;
}
上面的代码表示按照竖向排序。
justify-items/align-items/place-items
justify-items/align-items类似,一个是水平方向上的展示,一个是垂直方向上的展示,属性一致
start:对齐起始位置
end:对齐结束位置
center:居中展示
stretch:拉伸至整个宽度
justify-items:设置的是item的水平方向展现方式。
.grid{
display: grid;
grid-template-columns:100px 100px 100px;
grid-template-rows: 100px 100px 100px;
justify-items: center;
}
上面代码表示每个item居中展示
align-items:设置的是垂直方向上的展现方式。
.grid{
display: grid;
grid-template-columns:100px 100px 100px;
grid-template-rows: 100px 100px 100px;
align-items: center;
}
上面代码表示item在垂直方向上居中展示
place-items是align-items和justify-items的结合
place-items:<align-items><justify-items>
justify-content/align-content/place-content
justify-content/align-content类似,一个是展示水平方向上,一个是展示垂直方向
justify-content:是指整个grid在整个容器中的水平方向展示位置
.grid{
display: grid;
grid-template-columns:100px 100px 100px;
grid-template-rows: 100px 100px 100px;
justify-content: center;
}
上面代码表示整个grid水平展现方式
grid-column-start/grid-column-end/grid-row-start/grid-row-end
可以指定项目的位置,通过控制左右上下的网格线
grid-column-start:左边框的网格线
grid-column-end:右边框的网格线
grid-row-start:上边框的网格线
grid-row-end:下边框的网格线
.div1{
grid-column-start: 2;
grid-column-end: 4;
grid-row-start: 1;
grid-row-end: 3;
background-color: tan;
}
上面代码表示第一个item的位置,开始位置是2,结束位置是4,上面的位置是1,下的位置是3,其他的item根据浏览器排布,由grid-auto-flow来决定,默认是先行后竖
tips:参考阮一峰的文章CSS Grid网格布局教程
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的情况下,使用 ...
- 轻松上手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 框架达到的效果,现在浏览器内置了. 上 ...
随机推荐
- [JAVA]枚举类型的应用
本文介绍枚举类的概念和开发过程中枚举的用法. 枚举类使用enum关键字定义,enum默认继承自Enum类,由于java单继承的特点,enum类无法再继承其他父类 一.枚举类的特性 1.简单枚举类的定义 ...
- Dynamics CRM Performance Issue when CRM Forms Opening
事情发生在Dynamics CRM 8.2.2版本,客户新升级到这个版本几个月的时间. 突然有一天,客户反映为什么我们打开CRM Form页面的时候loading的时间这么长呢?大概会需要5-15分钟 ...
- Spring的学习与实战
目录 一.Spring起步 学习路线图 Spring的基础知识 什么是Spring Spring框架核心模块 SpringBoot 第一个Spring应用DEMO 编写自己的第一个SpringMVC例 ...
- XSS与CSRF定义
一. CSRF 1. CSRF的基本概念 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通 ...
- ArrayList源码分析-jdk11 (18.9)
目录 1.概述 2.源码分析 2.1参数 2.2 构造方法 2.2.1 无参构造方法 2.2.2 构造空的具有特定初始容量值方法 2.2.3构造一个包含指定集合元素的列表,按照集合的迭代器返回它们的顺 ...
- 静态方法中注入bean
@Componentpublic class ScriptExecuteContent { @Autowired private static SignRepository signRepositor ...
- Scala 面向对象(八):特质(接口) 一
1 Scala接口的介绍 从面向对象来看,接口并不属于面向对象的范畴,Scala是纯面向对象的语言,在Scala中,没有接口. Scala语言中,采用特质trait(特征)来代替接口的概念,也就是说, ...
- celery 基础教程(四):定时任务
简介 celery beat 是一个调度器:它以常规的时间间隔开启任务,任务将会在集群中的可用节点上运行. 默认情况下,入口项是从 beat_schedule 设置中获取,但是自定义的存储也可以使用, ...
- 李航统计学习方法(第二版)(十):决策树CART算法
1 简介 1.1 介绍 1.2 生成步骤 CART树算法由以下两步组成:(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;(2)决策树剪枝:用验证数据集对己生成的树进行剪枝并选择最优子 ...
- A Broken Calculator 最详细的解题报告
题目来源:A Broken Calculator 题目如下(链接有可能无法访问): A Broken Calculator Time limit : 2sec / Stack limit : 256M ...