【css】grid布局学习

CSS Grid 布局学习笔记 CSS Grid 布局是一个强大的二维布局系统,它可以在网页上创建复杂的布局。Grid 布局允许你在水平和垂直方向上设计网页布局。网格轨道包含网格列和网格行。使用和定义网格轨道。/* 定义三列,每列宽度为100px *//* 定义两行,每行高度为50px */ 阅读详情

grid据说是最强大的css布局方案。

兼容性:灵活但兼容不好,就连谷歌浏览器都有部分不兼容:https://www.caniuse.com/?search=grid

 grid布局特征:将容器划分为行和列,以产生单元格

 

1.容器 / 项目 / 单元格 / 网格线 / 容器属性

采用grid布局的区域,称为容器(container),容器内部采用网格定位的子元素,称为项目(item)

正常情况下,n行和m列会产生n*m个单元格(cell),比如3行*3列 = 9个单元格

划分网格的线,称为网格线,正常情况下,n行有n+1根水平网格线,m列有m+1根垂直网格线

定义在容器上的为容器属性,定义在项目上的为项目属性

 

 

2.容器属性

1.display 

/*grid 块级 默认就是该display属性*/
display: grid

/* grid 行级*/
display: inline-grid

grid项目的float、display: inline-block、display: table-cell、vertical-align和column-* 属性设置都会失效

 

块级效果示意:

 

 

 

 

行级效果示意:

 

 

2.定义行和列

grid-template-columns: 属性定义每一列的列宽 从左到右依次指定,绝对单位和相对单位都可以

grid-template-rows: 属性定义每一行的行高 从上到下依次指定,绝对单位和相对单位都可以

repeat():可以使用repeat()函数,简化重复的值;接受两个参数,第一个参数是重复的次数,第二个参数是所要重复的值;repeat()还可用于重复某种模式

auto-fill:关键字,表示自动填充

fr:关键字,fraction 的缩写,意为"片段",用于表示比例关系

minmax():该函数产生一个长度范围,表示长度就在这个范围之中。它接受两个参数,分别为最小值和最大值

auto:关键字 表示由浏览器自己决定长度;自动填充

grid-template-columns属性和grid-template-rows属性里面,还可以使用方括号,指定每一根网格线的名字,方便以后的引用

基础代码示例:

后续(定义行和列)页面效果在该基础上叠加

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>grid布局学习</title>
    <style>
      span {
        font-size: 2em;
      }
      .item {
        font-size: 2em;
        text-align: center;
        border: 1px solid #e5e4e9;
      }

      .item-1 {
        background-color: #ef342a;
      }

      .item-2 {
        background-color: #f68f26;
      }

      .item-3 {
        background-color: #4ba946;
      }

      .item-4 {
        background-color: #0376c2;
      }

      .item-5 {
        background-color: #c077af;
      }

      .item-6 {
        background-color: #f8d29d;
      }

      .item-7 {
        background-color: #b5a87f;
      }

      .item-8 {
        background-color: #d0e4a9;
      }

      .item-9 {
        background-color: #4dc7ec;
      }
    </style>
  </head>
  <body>
    <!-- 注意,设为网格布局以后,容器子元素(项目)的
      float、display: inline-block、
      display: table-cell、
      vertical-align和column-*等设置都将失效。
    -->
    <span>foo</span>
    <div id="container">
      <div class="item item-1">1</div>
      <div class="item item-2">2</div>
      <div class="item item-3">3</div>
      <div class="item item-4">4</div>
      <div class="item item-5">5</div>
      <div class="item item-6">6</div>
      <div class="item item-7">7</div>
      <div class="item item-8">8</div>
      <div class="item item-9">9</div>
    </div>
    <span>bar</span>

    <script type="text/javascript"></script>
  </body>
</html>

 

代码:

display: grid;

/* 绝对单位 */
grid-template-columns: 100px 200px 100px;
grid-template-rows: 100px 100px 100px;


/* 百分比 */
/* grid-template-columns: 33.33% 33.33% 33.33%;
grid-template-rows: 33.33% 33.33% 33.33%; */


/* repeat() */
/* grid-template-columns: repeat(3, 33.33%);
grid-template-rows: repeat(3, 33.33%); */



/* repeat() 重复某个模式*/
/* 这里示例为将100px 20px 80px 这一组数值重复3遍*/
/*grid-template-columns: repeat(3, 100px 20px 80px);*/


/* auto-fill 每列宽度150px,知道容器不能放置更多的列*/
/* grid-template-columns: repeat(auto-fill, 150px); */


/* fr */
/*表示后一列是前一列的2倍*/
/*grid-template-columns: 1fr 2fr;*/

/* 与绝对长度的单位结合使用 */
/*grid-template-columns: 50px 1fr 2fr;*/


/* minmax() */
/* minmax(100px, 2fr); 表示列宽不小于100px,不大于2fr */
/*grid-template-columns: 1fr 1fr minmax(100px, 2fr);*/


/* auto */
/* grid-template-columns: 200px auto 200px; */


/* 
 *指定网格布局为3行 x 3列,因此有4根垂直网格线和4根水平网格线。方括号里面依次是这八根线的名字 
*/

/* 网格布局允许同一根线有多个名字,比如[fifth-line row-5] */
/* 
grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4];
grid-template-rows: [r1] 100px [r2] 100px [r3] auto [r4]; 
*/


绝对单位效果示意:

相对单位效果示意:

 

 

repeat()效果示意:

 

repeat()将100px 20px 80px 这一组数值重复3遍效果示意:

 

auto-fill效果示意:

 

fr(grid-template-columns: 50px 1fr 2fr)效果示意:

 

minmax()效果示意:

 

auto效果示意:

 

网格线取名效果示意:

 

 

 

3.定义行列间隔

grid-row-gap:属性设置行与行的间隔(行间距)

grid-column-gap:属性设置列与列的间隔(列间距)

grid-gap:grid-column-gap和grid-row-gap的合并简写形式

grid-template-areas:网格布局允许指定"区域"(area),一个区域由单个或多个单元格组成

grid-auto-flow:容器的子元素会按照顺序,自动放置在每一个网格;默认值是row,即"先行后列";还可设置为row dense/column dense,表示按顺序排列后,尽量填满空格

 

 

tips:根据最新标准,上面三个属性名的grid-前缀已经删除;grid-column-gap和grid-row-gap写成column-gap和row-gap,grid-gap写成gap

 

基础代码示例:

后续(定义行列间隔)页面效果在该基础上叠加

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>grid布局学习</title>
    <style>
      span {
        font-size: 2em;
      }
      .item {
        font-size: 2em;
        text-align: center;
        border: 1px solid #e5e4e9;
      }

      .item-1 {
        background-color: #ef342a;
      }

      .item-2 {
        background-color: #f68f26;
      }

      .item-3 {
        background-color: #4ba946;
      }

      .item-4 {
        background-color: #0376c2;
      }

      .item-5 {
        background-color: #c077af;
      }

      .item-6 {
        background-color: #f8d29d;
      }

      .item-7 {
        background-color: #b5a87f;
      }

      .item-8 {
        background-color: #d0e4a9;
      }

      .item-9 {
        background-color: #4dc7ec;
      }
      #container{
         display:grid;
         grid-template-columns: repeat(3,100px);
         grid-template-rows: repeat(3,100px);
      }
    </style>
  </head>
  <body>
    <span>foo</span>
    <div id="container">
      <div class="item item-1">1</div>
      <div class="item item-2">2</div>
      <div class="item item-3">3</div>
      <div class="item item-4">4</div>
      <div class="item item-5">5</div>
      <div class="item item-6">6</div>
      <div class="item item-7">7</div>
      <div class="item item-8">8</div>
      <div class="item item-9">9</div>
    </div>
    <span>bar</span>

    <script type="text/javascript"></script>
  </body>
</html>

 

代码:

/* grid-row-gap / grid-column-gap */
grid-row-gap: 20px;
grid-column-gap: 40px;

/* grid-gap: <grid-row-gap> <grid-column-gap>; */
/* grid-gap: 20px 40px; */

/* 如果grid-gap省略了第二个值,浏览器认为第二个值等于第一个值 */
/* grid-gap: 40px; */





/* 划分出9个单元格,然后将其定名为a到i的九个区域,分别对应这九个单元格 */
/* grid-template-areas: 'a b c'
                     'd e f'
                     'g h i';
*/


/* 多个单元格合并成一个区域的写法 */
/* 将9个单元格分成a、b、c三个区域 */
/* grid-template-areas: 'a a a'
                     'b b b'
                     'c c c'; 
*/


如果某些区域不需要利用,则使用"点"(.)表示 */
/* 代码中,中间一列为点,表示没有用到该单元格,或者该单元格不属于任何区域 */
/* grid-template-areas: 'a . c'
                     'd . f'
                     'g . i'; 
 */
       

/* 设成column,变成"先列后行" */
/* grid-auto-flow: column; */

 

grid-row-gap和grid-column-gap效果示意:

 

 

grid-template-areas效果示意同上,划分区域其实就是给区域命名,不会改变布局

grid-auto-flow效果示意:

参考上面的示例,可知,第一列与第一行交换了位置,依次类推;上代表先的意思

 

 

 

 

该文章是由学习阮一峰老师的CSS Grid 网格布局教程而产出

ETL第八章无人售货机零售项目实践 ETL实战项目——无人售货机 阅读详情

相关推荐

【人工智能】人工智能基础概念、流派、发展史

人工智能初衷就是让计算机能够像人类一样具有自我思考、自我学习、自我决策的能力。依据百度百科上对人工智能定义:人工智能是研究、开发用于模拟、扩展和延伸人的智能的理论、方法、技术及应用系统的一门新的技术学科。人工智能是研究使计算机来模拟人的某些思维过程和智能行为的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。

WEL测试 1886

CSS兼容性详解

对于前端工程师来说,不想面对又不得不面对的一个问题就是兼容性。在几年之前,处理兼容性,一般地就是处理IE低版本浏览器的兼容性。而近几年,随着移动端的发展,工程师也需要注意手机兼容性了。本文将详细介绍CSS兼容性 盒模型属性 【宽高width/height】 (全兼容) width height (IE6-不支持) min-width max-width min-height max-height...

web前端开发教程htmlcssjs 851

从空调温控到信号降噪:一阶RC低通滤波器在Arduino和STM32上的C语言实现指南

本文详细介绍了如何在Arduino和STM32平台上使用C语言实现一阶RC低通滤波器,涵盖从基础理论到实际应用的完整流程。通过具体代码示例和优化技巧,帮助开发者有效处理传感器噪声、信号平滑等问题,提升嵌入式系统的信号处理能力。

weixin_30565199的博客 502

外边距合并(Margin collapsing),Material UI的Grid布局,row-gap属性,浮动的影响

图1中便显示了Grid的容器元素设置了margin-top和margin-left为负数,它之所以要设置为负数,是因为Item元素在实现spacing时,是通过设置padding-top和padding-left来让item的content实现spacing效果的,也就是说item之间本身就是挨在一块的,通过下图中将padding-left属性取消了就能看到效果。因此为了不产生外边距合并,可以设置父元素的padding和border,也可以通过为父元素变成一个新的BFC的方法,创建一个独立的渲染区域。

凝涵的博客 688

【SPI-NAND】Linux驱动移植实战:从规格书解析到内核适配

本文详细解析了SPI-NAND Flash的Linux驱动移植实战,从规格书关键参数提取到内核MTD子系统适配。内容涵盖存储结构解析、命令集映射、设备树配置及厂商驱动开发,特别强调ECC校验、坏块管理等NAND特性处理,并提供了性能优化与测试验证的实用技巧。

weixin_27076351的博客 351

使用LabVIEW创建和分析柱状图:从基础绘制到高级数据分析的完整指南

LabVIEW,全称为Laboratory Virtual Instrument Engineering Workbench,是由美国国家仪器公司(National Instruments, NI)开发的一款图形化编程语言。自1986年首次推出以来,LabVIEW凭借其强大的数据采集、分析和控制能力,在工程、科研、教育等领域得到了广泛应用。与传统的文本编程语言不同,LabVIEW采用了图形化编程方式,用户通过连接不同的函数节点来实现复杂的逻辑和算法。

qq_38334677的博客 776

CSS布局---运用间隙

CSS中gap并不是新的属性,在CSS3新特性中多列布局为其添加了一个新能力。间隙属性除了运用在CSS栅格之外,CSS3新特性中弹性布局同样可以使用。由于CSS属性较多,且实际运用比我们看起来更复杂,这让我想同大家分享一下今天的主题---运用间隙。

qq_40619809的博客 8422

嵌入式开发之瑞芯微RK356x--基本环境搭建

嵌入式环境搭建

NexyHO的博客 618

CSS —— Grid 网格布局

CSS —— Grid 网格布局 容器 包裹 多个项目; <div id="container"> <div class="item item-1">1</div> <div class="item item-2">2</div> <div class="item item-3">3</div> <div class="item item-4">4</div> <div cl

baby_hua的专栏 968

Vue3 - 超详细最新 wangEditor V5 富文本编辑器安装引入及使用教程,提供工具栏配置、基础富文本功能、API使用示例教程等(新手小白快速引入并植入到项目中)

vue3,wangEditorv5富文本编辑器,wangEditorv5官方文档,vue3最新安装wangEditorv5富文本详细使用教程,vue3使用wangEditorv5编辑器示例代码,vue3网站网页安装植入富文本编辑器教程,vue3wangEditor使用api,vue3安装富文本控制台出现报错如何解决,vue3wangEditor-v5工具栏配置,vue3中使用富文本编译器wangEditor5的方法,wangeditor5在vue3中的全使用过程,vue3超详细最新wangedi

🏆 前端领域优质创作者 4253

华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 7万+

CSS Grid 网格布局教程

一、概述 网格布局(Grid)是最强大的 CSS 布局方案。 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布...

lucky__peng的博客 2606

华为OD机考双机位C卷 - 螺旋数字矩阵 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 数字螺旋矩阵(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 3219

如何通过游戏化学习彻底掌握CSS Grid布局:Grid Garden深度解析

在当今的前端开发领域,CSS Grid布局已成为构建现代网页不可或缺的核心技能。然而,对于许多开发者来说,掌握这一强大的二维布局系统往往伴随着陡峭的学习曲线和抽象的概念理解。这正是Grid Garden项目诞生的背景——一个通过游戏化方式让CSS Grid学习变得直观、有趣且高效的开源工具。 Grid Garden是一个创新的互动式学习平台,它将CSS Grid布局的复杂概念转化为简单的游戏机制

gitblog_00691的博客 613

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Flexbox Froggy与Grid Garden:CSS布局学习游戏对比测评

你是否还在为CSS布局挠头?Flexbox和Grid的属性记不住?本文对比两款爆红的CSS学习游戏——Flexbox Froggy与Grid Garden,用游戏化方式轻松掌握现代CSS布局技能。读完你将获得:两款游戏的核心差异分析、适用场景指南、进阶练习路径,以及10分钟上手的实战技巧。 ## 游戏定位与核心玩法 Flexbox Froggy专注于CSS Flexbox布局系统,通过24个关

gitblog_00362的博客 1088

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

css之grid布局个人学习笔记

划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格。默认的放置顺序是“先行后列”, 即先填满第一行,再开始放入第二行 (

动感超人的博客 984

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

css grid网格布局_通过Grid Garden学习CSS网格布局(有趣的方式)

大多数Web开发人员都知道Flexbox Froggy游戏 ,该游戏从头开始教您Flexbox的基础知识 。 这款免费游戏风靡一时 ,它对于教人们如何使用flexbox进行编码仍然具有不可估量的价值 。 好吧,制作该游戏的同一位开发人员拥有一个名为Grid Garden的 全新游戏 。 另请阅读: CSS网格布局模块简介 该游戏的工作方式与此类似,但可以教您如何编写CSS网格 。 ...

cune1359的博客 1022

CSS学习笔记13——grid布局

简述grid网格式布局

green_pine_的博客 364

一个简单好上手的 CSS Grid 布局学习游戏:29 关胡萝卜花园 Grid Garden 完整上手指南

写 CSS Grid 布局时,你是不是也遇到过同样的坎:文档把每个属性都讲透了,合上以后,grid-column-start 到底对应第几条线,脑子里还是空的。Grid Garden 把这件事变成了一款打开就能玩的游戏——在 5x5 的胡萝卜田里写 CSS 代码浇水,玩通关 29 个关卡,网格布局的属性就顺带记住了。 [![Grid Garden CSS Grid 布局学习游戏主界面](http

gitblog_00113的博客 320

学习CSS Grid布局

一. 重要术语: CSS Grid(网格) 布局(又称为 “Grid(网格)” ),是一个二维的基于网格的布局系统,它的目标是完全改变我们基于网格的用户界面的布局方式。 FlexBox:一维布局; Grid: 二维布局; Flexbox 和 Grid 能协同工作,而且配合得非常好 网格容器(Grid Container) 应用 display: grid 的元素。这是所有 网格项(gr...

dianbian4042的博客 920

通过Grid Garden游戏化学习CSS Grid布局:24个关卡带你从零到精通 [特殊字符]

Grid Garden是一款创新的CSS Grid布局学习游戏,通过种植胡萝卜的趣味方式,让你在24个精心设计的关卡中轻松掌握现代网页布局的核心技术。这个开源项目将枯燥的CSS Grid属性转化为生动有趣的游戏任务,让学习前端布局变得像玩游戏一样简单有趣。 ## 项目亮点速览 ✨ **🎮 游戏化学习体验** - 将复杂的CSS Grid概念转化为直观的种植任务,通过实践操作加深理解 **?

gitblog_00112的博客 441

使用 CSS Grid Generator来快速使用及学习 Grid 布局

CSS Grid Generator CSS Grid Generator是一个由Sarah Drasner创建的免费工具。它是一个可视化设计工具,允许咱们创建一个基本的 grid 布局,然后就可以使用生成对应的代码,帮助咱们快速布局。 第一次进入是界面是这样子的: CSS Grid 布局示例 当我正在学习一些东西时,我发现最好的学习方法是使用现有的工具构建实用的东西。在本文中...

粉丝们务必加入微信粉丝群 3911

如何快速学习 CSS Grid 布局

本文首发于:www.css88.com/archives/86…这篇文章是 CSS Grid 布局有用的资源和教程,帮你快速了解相关知识。同时还比较了 CSS Grid 、 Flexbox 、 Table 布局之间的区别,及适用情况。CSS Grid 布局今年真的很火。该布局系统规范最近获得了主流浏览器的支持,包括最新版本的 Firefox,Chrome,Opera,Safari和 Edge 。 ...

weixin_34061555的博客 117

CSS Grid入门指南:从零开始学习网格布局

CSS Grid是一种二维布局系统,可以同时控制行和列的排列方式。相比传统布局方法,它让复杂的页面结构变得非常简单。比如实现等高列、复杂网格排版等需求,用Grid几行代码就能搞定。

EmeraldWolf23的博客 955

css中的grid布局学习

Grid布局 1. 前言 网格布局(Grid)是最强大的 CSS 布局方案: 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了。 grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。 Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局...

my466879168的博客 320

css grid随页面大小_Grid 布局学习

Grid 布局学习Grid布局是微软在2010年提出来的一种新的布局方式,到2016年的时候提交了该布局的草案,经过这三四年的发展,grid布局慢慢变的成熟,兼容性也越来越好,可以适当学起来用起来了本次学习的几个点:CSS布局发展过程Grid布局的优点以及相关术语介绍Grid布局的使用注意事项、备注参考资料在我们开始学习前,先了解下它能用在什么情况下例如这个页面就是用grid布局的:Grid布局网...

weixin_39883260的博客 453
上一篇: 【typescript】记录typescript基本知识的学习
下一篇: 【vue】change事件在保留默认形参的情况下传递自定义形参
谭CV
博客等级 码龄9年 73粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值