当前位置: 首页 > Web前端 > HTML

网格布局_0

时间:2023-04-02 21:14:03 HTML

最近在重新巩固html的知识。在这里分享一下我在学习过程中跟随别人的笔记和体会。目前,网页布局一般包括table、float、flexbox和grid布局。table和float布局比较老,有被淘汰的趋势,而flexbox布局是现在比较流行的一种布局方式。flexbox布局属于一维布局,Grid属于二维布局的排版方式。Flexbox容器智能地控制水平或垂直方向。如果要控制另一个方向,需要再添加一层flexbox容器。Grid可以同时控制两个方向,你可以直接定义元素在容器中的位置。GridLine下面直接看工程:我们画了一个div容器,里面有5*5的网格,id定义为grid-container,其中row和column用起点到终点的线序标注.#grid-container{显示:网格;宽度:500px;高度:500px;背景色:#eee;网格模板行:100px100px100px100px100px;网格模板列:100px100px100px100px;在上面的代码中,我们将容器设置为网格布局,行列分隔成100px的正方形。效果图如下:

中container,我们设置了两个div,分别是cell-1和cell-2。.cell-1{背景颜色:绿色;网格行:2/4;网格列:1/3;}.cell-2{背景色:黄色;网格行:4/6;grid-column:3/6;}根据上面的代码,我们设置了两个子div的背景色和行列位置。生成的图形如下:grid-row:num/num和grid-column:num/num表示从哪一行到哪一行的行或列方向的值,这些线在网格布局中称为==网格线==。除了这种写法,我们还有其他几种写法:第二种写法:.cell-1{background-color:green;网格区域:2/1/4/3;}.cell-2{背景色:黄色;grid-area:4/3/6/6;}grid-area:grid-area定义的顺序是grid-row的第一个网格线值,grid-column的第一个网格线值,grid的最后一个网格线-row的值,grid-column的结束网格线值。第三种写法:.cell-1{background-color:green;网格行:2/跨度2;grid-column:1/span2;}.??cell-2{background-color:yellow;网格行:4/跨度2;grid-column:3/span3;}grid-row:num/spannum和grid-column:num/spannum表示从网格线延伸几格。一般第三种方法比较常用。最后一种方法是因为在我们的实际项目中,是无法看到网格线的具体编号的。在最后一种方法中,我们需要定义网格线的坐标值,直接根据坐标值进行定位。#grid-container{显示:网格;宽度:500px;高度:500px;背景色:#eee;网格模板行:[Y1]100px[Y2]100px[Y3]100px[Y4]100px[Y5]100px[Y6];grid-template-columns:[X1]100px[X2]100px[X3]100px[X4]100px[X5]100px[X6];}我们直接在父容器中设置网格线坐标。行方向设置为Y轴,列方向设置为X轴。那么我们直接从css代码中就可以一目了然的知道网格线的坐标轴了。.cell-1{背景颜色:绿色;网格行:Y1/Y4;网格列:X1/X3;}.cell-2{背景颜色:黄色;网格行:Y4/Y6;grid-column:X3/X6;}原来的写法可以改成这种写法。一目了然。GridAreas网格的分界线称为网格线,网格中的网格称为网格区域。或者直接用代码演示:#grid-container{display:grid;宽度:500px;高度:500px;背景色:#eee;网格模板行:[Y1]100px[Y2]100px[Y3]100px[Y4]100px[Y5]100px[Y6];网格模板列:[X1]100px[X2]100px[X3]100px[X4]100px[X5]100px[X6];grid-template-areas:"headerheaderheaderheaderheader""navmainmainmainmain""navmainmainmainmain""navmainmainmainmain"".footerfooterfooter.";}我们直接定义grid的值-template-areas,如上面的代码。这里定义的值表示为每个框设置一个别名,而.表示忽略框:
我们设置grid-containerdiv采用网格布局,有四个子容器。cell-1{background-颜色:绿色;grid-area:header;}.cell-2{background-color:yellow;网格区域:页脚;}.cell-3{背景颜色:红色;网格区域:导航;}.cell-4{背景颜色:黑色;grid-area:main;}这时候我们设置每个子容器拥有的区域别名,可以得到下图。让我们删除用于比例的背景图像。可以得到如下结构:是否熟悉,出现一般的网页布局。如果我们想为每个布局设置间隔,我们可以在grid-container中设置row-gap和column-gap属性,并重新设置背景颜色的宽度和高度。您可以找到如下所示的布局结构。#grid-container{显示:网格;宽度:540px;高度:540px;背景色:#eee;网格模板行:[Y1]100px[Y2]100px[Y3]100px[Y4]100px[Y5]100px[Y6];网格模板列:[X1]100px[X2]100px[X3]100px[X4]100px[X5]100px[X6];网格模板区域:“headerheaderheaderheader”“navmainmainmainmain”“navmainmainmainmain”“navmainmainmainmain”“.footerfooterfooter.”;行间距:10px;column-gap:10px;}frandrepeat()fr这个单位是专门用来Grid的比例的单位,1fr表示一份。#grid-container{显示:网格;宽度:500px;高度:500px;背景色:#eee;网格模板行:1fr1fr1fr1fr1fr;网格模板列:1fr1fr1fr1fr1fr;template-areas:"headerheaderheaderheaderheader""navmainmainmainmain""navmainmainmainmain""navmainmainmainmain"".footerfooterfooter.";行间距:10px;column-gap:10px;}比如这里设置了5个1fr,那么1fr就是1/5的尺寸。#grid-container{显示:网格;宽度:500px;高度:500px;背景色:#eee;网格模板行:3fr1fr1fr1fr1fr;网格模板列:1fr1fr1fr1fr1fr;template-areas:"headerheaderheaderheaderheader""navmainmainmainmain""navmainmainmainmain""navmainmainmainmain"".footerfooterfooter.";行间距:10px;column-gap:10px;}grid-template-rows改为3fr1fr1fr1fr1fr;,即第一行占3/7权重区域。从下图可以看出,顶部区域变大了。这里我们对重复fr有点厌烦了,此时可以使用repeat功能。repeat(time,content):time代表重复多少次,content代表重复什么。所以,刚才的代码可以改成这样:#grid-container{display:grid;宽度:500px;高度:500px;背景色:#eee;网格模板行:3fr重复(4,1fr);网格模板列:重复(5,1fr);网格模板区域:“headerheaderheaderheaderheader”“navmainmainmainmain”“navmainmainmainmain”“navmainmainmainmain”“.footerfooterfooter.”;行间距:10px;column-gap:10px;}这样会很清晰,分区很多的时候也不会乱。但是要注意一件事:==repeat不适用于grid-template-areas==以上就是css网格布局的全部内容。前端的学习过程感谢B站CodingStartup的Steven,不过他的讲解基本都是粤语和视频,还有很多看的过程只能自己整理笔记。虽然我也是搞程序开发的,但是只知道怎么做,不知道为什么。自己在学习过程中整理的学习笔记,希望对大家有所帮助。