当前位置:网站首页 > HTML与CSS基础 > 正文

css grid布局案例(css3 grid布局)



grid-template-area

网格布局允许指定"区域"(area),一个区域由单个或多个单元格组成,用于定义网格区域名称。

 
  

以上代码定义了 3*3的九宫格,每个单元格的区域名称分别是a~i。
在这里插入图片描述

grid-area (项目属性)

grid-area是项目属性,指定项目放在哪一个区域。一般搭配grid-template-area使用。

示例一: 基于上述的3*3的网格,需求是把item1放到中的单元格。

 
  

中间区域的单元格名称是e,直接指定项目item1的grid-area属性值为e即可。
在这里插入图片描述
还可以通过项目指定区域,合并单元格。

示例二:3*3单元格,5个项目元素,第一行和第二行的单元格分别合并。

 
  

上述代码表示有3*3九宫格,其中第一行和第二行分别指定同一个区域。

 
  

上述代码表示将Itme1放到区域为a的位置,即占满第一行。将Itme2放到区域为b的位置,即占满第二行。
在这里插入图片描述
示例三:练习一个常见的布局

 
  

通过名称就知道有4个项目元素,再指定各个项目所在网格位置:

 
  

在这里插入图片描述
注意:所有指定项目区域或其他方式来合并单元格,只能合并矩形,L型或其他形状均无效。

  • :列与列的间隔(列间距)。
  • :行与行的间隔(行间距)
  • 属性是和的合并简写形式。如设置一个值则 列间距 = 行间距。
    在这里插入图片描述

划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格。就是定义单元格排列顺序和排列方式。

row、column

默认值,即放置顺序是"先行后列",即先填满第一行,再开始放入第二行。如下图示

 
  

在这里插入图片描述
这个顺序由属性决定,默认值是,即"先行后列"。也可以将它设成,变成"先列后行"。

 
  

在这里插入图片描述

row dense、column dense

 
  

上述代码就是将和占据2个单元格。在默认的情况下,产生下面这样的布局:
在这里插入图片描述
图示中,item1后是空白,因为itme2的水平网格线从1开始到3结束,即占了2个单元格, 而itme3排序默认在itme2后面。
现将grid-auto-flow: row dense,表示"先行后列",并且尽可能紧密填满,尽量不出现空格。效果如下图示:
在这里插入图片描述



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

 
  

justify-items

在这里插入图片描述

align-items

在这里插入图片描述

place-items

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

 
  

如果省略第二个值,则浏览器认为与第一个值相等。

容器只有一个元素下,居中样式又有一种写法了:

 
  

属性是整个内容区域在容器里面的水平位置(左中右及空白分配),属性是整个内容区域的垂直位置(上中下及空白分配)。其效果跟布局一样。

 
  

justify-content

在这里插入图片描述

align-content

在这里插入图片描述

place-content

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

 
  

如果省略第二个值,浏览器就会假定第二个值等于第一个值。

同样的,若容器只有一个元素下,居中样式也可以这样:

 
  

简单来说,定义容器中多余网格的列宽、行高。比如,网格设置了2行3列,但项目元素一共有8个,如下:

 
  

在这里插入图片描述
也或者,改变item7和item8的水平网格线的起始位置来改变其位置

 
  

在这里插入图片描述
上面2个例子都能看到在超出设置的网格后,单元格变得奇怪了,行高不受控制了。这时候就可以设置属性来固定行高:
在这里插入图片描述
属性和属性用来设置,浏览器自动创建的多余网格的列宽和行高。它们的写法与和完全相同。如果不指定这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高。


该属性是 这三个属性的简写形式。

该属性是 这六个属性的简写形式。

项目的位置是可以指定的,除了使用上述说明过的和搭配使用来指定,也可以指定项目的四个边框,分别定位在哪根网格线来指定项目的位置和占用的单元格。

  • :定义项目左边框所对齐的垂直网格线
  • :定义项目右边框所对齐的垂直网格线。
  • :是和的简写形式
  • :定义项目上边框所对齐的水平网格线。
  • :定义项目下边框所对齐的水平网格线。
  • :是和grid-row-end的简写形式
    示例一:基于九宫格改造:
 
  

上述代码表示:简单来说,将的从第2根垂直网格线开始,到第2根垂直网格线结束,效果就是右移一个单元格,且占用2个单元格;将的从第1根水平网格线开始,到第4根水平网格线结束,效果就是上移一个单元格,且占用3个单元格。
在这里插入图片描述
示例二:常见的布局

 
  

在这里插入图片描述

示例二:存在空格情况

 
  

上述将Item1右移一个单元格,且占用2个单元格。
在这里插入图片描述
上图中,只指定了的左右边框,没有指定上下边框,所以会采用默认位置,即上边框是第一根水平网格线,下边框是第二根水平网格线。
除了以外,其他项目都没有指定位置,由浏览器自动布局,这时它们的位置由容器的属性决定,这个属性的默认值是,因此会"先行后列"进行排列。我们可以通过设置这个属性的值为或来改变布局。
比如设置 ,尽可能填满。效果如下:
在这里插入图片描述




span 关键字

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

示例:布局

 
  

在这里插入图片描述

justify-self、align-self、place-self

  • :定义项目在单元格区域内的水平位置(左中右)
  • :定义项目在单元格区域内的垂直位置(上中下)
  • :同时定义项目在单元格区域内的水平和垂直位置,是 的简写。若省略第二个值,默认两个值相等。
  • start:对齐单元格的起始边缘。
  • end:对齐单元格的结束边缘。
  • center:单元格内部居中。
  • stretch:拉伸,占满单元格的整个宽度(默认值)。

justify-self

定义单个项目在单元格内的水平位置(左中右)
在这里插入图片描述

align-self

定义单个项目在单元格内的垂直位置(上中下)
在这里插入图片描述

到此这篇css grid布局案例(css3 grid布局)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • css伪类选择器(css伪类选择器实例)2025-11-25 13:45:10
  • bs4解析html方法(bs4解析xml)2025-11-25 13:45:10
  • css样式规范(css样式设计)2025-11-25 13:45:10
  • vs怎么用html生成css(怎么用vs2019写html)2025-11-25 13:45:10
  • css grid布局居中(grid布局垂直居中)2025-11-25 13:45:10
  • css-1导弹(css4导弹)2025-11-25 13:45:10
  • html网页颜色代码怎么用(html网页设计颜色)2025-11-25 13:45:10
  • flex布局和grid布局哪个好(css grid布局和flex布局)2025-11-25 13:45:10
  • css grid布局实现瀑布流(css瀑布流式页面布局)2025-11-25 13:45:10
  • css规范写法(css书写规范)2025-11-25 13:45:10
  • 全屏图片