[Css]Grid属性简单陈列(适合开发时有基础的快速过一眼)
[css进阶]Grid属性简介
文章目录
- [css进阶]Grid属性简介
- 典型需求
- 网格容器的属性
- display
- grid-template-columns和grid-template-rows
- grid-template-areas
- grid-template
- grid-column-gap grid-row-gap
- grid-gap
- justify-items
- align-items
- justify-content
- align-content
- grid-auto-columns和grid-auto-rows
- grid-auto-flow
- grid
- 网格项目的属性
- grid-column-start, grid-column-end, grid-row-start, grid-row-end
- grid-column 和 grid-row
- grid-area
- justify-self
- align-self
- Demo
- Demo1
- Demo2
参考
- https://juejin.cn/post/6844903550225514509
- https://gridbyexample.com/examples/
典型需求
先来看一个需求:一行排3个元素,宽度小于一定的时候,变成一行排列两个。
其实antd的Grid组件等栅格布局都能很好地实现这个功能,不过下面现在先用gird属性来实现,以此更好地理解它的标准和原理。
.grid {display: grid;grid-template-columns: repeat(3, 1fr);gap: 12px;
}@media (max-width: 1600px) {.grid {grid-template-columns: repeat(2, 1fr);}
}.grid > div {padding: 8px;color: white;background: grey;
}
<div class="grid"><div>content</div><div>content</div><div>content</div><div>content</div><div>content</div><div>content</div><div>content</div>
</div>
屏幕不够大,一行就排两个。

当屏幕够大时,变成这样。

网格容器的属性
display
- gird: 生成块级网格
- inline-grid: 生成内联网格
- subgrid: 嵌套网格(继承父网格)
.container{display: grid | inline-grid | subgrid
}
grid-template-columns和grid-template-rows
使用空格分隔的值列表来定义网格的列和行。这些值表示轨道大小,他们之间的空间表示网格线值
- 可以是网格中的空闲空间的长度,百分比, 或分数
- 线的名称 例如, 在网格轨迹之间流出空白区域时, 网格线会自动分配数字名称
.container{display: grid;grid-template-columns: 40px 50px auto 50px 40px;grid-template-rows: 25% 100px auto;
}.container{grid-template-columns: [first] 40px [line2] 50px [line2] auto [line3] auto [col4-start] 50px [five] 5px; grid-template-rows: [row1-start] 25% [row1-end] 100px [thrid-line] auto [last-line];
}
.container{grid-template-columns: repeat(3, 20px [col-start]) 5%;
}
设置单位为fr网格会允许您设置的网格轨道大小为网格容器的自由空间的一小部分,例如,这会将每个项目设置为容器宽度的三分之一。
.container {grid-template-columns: 1fr 1fr 1fr;
}
可用空间是在任何非弹性项目之后计算的,在这个例子中,fr单元可用空间的总量不包括50px
.container{grid-template-columns: 1fr 50px 1fr 1fr;
}
grid-template-areas
通过应用grid-area属性指定网格空间的名称来定义网格模板。 值:
- Xxx: 指定的网格空间的名称
grid-area - . : 表示一个空的网格单元
none: 没有定义网格空间
.container{grid-template-areas: "<grid-area-name> | . | none | ...";
}
Demo
.container{display: grid;grid-template-columns: repeat(4, 50px);grid-template-rows: auto;grid-template-areas: "header header header header""main main . slidebar""footer footer footer footer"
}
.item-a{grid-area: header;
}
.item-b{grid-area: main;
}
.item-c{grid-area: slidebar;
}
.item-d{grid-area: footer;
}

grid-template
一个简短设置grid-template-rows, grid-template-columns和grid-template-areas在一起的声明,可读性不太好,不建议使用。
grid-column-gap grid-row-gap
指定网格线的大小值:
.container{display: grid;grid-template-columns: repeat(4, 50px);grid-template-rows: repeat(4, 80px);grid-column-gap: 10px;grid-row-gap: 15px;
}
grid-gap
速记grid-row-gap和grid-column-gap 值:
- : 长度值
.container {grid-gap: <grid-row-gap><grid-column-gap>
}
justify-items
沿着行轴对齐网格内的内容(而不是align-items沿着列轴对齐),适用于所有网格容器内的网格项目 值:
- start: 将内容对齐到网格区域的左端
- end: 将内容对齐到网格区域的右端
- center: 将网格区域中心的内容对齐
- stretch: 填充网格区域的整个宽度
.container{justify-items: start;
}
此行为也可以通过justify-self在个别网格项目上设置
align-items
沿列轴对齐网格的内容(而不是justify-items沿着行轴对齐)。该值适用于容器内的所有网格项目 值:
- start: 将内容对齐到网格空间的顶部
- end: 将内容对齐到网格空间的底部
- center: 将内容对齐到网格空间的中心
- stretch: 填充网格空间的整个高度
.container {align-items: start;
}
justify-content
有时,网格的总大小可能小于其网格容器的大小, 如果您的所有网格项目都是用非灵活单位进行大小调整,就可能发生这种情况。这时候可以设置网格容器内的网格的对齐方式,此属性沿着行轴对齐网络值:
- start: 将网格对齐到网格容器的左端
- end: 将网格对齐到网格容器的右端
- center: 将网格对齐到网格容器的中心
- stretch: 调整网格的大小以允许网格填充网格容器的整个宽度
- space-around: 在每个网格项目之间分配一个均匀的空间,在两个端分配一半的空间
- space-between: 在每个网格项目之间分配一个均匀的空间,在两个端没有分配空间
- space-evenly:在每个网格项目之间分配一个均匀的空间,包括两个远端 例子
.container{justify-content: start;
}
align-content
此属性和justify-content一样,只不过是沿着列轴对齐网格 值:
- start: 将网格对齐到网格容器的顶部
- end: 将网格对齐到网格容器的底部
- cneter: 将网格对齐到网格容器的中心
- stretch: 调整网格项目的大小, 以允许网格项目填充网格容器的整个高度
- space-around: 在每个网格项目之间分配均匀的空间,在两端分配一半的空间
- sapce-between: 在每个网格项目之间分配一个均匀的空间,在两端没有空间
- space-evenly: 在每个项目之间分配一个均匀的空间, 包括两端 例子:
.container{align-content: start;
}
grid-auto-columns和grid-auto-rows
指定任何自动生成的网格轨道的大小,当明确声明超出定义的网格空间的行或列(通过grid-template-rows / grid-template-columns)时,会创建隐式网格轨道值:
- 可以长度, 百分比, 或分数(使用
fr单位) 如何创建隐式网格轨道, 例子:
.contaienr{display: grid;grid-template-columns: repeat(2, 60px);grid-template-rows: repeat(2, 90px);
}.container{grid-auto-columns: 60px;
}
grid-auto-flow
如果您没有明确放置在网格上的网格项目,则自动分配算法会自动分配这些项目。该属性控制自动分配算法的原理 值:
- column: 告诉自动分配算法依次填充每行,根据需要添加新行
- row: 告诉自动分配算法一次填充每列,根据需要添加新列
- dense: 告诉自动分配算法,如果之后出现较小的项目,则尝试在网格中尽早填充空间 dense可能导致您的项目出现乱序。
例子:
<section class="container"><div class="item-a">item-a</div><div class="item-b">item-b</div><div class="item-c">item-c</div><div class="item-d">item-d</div><div class="item-e">item-e</div>
</section>
你定义了一个五行两列的网格,并设置grid-auto-flow为row。
.container{display: grid;grid-template-columns: repeat(5, 60px);grid-template-rows: repeat(2, 30px);grid-auto-flow: row;
}
grid
简写为所有设置下列属性的单一声明: grid-template-rows,grid-template-columns, grid-template-areas, grid-auto-rows, grid-auto-columns和grid-flow。
网格项目的属性
grid-column-start, grid-column-end, grid-row-start, grid-row-end
通过引用特定的网格线来确定网格内项目的位置。 值:
- : 可以是一个数字来引用一个编号的网格线,或者一个名称来引用一个命名的网格线
- span : 项目将跨越提供的网格轨道数量
- span : 项目将跨越, 直到与它提供的名称命中
- auto: 自动分配
.item-a {grid-column-start: 2;grid-column-end: five;grid-row-start: row1-startgrid-row-end: 3
}
grid-column 和 grid-row
简写为grid-column-start+grid-column-end和grid-row-start+grid-row-end 值:
.item-c {grid-column: 3 / span 2;grid-row: third-line / 4;
}
grid-area
为项目提供一个名称,以便可以通过使用grid-template-areas属性创建的模板来引用他。或者属性可以用作grid-row-start+grid-column-start+grid-row-end+grid-column-end 值:
- : 你选择的名称
- / / / :可以是数字或命名行
.item {grid-area: <name> | <row-start> / <column-start> / <row-end> / <column-end>;
}
.item-d{grid-area: header;
}.item-d {grid-area: 1 / col4-start / last-line / 6
}
justify-self
沿着行轴对齐网格的内容,此属性适用与单个网格项目的内容 值:
- start: 将内容对齐到网格空间的左端
- end: 将内容对齐到网格空间的右端
- center: 将网格空间中心的内容对齐
- stretch: 填充网格空间的整个宽度
.item {justify-self: start | end | center | stretch;
}
align-self
沿列轴对齐网格内的内容,此值适用与单个网格项目内的内容 值
- start: 将内容对齐到网格空间的顶部
- end: 将内容对齐到网格空间的底部
- center: 将网格空间中心的内容对齐
- stretch: 填充网格空间的整个高度
.item {align-self: start | end | center | stretch;
}
Demo
更多demo:https://gridbyexample.com/examples/
Demo1
1个item占用一行
.father{display: grid;grid-template-columns: 416px minmax(366px, 416px);
}.son{grid-column-start: span 1
}
Demo2
<div class="wrapper"><div class="box header">Header</div><div class="box sidebar">Sidebar</div><div class="box content">Content<br /> More content than we had before so this column is now quite tall.</div><div class="box footer">Footer</div>
</div>
body {margin: 40px;
}.sidebar {grid-area: sidebar;}.content {grid-area: content;}.header {grid-area: header;}.footer {grid-area: footer;}.wrapper {display: grid;grid-gap: 10px;grid-template-columns: 120px 120px 120px;grid-template-areas:"....... header header""sidebar content content""footer footer footer";background-color: #fff;color: #444;}.box {background-color: #444;color: #fff;border-radius: 5px;padding: 10px;font-size: 150%;
}.header,
.footer {background-color: #999;
}

相关文章:
[Css]Grid属性简单陈列(适合开发时有基础的快速过一眼)
[css进阶]Grid属性简介 文章目录[css进阶]Grid属性简介典型需求网格容器的属性displaygrid-template-columns和grid-template-rowsgrid-template-areasgrid-templategrid-column-gap grid-row-gapgrid-gapjustify-itemsalign-itemsjustify-contentalign-contentgrid-auto-colum…...
100种思维模型之启发式偏差思维模型-017
曾国藩在给儿子的一封家书中曾写道:余于凡事皆用困知勉行工夫,尔不可求名太骤,求效太捷也。熬过此关,便可少进。再进再困,再熬再奋,自有亨通精进之日。 不急躁不求捷径,小火慢炖,将事…...
微服务 feign远程调用时 显示服务不可用 timed-out and no fallback
目录 第一种: failed and no fallback available 1 服务挂掉了 2 服务没有开启 3 注册中心没注册进去 -> ps: 直接调用的接口 通过网关转发失败 会报503 4 高并发下的服务熔断了 第二种: timed-out and no fallback 2.1 业务场景: A服务一切正常 但是B服务显示timeo…...
第一个Java程序(初识Java)
个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【JavaSE_primary】 文章目录1.Java概述1.1什么是Java1.2Java之父2.0第一个Java程序编译运行.class3.0程序如何跑起来的?3.1J…...
vulnhub LordOfTheRoot_1.0.1
总结:端口敲门,CVE-2015-8660提权, 目录 下载地址 漏洞分析 信息收集 端口敲门 网站分析 方法一 ssh登录提权 方法二 下载地址 LordOfTheRoot_1.0.1.ova (Size: 1.6 GB)Download: http://www.mediafire.com/download/m5tbx0dua05szjm…...
MutationObserver与IntersectionObserver
MutationObserver 出现原因:当我们需要监听元素发生变化时,不借助使元素发生变化的业务动作的情况下,使用无污染方式监听非常困难,为了解决这个问题,MutationObserver诞生! 概述 可以用来监听DOM的任何变化…...
【ESP 保姆级教程】玩转巴法云篇② ——MQTT设备云,MQTT协议下的数据通信
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-21 ❤️❤️ 本篇更新记录 2023-02-21 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...
植物大战 仿函数——C++
容器适配器 容器适配器不支持迭代器。栈这个东西,让你随便去遍历,是不好的。他是遵循后进先出的。所以他提供了一个街头top取得栈顶数据。 仿函数 仿函数(functor)是C中一种重载了函数调用运算符(operator()&#x…...
【C语言】浮点型数据在内存中的存储
🚀🚀🚀 如果文章对你有帮助不要忘记点赞关注收藏哦🚀🚀🚀 文章目录⭐浮点数在内存中的存储1.1 🤓举个例子:1.2浮点数存储规则🌈:对于M与E有一些特别规定1.3解释前面题目&…...
impala中的刷新元数据和刷新表
impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。 虽然Hive系统也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满…...
Vscode创建vue项目的详细步骤
目录 一、概述 操作的前提 二、操作步骤 一、概述 后端人员想在IDEA里面创建一个Vue的项目,但是这非常麻烦,用vscode这个前端专用软件创建就会非常快速。 操作的前提 1.安装vscode软件的步骤:vscode下载和安装教程和配置中文插件&#…...
如何在面试中介绍自己的项目,才能让软件测试面试官无可挑剔,
四、项目 4.1 简单介绍下最近做过的项目 根据自己的项目整理完成,要点: 1)项目背景、业务、需求、核心业务的流程 2)项目架构,B/S还是C/5,数据库用的什么? 中间件用的什么?后台什么语言开发…...
虹科方案|从 uCPE 到成熟的边缘计算平台
基于开放硬件平台,通用客户端设备 (uCPE) 支持快速添加、集成或删除任意数量的集中管理虚拟功能。 为了增加收入并保持竞争优势,托管服务提供商 (MSP) 和企业正在部署 uCPE 以增强业务敏捷性、加速新服务的引入并提高运营效率。最初,uCPE被部…...
计算机是怎么读懂C语言的?
文章目录前言程序环境翻译环境翻译环境分类编译预处理预处理符号预定义符号#define#undef命令行定义条件编译文件包含头文件包含查找规则嵌套文件包含其他预处理指令编译阶段汇编链接🎉welcome🎉 ✒️博主介绍:博主大一智能制造在读ÿ…...
hadoop入门介绍及各组件功能运行关系
文章目录Hadoop 组成部分1.HDFS2.MapReduce 架构概述3. yarn 架构概述4.HDFS、YARN、MapReduce三者关系Hadoop 组成部分 1.HDFS Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。 HDFS 架构概述 主要分为 NameNode (mn):存储文件的元…...
(HP)新手引导使用react-shepherd
1,官方参数文档:https://shepherdjs.dev/docs/tutorial-02-usage.html 2,基本代码 import { ShepherdTour } from react-shepherd; import ./index.less; // 自己的样式文件,用来修改样式 import ./shepherd.less; // 将shephe…...
数据结构:栈和队列(Leetcode20. 有效的括号+225. 用队列实现栈+232. 用栈实现队列)
目录 一.数据结构--栈 1.栈的基本介绍 2.栈的实现 二.数据结构--队列 1.队列的基本介绍 2.队列的实现 三.栈的运用(Leetcode20. 有效的括号225) 1.问题描述 2.问题分析 题解代码: 四.用两个队列实现栈(225. 用队列实现栈 - 力扣(Leetcode&a…...
22.2.19周赛双周赛(贪心、记忆化搜索...)
文章目录双周赛98[6359. 替换一个数字后的最大差值](https://leetcode.cn/problems/maximum-difference-by-remapping-a-digit/)[6361. 修改两个元素的最小分数](https://leetcode.cn/problems/minimum-score-by-changing-two-elements/)贪心排序[6360. 最小无法得到的或值](ht…...
2023最新软件测试面试题(带答案)
1. 请自我介绍一下(需简单清楚的表述自已的基本情况,在这过程中要展现出自信,对工作有激情,上进,好学) 面试官您好,我叫###,今年26岁,来自江西九江,就读专业是电子商务,毕…...
【C++】类型转换方法
本篇博客让我们来见识一下C中新增的类型转换方法 文章目录1.C语言中类型转换2.C中的强制类型转换2.1 static_cast2.2 reinterpret_cast2.3 const_castvolatile关键字2.4 dynamic_cast3.C强制类型转换的作用4.RTTI1.C语言中类型转换 在C语言中,类型转换有下面两种形…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
