【前端】CSS-Grid网格布局

目录

  • 一、grid布局是什么
  • 二、grid布局的属性
  • 三、容器属性
    • 1、display
      • ①、语句
      • ②、属性值
    • 2、grid-template-columns属性、grid-template-rows属性
      • ①、定义
      • ②、属性值
        • 1)、固定的列宽和行高
        • 2)、repeat()函数
        • 3)、auto-fill关键字
        • 4)、fr关键字
        • 5)、minmax()函数
        • 6)、auto关键字
    • 3、grid-row-gap属性、grid-column-gap属性、grid-gap属性
    • 4、grid-template-areas属性
    • 5、grid-auto-flow属性
      • ①、语法
      • ②、属性值
    • 6、justify-items属性、align-items属性、place-items属性
      • ①、语法
      • ②、属性值
    • 7、justify-content属性、align-content属性、place-content属性
      • ①、语法
      • ②、属性值
    • 8、grid-auto-columns属性、grid-auto-rows属性
  • 四、项目属性
    • 1、grid-column-start属性、grid-column-end 属性
    • 2、grid-row-start属性、grid-row-end 属性
    • 3、justify-self 属性、align-self 属性、place-self 属性
      • ①、语法
      • ②、属性值
  • 五、应用场景
  • 六、Grid布局和flex布局二者区别
  • 七、总结

一、grid布局是什么

grid布局:网络布局,是目前唯一一种CSS二维布局方式,一种新的CSS布局模型,由纵横相交的两组网络线形成的框架性布局结构,能够同时处理行与列。号称是最强大的CSS布局方案。

擅长将一个页面划分为几个主要区域,以及定义这些区域的大小、位置、层次等关系

Grid布局是将容器划分成了“行”和“列”,产生了一个个的网格,我们可以将网格元素放在与这些行和列相关的位置上,从而达到我们布局的目的。

二、grid布局的属性

Grid布局属性可以分为两大类

  1. 容器属性
  2. 项目属性

三、容器属性

1、display

①、语句

.wrapper {display: grid / inline-grid;
}

②、属性值

  • grid:该容器元素是一个块级元素
  • inline-grid:该容器元素为行内元素

一旦声明,这个元素的所有直系子元素将成为网格项目

2、grid-template-columns属性、grid-template-rows属性

①、定义

  • grid-template-columns:属性设置列宽
  • grid-template-rows:属性设置行高

②、属性值

1)、固定的列宽和行高

.wrapper {display: grid;/*  声明了三列,宽度分别为 200px 100px 200px */grid-template-columns: 200px 100px 200px;grid-gap: 5px;/*  声明了两行,行高分别为 50px 50px  */grid-template-rows: 50px 50px;
}

2)、repeat()函数

可以简化重复的值,该函数接受两个参数,第一个参数是重复的次数,第二个参数是所要重复的值。比如上面行高都是一样的,我们可以使用repeat()函数进行实现,实际效果是一样的

.wrapper {display: grid;grid-template-columns: 200px 100px 200px;grid-gap: 5px;/*  2行,而且行高都为 50px  */grid-template-rows: repeat(2, 50px);
}

3)、auto-fill关键字

表示自动填充,让一行(或者一列)中尽可能的容纳更多的单元格

.wrapper-2 {display: grid;/* 列宽200,但是列的数量是不固定的*/grid-template-columns: repeat(auto-fill, 200px);grid-gap: 5px;grid-auto-rows: 50px;
}

4)、fr关键字

fr单位代表网格中可用空间的一等份,可以帮助我们创建灵活的网格轨道

.wrapper {display: grid;/* 第一个列宽设置为 200px,第二个列宽为剩余宽度的1/3,第三个列宽为剩余宽度的2/3 */grid-template-columns: 200px 1fr 2fr;grid-gap: 5px;grid-auto-rows: 50px;
}

5)、minmax()函数

有的时候我们想给网格元素一个最小和最大的尺寸,minmax()函数产生一个长度范围,表示长度就在这个范围之中都可以应用到网格项目中。它接受两个参数,分别为最小值和最大值

.wrapper-4 {display: grid;/* 第三个列宽最少也是要 300px,但是最大不能大于第一第二列宽的两倍。 */grid-template-columns: 1fr 1fr minmax(300px, 2fr);grid-gap: 5px;grid-auto-rows: 50px;
}

6)、auto关键字

由浏览器决定长度。通过auto关键字,我们可以轻易实现三列或者两列布局

.wrapper-5 {display: grid;/* 表示第一第三列为 100px,中间由浏览器决定长度,自适应 */grid-template-columns: 100px auto 100px;grid-gap: 5px;grid-auto-rows: 50px;
}

3、grid-row-gap属性、grid-column-gap属性、grid-gap属性

grid-row-gap属性、grid-column-gap属性分别设置行间距和列间距, grid-gap属性是两者的简写形式

  • grid-row-gap:10px:表示行间距是10px
  • grid-column-gap:30px:表示列间距是30px
  • grid-gap:10px 30px:表示行间距是10px,列间距是30px
.wrapper-1 {display: grid;grid-template-columns: 200px 100px 100px;grid-auto-rows: 50px;/* 行间距是10px */grid-row-gap: 10px;/* 列间距是20px */grid-column-gap: 20px;
}.wrapper {display: grid;grid-template-columns: 200px 100px 100px;/* 行间距是10px; 列间距是20px */grid-gap: 10px 20px;grid-auto-rows: 50px;
}

4、grid-template-areas属性

grid-template-areas属性用于定义区域,一个区域由一个或者多个单元格组成

一般这个属性跟网格元素的grid-area一起使用,在这里会一起介绍。grid-area属性指定项目放在哪一个区域

.wrapper {display: grid;grid-gap: 10px;grid-template-columns: 120px  120px  120px;grid-template-areas:". header  header""sidebar content content";background-color: #fff;color: #444;
}.sidebar {grid-area: sidebar;
}.content {grid-area: content;
}.header {grid-area: header;
}

上面代码表示划分出6个单元格,其中值得注意的是 . 符号代表空的单元格,也就是没有用到该单元格
以上代码表示将类.sidebar .content .header所在的元素放在上面grid-template-areas中定义的sidedar content header区域中

5、grid-auto-flow属性

①、语法

grid-auto-flow 属性控制着自动布局算法怎样运作,精确指定在网格中被自动布局的元素怎样排列。默认的放置顺序是"先行后列",即先填满第一行,再开始放入第二行,即下图英文数字的顺序 one,two,three…。这个顺序由 grid-auto-flow 属性决定,默认值是 row

.wrapper {display: grid;grid-template-columns: 100px 200px 100px;grid-auto-flow: row;grid-gap: 5px;grid-auto-rows: 50px;
}

②、属性值

  • grid-auto-flow:row:表示根据实际情况排列,可能会存在空白等情况
  • grid-auto-flow:row dense:表示尽可能填满表格,下面存在长度合适的就会去填满上面的空白
  • grid-auto-flow:column:表示先列后行。就是按照顺序竖着排,一列排满就去排第二列,依次类推

6、justify-items属性、align-items属性、place-items属性

①、语法

justify-items属性设置单元格内容的水平位置(左中右),align-items属性设置单元格的垂直位置(上中下)

下面以justify-items属性为例进行讲解,align-items属性同理,只是方向为垂直方向。二者都有如下属性

.container {justify-items: start | end | center | stretch;align-items: start | end | center | stretch;
}

②、属性值

  • start:对齐单元格的起始边缘
  • end:对齐单元格的结束边缘
  • center:单元格内部居中
  • stretch:拉伸,占满单元格的整个宽度(默认值)

7、justify-content属性、align-content属性、place-content属性

①、语法

justify-content属性是整个内容区域在容器里面的水平位置(左中右),align-content属性是整个内容区域的垂直位置(上中下)

下面以justify-content属性为例进行讲解,align-content属性同理,只是方向为垂直方向

.container {justify-content: start | end | center | stretch | space-around | space-between | space-evenly;align-content: start | end | center | stretch | space-around | space-between | space-evenly;
}

②、属性值

  • start: 对齐容器的起始边框
  • end: 对齐容器的结束边框
  • center: 容器内部居中
  • space-around: 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍
  • space-between: 项目与项目的间隔相等,项目与容器边框之间没有间隔
  • space-evenly: 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔
  • stretch: 项目大小没有指定时,拉伸占据整个网格容器

8、grid-auto-columns属性、grid-auto-rows属性

在将grid-auto-columns属性和grid-auto-rows属性之前,先来看看隐式和显式网格的概念

**隐式和显式网格:**显式网格包含了你在 grid-template-columns 和 grid-template-rows 属性中定义的行和列。如果你在网格定义之外又放了一些东西,或者因为内容的数量而需要的更多网格轨道的时候,网格将会在隐式网格中创建行和列

假如有多余的网格(也就是上面提到的隐式网格),那么它的行高和列宽可以根据 grid-auto-columns 属性和 grid-auto-rows 属性设置。它们的写法和grid-template-columns 和 grid-template-rows 完全相同。如果不指定这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高

四、项目属性

1、grid-column-start属性、grid-column-end 属性

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

2、grid-row-start属性、grid-row-end 属性

  • grid-row-start 属性:上边框所在的水平网格线
  • grid-row-end 属性:下边框所在的水平网格线

3、justify-self 属性、align-self 属性、place-self 属性

①、语法

  • justify-self 属性设置单元格内容的水平位置(左中右),跟 justify-items 属性的用法完全一致,但只作用于单个项目
  • align-self 属性设置单元格内容的垂直位置(上中下),跟align-items属性的用法完全一致,也是只作用于单个项目

两者很相像,这里只拿 justify-self 属性演示,align-self 属性同理,只是作用于垂直方向。place-self 是设置。align-self 和 justify-self 的简写形式,这里也不重复介绍。

.item {justify-self: start | end | center | stretch;align-self: start | end | center | stretch;
}

②、属性值

  • start:对齐单元格的起始边缘
  • end:对齐单元格的结束边缘
  • center:单元格内部居中
  • stretch:拉伸,占满单元格的整个宽度(默认值)

五、应用场景

  • fr 实现等分响应式
  • repeat + auto-fit——固定列宽,改变列数量
  • repeat+auto-fit+minmax 去掉右侧空白
  • repeat+auto-fit+minmax-span-dense 解决空缺问题

六、Grid布局和flex布局二者区别

  • flex布局是一维布局。一次只能处理一个维度上的元素布局,一行或者一列
  • Grid是二维布局。可以同时处理行和列
    在这里插入图片描述

七、总结

通过使用CSS-Grid,可以创建复杂的布局,如响应式的多列网格、媒体查询、网格项的自适应大小和位置等。CSS-Grid通过定义网格行和列来组织内容,并使用网格容器和网格项将内容放置在网格中。CSS-Grid的主要优点是它提供了更灵活的布局选项,比如可以定义不同的网格行和列的大小和位置,而且不需要使用复杂的浮动和定位技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/124935.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT实现任意阶贝塞尔曲线绘制

bezier曲线在编程中的难点在于求取曲线的系数,如果系数确定了那么就可以用微小的直线段画出曲线。bezier曲线的系数也就是bernstein系数,此系数的性质可以自行百度,我们在这里是利用bernstein系数的递推性质求取: 简单举例 两个…

伪微分反馈控制(Pesudo-Drivative Feedback Control——PDF)

运动控制-单轴伺服控制带宽分析(二) - 知乎 (zhihu.com) 伪微分反馈控制_百度百科 (baidu.com) 伺服电机控制器的参数整定_老马过河hhh的博客-CSDN博客 伪微分PIIP控制_yukee10的博客-CSDN博客

【Linux成长史】Linux基本指令大全

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 数据库专栏 初阶数据结构 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如…

如何配置远程访问以在外部网络中使用公司内部的OA办公系统——“cpolar内网穿透”

文章目录 前言1. 确认在内网下能够使用IP端口号登录OA办公系统2. 安装cpolar内网穿透3. 创建隧道映射内网OA系统服务端口4. 实现外网访问公司内网OA系统总结 前言 现在大部分公司都会在公司内网搭建使用自己的办公管理系统,如OA、ERP、金蝶等,员工只需要…

Excel周报制作

Excel周报制作 文章目录 Excel周报制作一、理解数据二、数据透视表三、常用函数1.sum-求和2.sumif-单条件求和3.sumifs-多条件求和4.sum和subtotal的区别5.if函数6.if嵌套7.vlookup函数和数据透视表聚合8.index和match函数 四、周报开发五、报表总览 一、理解数据 这是一个线上…

在linux上挂载windows共享目录

挂载要求 非root用户(普通用户)能够读写windows共享目录,比如查看文件、创建文件、修改文件、删除文件 # 让普通用户也可以正常读写 uidvalue and gidvalue Set the owner and group of the root of the file system (default: uidgid0, bu…

Kafka的文件存储与稀疏索引机制

![在这里插入图片描述](https://img-blog.csdnimg.cn/dde7fc866d214985baaa87300a472578.png)这些是存储在分区(分区才是实际的存储)文件中的. seg是逻辑概念 而实际由log存储的. index是偏移量索引而timeindex是时间戳索引 log就是seg 找数据就是先找log 再从log去找

YOLOV7改进-添加P2和P6检测层(以YOLOV7-Tiny为例)

下载三个配置文件地址 1、加p6 1、配置文件添加 2、让它自己利用k-means算法进行聚类 3、如果从8或9出来,在这里改 完整

java和js实现MD5加密

java import java.security.MessageDigest;public class Demo2 {public static void main(String[] args) {Demo2 demo2 new Demo2();String encry demo2.md5("admin");System.out.println("加密后:" encry);}/*** md5加密*/private static…

webrtc 的Bundle group 和RTCP-MUX

1,最近调试程序的时候发现抱一个错误 max-bundle configured but session description has no BUNDLE group 最后发现是一个参数设置错误 config.bundle_policy webrtc::PeerConnectionInterface::BundlePolicy::kBundlePolicyMaxBundle; 2,rtcp-mu…

Scrum工作模式及Scrum工具

Scrum工作模式是一种敏捷软件开发方法,其核心是团队合作和自我组织,旨在通过短周期的迭代开发,实现快速反馈和持续改进。 Scrum工作模式包括以下角色和活动: 1、产品负责人(Product Owner):负…

Cesium 根据鼠标点击生成点击点的坐标信息

Cesium 根据鼠标点击生成点击点的坐标信息 一、需求二、分析1. 创建鼠标点击事件2. 点击生成坐标但不是经纬度,而是笛卡尔坐标系下的坐标,这个时候需要做一次转换3. 完整代码 三、数据保存 一、需求 在日常开发中 ,会遇到根据鼠标点击生成对应…

【数据仓库基础(二)】数据仓库架构

文章目录 一. 基本架构二. 主要数据仓库架构1. 数据集市架构1.1. 独立数据集市1.2. 从属数据集市1.3. Inmon企业信息工厂架构 2. Kimball数据仓库架构3. 混合型数据仓库架构 三. 操作数据存储(ODS) 一. 基本架构 架构是指系统的一个或多个结构。结构中包…

echarts饼图label自定义样式

生成的options {"tooltip": {"trigger": "item","axisPointer": {"type": "shadow"},"backgroundColor": "rgba(9, 24, 48, 0.5)","borderColor": "rgba(255,255,255,0.4)&q…

Commonsense Knowledge Base Completion with Structural and Semantic Context

摘要 与研究较多的传统知识库(如Freebase)相比,常识性知识图(如ATOMIC和ConceptNet)的自动知识库补全提出了独特的挑战。常识知识图使用自由形式的文本来表示节点,与传统知识库相比,导致节点数量增加了几个数量级(与Freebase (FB15K237)相比…

Pythonの类

Python是一种面向对象编程语言,因此类在Python中是很重要的概念。类是一种定义数据和行为的模板,可以创建对象并针对特定的问题对其进行操作。 在Python中,类的定义以关键字"class"开头,后跟类的名称。类可以包含方法和…

网络编程相关知识

写一个应用程序,让这个程序可以使用网络通信,这里就需要调用传输层提供的api,传输层提供协议,主要是两个: UDP,TCP,它们分别提供了一套不同的api,socket api. UDP和TCP UDP:无连接,不可靠传输,面向数据报,全双工 TCP:有连接,可靠传输,面向字节流,全双工 一个客户端可以连接多…

arco-design-vue的tree组件实现右击事件

arco-design-vue的tree组件实现右击事件 业务中需要使用到tree组件,并且还要对tree实现自定义鼠标右击事件。在arco-design-vue的文档中,可以明确的看到,tree组件并没有右击事件的相关回调,那要如何实现呢?&#xff1f…

高等数学教材重难点题型总结(四)不定积分

难点在于量级,不定积分一定要多练多见才能游刃有余~ 1.利用求导公式验证等式 2.计算不定积分

亚马逊秋季促销指南——如何更好的利用促销?

最新消息,亚马逊官方宣布将会在10月份举行Prime会员大促,覆盖多个站点,亚马逊卖家们一定要抓住这波促销机会,在这个秋季再冲一把!但是还有一些小白玩家可能对于亚马逊促销了解不够,那么接下来我要讲的这些准…