基本知识

CSS grid 布局有两个核心组成部分:wrapper(网格容器,父元素)和items(网格项,子元素)。

基本属性

属性 含义
display: grid 网格布局(父元素设置)
grid-template-columns: 10px 10rem 10%; 将列分为3份
grid-template-rows: 10px 10rem 10%; 将行分为3份
grid-column-start: 1;grid-column-end: 4; 盒子开始于第一条列线,结束于第四条列线
grid-column: 1 / 4; 以上的简写形式
grid-row-start: 1;grid-row-end: 3; 盒子开始于第一条行线,结束于第三条行线
grid-row: 1 / 4; 以上的代码简写

小案例

  <div class="wrapper">
<div class="item1">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
<div class="item4">4</div>
<div class="item5">5</div>
</div>
.wrapper {
width: 300px;
height: 300px;
background-color: #ddd;
text-align: center;
font-size: 30px;
margin: 0 auto;
/* 网格布局 */
display: grid;
/* 现在是3*3的网格 */
/* 将行分为3份 */
grid-template-columns: 33.3% 33.3% 33.3%;
/* 将列分为2份,不够或者多出都可以 */
grid-template-rows: 33.3% 33.3% 33.3%;
} .item1 {
/* 开始于第一条行网格线,结束于第四条行网格线 */
grid-row-start:;
grid-row-end:;
background-color: red;
}
.item2 {
/* 简写:开始于第一条行网格线,结束于第三条行网格线 */
grid-column: 2/4;
background-color: green;
}
.item3 {
background-color: yellow;
}
.item4 {
grid-row: 2/4;
grid-column: 3/4;
background-color: pink;
}
.item5 {
grid-row: 3/4;
grid-column: 1/3;
background-color: purple;
}

继续挖掘

基本属性

属性 含义
grid-template-columns: repeat(n, 1fr); 将网格分为n列,1fr表示n分之一份 父元素
grid-template-rows: 50px 400px 50px; 分为3行,每一行的高度为50px 400px 50px。 父元素
grid-template-areas: 每一个网格项,你可以使用任意名称。“ . ”代表空白网格项。 父元素
grid-area: 网格区域(Grid Area)。 子元素

小案例

  <div class="wrapper">
<div class="header">头部</div>
<div class="menu">菜单</div>
<div class="content">内容</div>
<div class="footer">底部</div>
</div>
.wrapper {
margin: 100px auto;
width: 600px;
background-color: #f5f5f5;
display: grid;
/* 分为12列,每一列为1fr */
grid-template-columns: repeat(12, 1fr);
grid-template-rows: 50px 400px 50px;
/* 12 * 3 = 36 个网页项 .为空白网格项*/
grid-template-areas:
"h h h h h h h h h h h h"
"m m c c c c c c c c c c"
"f f f f f f f f f f . .";
/* 网格边距 10px */
grid-gap: 10px;
} .wrapper .header {
border-radius: 10px;
background-color: #bbf1bb;
/* 占据 名称为 h 的网格项 */
grid-area: h;
} .wrapper .menu {
border-radius: 10px;
background-color: #fde886;
/* 占据 名称为 m 的网格项 */
grid-area: m;
} .wrapper .content {
border-radius: 10px;
background-color: #8afcf9;
/* 占据 名称为 c 的网格项 */
grid-area: c;
} .wrapper .footer {
border-radius: 10px;
background-color: #dfb8f8;
/* 占据 名称为 f 的网格项 */
grid-area: f;
}

还有一种书写方式实现该布局:

.wrapper {
margin: 100px auto;
background-color: #f5f5f5;
display: grid;
/* 分为12列,每一列为1fr */
grid-template-columns: repeat(12, 1fr);
grid-template-rows: 50px 400px 50px;
/* 网格边距 10px */
grid-gap: 10px;
} .wrapper .header {
border-radius: 10px;
background-color: #bbf1bb;
/* 占据 名称为 h 的网格项 */
grid-area: 1/1/2/13;
} .wrapper .menu {
border-radius: 10px;
background-color: #fde886;
/* 占据 名称为 m 的网格项 */
grid-area: 2/1/3/3;
} .wrapper .content {
border-radius: 10px;
background-color: #8afcf9;
/* 占据 名称为 c 的网格项 */
grid-area: 2/3/3/13;
} .wrapper .footer {
border-radius: 10px;
background-color: #dfb8f8;
/* 占据 名称为 f 的网格项 */
grid-area: 3/1/4/11;
}

与响应式结合使用

只需要在css中加入

/* 屏幕像素小于等于1000px时 */
@media screen and (max-width: 1000px) {
.wrapper {
grid-template-areas:
"m m m m m m h h h h h h"
"c c c c c c c c c c c c"
"f f f f f f f f f f f f";
}
}

补充理论


display: grid | inline-grid | subgrid;
grid :生成一个块级网格
inline-grid :生成一个内联网格
subgrid :如果你的网格容器本身是另一个网格的网格项(即嵌套网格),你可以使用这个属性来表示 grid-template-columns: repeat(3, 20px [col-start]) 5%;
等价于:grid-template-columns: 20px [col-start] 20px [col-start] 20px [col-start] 5%;
网格容器(Grid Container)
网格项(Grid item)
网格线(Grid Line)
网格轨道(Grid Track)
网格单元格(Grid Cell)
网格区域(Grid Area)
 

参考文档

grid布局——从入门到放弃的更多相关文章

  1. grid布局快速入门

    Grid布局快速入门 常用Grid布局属性介绍 下面从一个简单Grid布局例子说起.CSS Grid 布局由两个核心组成部分是 wrapper(父元素)和 items(子元素). wrapper 是实 ...

  2. CSS Grid布局入门

    相信大家都比较熟悉flex布局了,最近有空研究了波grid布局,感觉虽然兼容性还不是太高,应用不是太普遍,但是功能非常强大.未来应该是grid+flex为主流,grid是二维布局,很灵活,适合整体构架 ...

  3. 带你入门 CSS Grid 布局

    前言 三月中旬的时候,有一个对于 CSS 开发者来说很重要的消息,最新版的 Firefox 和 Chrome 已经正式支 CSS Grid 这一新特性啦.没错:我们现在就可以在最流行的两大浏览器上玩转 ...

  4. 你需要的Grid布局入门教程

    一.Grid布局概述 首先,Grid 布局与 Flex布局 有一定的相似性,都可以指定容器内部多个项目的位置.但是,Grid 布局远比 Flex 布局强大! Flex 布局是轴线布局,只能指定&quo ...

  5. dotnet 从入门到放弃的 500 篇文章合集

    本文是记录我从入门到放弃写的博客 博客包括 C#.WPF.UWP.dotnet core .git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 从入门到 ...

  6. 学懂grid布局:这篇就够了(译)

    上周发过一篇关于flex布局的文章,但发完之后我感觉我并没有写很多自己对flex布局的理解,因为原链接的作者的轮子实在是太强了,这里借用知乎大佬牛岱的话来说,当人家已经有足够好的轮子,你就不要试图,甚 ...

  7. 2018-8-10-dotnet-从入门到放弃的-500-篇文章合集

    title author date CreateTime categories dotnet 从入门到放弃的 500 篇文章合集 lindexi 2018-08-10 19:16:52 +0800 2 ...

  8. WPF从入门到放弃系列第二章 XAML

    本文是作者学习WPF从入门到放弃过程中的一些总结,主要内容都是对学习过程中拜读的文章的整理归纳. 参考资料 XAML 概述 (WPF):https://msdn.microsoft.com/zh-cn ...

  9. OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据

    OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的 ...

随机推荐

  1. JAVA Main方法中调用非静态方法

    在JAVA中静态方法中只能调用其他,静态方法.main方法都是静态方法,如果想调用其它的方法,要么只能是其它的静态方法.还有一种方法就是将当前类实例化在调用它的非静态方法 public class t ...

  2. ACM-吴奶奶买鱼

    题目描述:吴奶奶买鱼   吴奶奶有个可爱的外孙女——琪琪,她很喜欢小动物,尤其喜欢养鱼.为了让小孙女养到漂亮的小鱼,吴奶奶一大早就到花鸟鱼虫市场买鱼.这个市场可真大,里面有各种各样的宠物,就连宠物鱼都 ...

  3. 云服务器CentOS7系统环境配置(jdk和tomcat)

    配置jdk 下载与安装 如果没有安装wget,首先安装wget工具 yum -y install wget 安装完成后,在网上找到jdk的下载链接,可以在官网找点击此处到官网下载,如果官网下载慢也可以 ...

  4. scanf与正则表达式的搭配及应用

    scanf与正则表达式的搭配及应用 正则其实我也学的不咋地,只会一点皮毛,正则最大的作用就是当输入流是一个字符串,我们能在输入的时候就滤掉无用信息,省去后期提取数值的步骤. 正则的语法我怕误人子弟,嘿 ...

  5. 使用Def文件导出Dll文件

    模块定义 (.def) 文件是包含一个或多个描述 DLL 各种属性的 Module 语句的文本文件.如果不使用 __declspec(dllexport) 关键字导出 DLL 的函数,则 DLL 需要 ...

  6. Ubuntu18.04可执行文件运行提示No such file or directory

    参考原文见 https://blog.csdn.net/sun927/article/details/46593129? 最近我也遇到一个类似问题,同一个工具在Ubuntu16.04里面运行是好的,但 ...

  7. git仓库拆分

    例如: # 这就是那个大仓库 big-project $ git clone git@github.com:tom/big-project.git $ cd big-project # 把所有 `co ...

  8. HDU_4960 2014多校9 Another OCD Patient DP

    其实现在想起来是个巨简单的DP,模型就跟LCS很像,比赛的时候居然没想出来,在聪哥提醒下还卡了个地方 就是说给定一串n个数字的序列,可以连续合并,最终使得序列是回文的,题目也给定了合并数字所需的代价, ...

  9. .net微软企业库的事务回滚

    事务是自定义的一个操作序列. 其中的操作要么全部执行要么全部不执行,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性. Databa ...

  10. 如何安装Anaconda

    如何安装Anaconda Python作为一门易读.易维护的语言,在工作和学习中应用广泛,被大量用户所欢迎.本文主要给大家介绍一下Anaconda 步骤 1 Anaconda在官网就可以下载,网址:h ...