grid布局兼容性(display:grid 兼容性)

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

大家好,我是讯享网,很高兴认识大家。



网格布局()是最强大的 CSS 布局方案。

它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了。

布局与 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别

Flex 布局轴线布局,只能指定”项目”针对轴线的位置,可以看作是一维布局Grid 布局则是将容器划分成”行”和”列”,产生单元格,然后指定”项目所在”的单元格,可以看作是二维布局,意味着可以同时处理行和列。Grid 布局远比 Flex 布局强大。

注意:设为网格布局以后,容器子元素(项目)的、、、和等设置都将失效。

image.png
讯享网

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

 

讯享网

上面代码中,最外层的元素就是容器,内层的三个元素就是项目。

注意:项目只能是容器的顶层子元素,不包含项目的子元素,比如上面代码的元素就不是项目。Grid 布局只对项目生效

容器里面的水平区域称为"行"(row),垂直区域称为"列"(column)。

image.png

行和列的交叉区域,称为"单元格"(cell)。

正常情况下,n行和m列会产生n x m个单元格。比如,3行3列会产生9个单元格。

划分网格的线,称为"网格线"(grid line)。水平网格线划分出行,垂直网格线划分出列。

正常情况下,n行有n + 1根水平网格线,m列有m + 1根垂直网格线,比如三行就有四根水平网格线。

image.png

image.png

指定一个容器采用网格布局。

默认情况下,容器元素都是块级元素,但也可以设成行内元素。

讯享网

上面代码指定是一个行内元素,该元素内部采用网格布局。

容器指定了网格布局以后,接着就要划分行和列。grid-template-columns属性定义每一列的列宽,grid-template-rows属性定义每一行的行高。

 

有时候,重复写同样的值非常麻烦,尤其网格很多时。这时,可以使用repeat()函数,简化重复的值。
接受两个参数,第一个参数是重复的次数(上例是3),第二个参数是所要重复的值。 上面的代码用repeat()改写如下。

讯享网

repeat()重复某种模式也是可以的。

 

有时,单元格的大小是固定的,但是容器的大小不确定。如果希望每一行(或每一列)容纳尽可能多的单元格,这时可以使用关键字表示自动填充

讯享网

为了方便表示比例关系,网格布局提供了关键字( 的缩写,意为"片段")。如果两列的宽度分别为1fr和2fr,就表示后者是前者的两倍。

 

fr可以与绝对长度的单位结合使用,这时会非常方便。

讯享网

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

 

关键字表示由浏览器自己决定长度。 行/列的大小由容器的大小和列中网格元素内容的大小决定。

讯享网

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

 

网格布局允许同一根线有多个名字,比如[fifth-line row-5]。

属性对于网页布局非常有用。两栏式布局只需要一行代码。

讯享网

传统的十二网格布局

 

grid-row-gap属性设置行与行的间隔(行间距),grid-column-gap属性设置列与列的间隔(列间距)。

讯享网

属性是和的合并简写形式,语法如下。如果grid-gap省略了第二个值,浏览器认为第二个值等于第一个值。

 

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

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

讯享网

上面代码先划分出9个单元格,然后将其定名为a到i的九个区域,分别对应这九个单元格。 多个单元格合并成一个区域的写法如下。

 

上面代码将9个单元格分成a、b、c三个区域。

下面是一个布局实例。

讯享网

如果某些区域不需要利用,则使用"点"(.)表示,点号代表一个空网格单元。

 

上面代码中,中间一列为点,表示没有用到该单元格,或者该单元格不属于任何区域。

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

image.png

这个顺序由属性决定,默认值是row,即"先行后列"。也可以将它设成column,变成"先列后行"。

讯享网

image.png

grid-auto-flow属性除了设置成和,还可以设成和。这两个值主要用于,某些项目指定位置以后,剩下的项目怎么自动放置。

 

让1号项目和2号项目各占据两个单元格,然后在默认的grid-auto-flow: row情况下,会产生下面这样的布局。

image.png

上图中,1号项目后面的位置是空的,这是因为3号项目默认跟着2号项目,所以会排在2号项目后面。

现在修改设置,设为,表示"先行后列",并且尽可能紧密填满,尽量不出现空格。

image.png

上图会先填满第一行,再填满第二行,所以3号项目就会紧跟在1号项目的后面。8号项目和9号项目就会排到第四行。 如果将设置改为,表示"先列后行",并且尽量填满空格。

image.png

上图会先填满第一列,再填满第2列,所以3号项目在第一列,4号项目在第二列。8号项目和9号项目被挤到了第四列。

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

讯享网

这两个属性的写法完全相同,都可以取下面这些值。

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

image.png

讯享网

image.png

属性是属性和属性的合并简写形式。如果省略第二个值,则浏览器认为与第一个值相等。

 

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

讯享网

image.png

- 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔。

image.png

属性是属性和属性的合并简写形式。

属性和属性用来设置,浏览器自动创建的多余网格的列宽和行高。它们的写法与grid-template-columns和grid-template-rows完全相同。如果不指定这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高。

属性是grid-template-columns、grid-template-rows和grid-template-areas这三个属性的合并简写形式。

属性是grid-template-rows、grid-template-columns、grid-template-areas、 grid-auto-rows、grid-auto-columns、grid-auto-flow这六个属性的合并简写形式。

下面这些属性定义在项目上面。

image.png

项目的位置是可以指定的,具体方法就是指定项目的四个边框,分别定位在哪根网格线。

  • 属性:左边框所在的垂直网格线
  • 属性:右边框所在的垂直网格线
  • 属性:上边框所在的水平网格线
  • 属性:下边框所在的水平网格线 【注意】使用这四个属性,如果产生了项目的重叠,则使用z-index属性指定项目的重叠顺序。
 

image.png

上图中,只指定了1号项目的左右边框,没有指定上下边框,所以会采用默认位置,即上边框是第一根水平网格线,下边框是第二根水平网格线。

这四个属性的值还可以使用span关键字,表示"跨越",即左右边框(上下边框)之间跨越多少个网格。

讯享网

image.png

grid-column属性是grid-column-start和grid-column-end的合并简写形式,grid-row属性是grid-row-start属性和grid-row-end的合并简写形式。

 
讯享网

这两个属性之中,也可以使用关键字,表示跨越多少个网格。

 

项目item-1占据的区域,包括第一行 + 第二行、第一列 + 第二列。

image.png

斜杠以及后面的部分可以省略,默认跨越一个网格。

讯享网

grid-area属性指定项目放在哪一个区域。

 

1号项目位于e区域,效果如下图

image.png

grid-area属性还可用作、、、的合并简写形式,直接指定项目的位置

讯享网
 

  • 属性设置单元格内容的水平位置(左中右),跟属性的用法完全一致,但只作用于单个项目。
  • 属性设置单元格内容的垂直位置(上中下),跟属性的用法完全一致,也是只作用于单个项目。
  • 属性是属性和属性的合并简写形式。【注意】如果省略第二个值,place-self属性会认为这两个值相等。
讯享网
  • start:对齐单元格的起始边缘。
  • end:对齐单元格的结束边缘。
  • center:单元格内部居中。
  • stretch:拉伸,占满单元格的整个宽度(默认值)。
 

来源:www.ruanyifeng.com/blog/2019/0…

小讯
上一篇 2025-06-13 21:29
下一篇 2025-06-14 19:45

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/208559.html