首页 前端知识 10分钟理解CSS3 Grid布局

10分钟理解CSS3 Grid布局

2024-05-08 10:05:51 前端知识 前端哥 272 954 我要收藏

max-width: 960px;

margin: 0 auto;

}

#content div{

background: lightgrey;

padding: 30px;

}

#content div:nth-child(even){

background: skyblue;

}

效果:

当我们设置了display: gridgrid-template-columns: 33.3% 33.3% 33.3%#content就被划分成了三行三列的grid,此时#content被称为grid container,而#content的子元素称为grid item。

我们也可以任意改变column的个数和宽度,比如:

#content{

grid-template-columns: 10% 20% 30% 40%;

}

效果:

(2) fr(fraction)

css3中引入了一个新的单位fr(fraction),中文意思为“分数”,用于替代百分比,因为百分比(小数)存在除不尽的情况,用分数表示可以避免多位小数的写法。比如三列等宽的grid可以表示为:

grid-template-columns: repeat(3, 1fr);

(3) repeat

我们也可以用repeat方法来简化column或者row的写法,repeat方法接受两个参数,第一个参数表示重复的次数,第二个参数表示重复的内容。所以,三列等宽的grid我们还可以表示为:

grid-template-columns: repeat``(``3``, 1``fr);

当我们要定义的列数很多时,repeat就会变得非常有用,比如我们要定义一个10列等宽的grid,可以写成repeat(10, 1fr),而不用将1fr重复书写10遍。

2. Row

(1) 设置row

当我们设置column之后,row会因为元素的换行而自动产生,但是我们依然可以设置row的个数和高度。

css:

#content{

display``: grid;

grid-template-columns: repeat``(``3``, 1``fr);

grid-template-rows: repeat``(``4``, 60px``);

max-width``: 960px``;

}

效果:

可以看到,虽然第四行没有内容,但是row确实存在并占据了那部分空间。

(2) minmax

上面的例子中我们给了row一个固定高度,这导致一个问题:如果某个grid item中的内容特别多,受制于固定的高度,部分内容将无法显示,如下图:

为解决这个问题,css提供了minmax函数,让我们可以设置row的最小高度和最大高度,最大高度取auto后便可以让row的高度自适应:

css:

grid-auto-rows: minmax(``60px``, auto``);

// 或者

grid-template-rows: repeat``(``3``, minmax(``60px``, auto``));

效果:

(3) grid gap

如果我们想给行和列之间加上间隔,也有现成的方法:

css:

grid-gap:{

10px``;

}

效果:

![]( )

3. Grid Line

以上所有例子中,grid中的每个grid item都是按默认顺序排列的。如果我们想重新布局改变grid item的位置或大小呢?为此引入了grid lines的概念,所谓的grid lines就是将grid若干等分后的分割线,如下图中横向和纵向序号1~8的线即为grid lines:

<``img src="[http://lc-jOYHMCEn.cn-n1.lcfi...;/]( )>

通过定义grid item的起始和结束的grid line我们就可以实现对grid item位置和覆盖面积的控制。一个简单的例子:

html:

1

css:

#content {

display: grid;

grid-template-columns: repeat(8, 100px);

grid-template-rows: repeat(8, 100px);

grid-gap: 10px;

}

.one {

grid-column-start: 3;

grid-column-end: 6;

grid-row-start: 3;

grid-row-end: 6;

}

效果:

通过设置grid-column-start/end grid-row-start/end 相当于给grid item设置起始坐标和结束坐标,上面的css也可以简写为:

.one {

grid-column: 3 / 6;

grid-row: 3 / 6;

}

// 或者

.one {

grid-area: 3 / 3 / 6 / 6;

}

如果grid item的起始grid line为默认,我们可以只设置它的跨度(span):

.one{

grid-column: span 3;

grid-row: span 3;

}

4. Grid Area Template

除了通过grid lines进行布局,css3提供了一种更牛逼的布局方式:grid area template。与其用语言解释什么是grid area template,不如直接看代码:

html:

Header
Main
Section
Aside
Footer

css:

body {

color: #fff;

text-align: center;

}

#content {

display: grid;

grid-template-columns: repeat(4, 1fr);

grid-auto-rows: minmax(100px, auto);

max-width: 960px;

margin: 0 auto;

grid-gap: 10px;

grid-template-areas:

“header header header header”

“aside . main main”

“nav . main main”

“section section section section”

“section section section section”

“footer footer footer footer”;

}

#content>* {

background: #3bbced;

padding: 30px;

}

header { grid-area: header; }

main { grid-area: main; }
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+点击【学习资料】即可领取!

[外链图片转存中…(img-5ZqwJfK5-1712856446627)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+点击【学习资料】即可领取!

[外链图片转存中…(img-T7eAF43G-1712856446627)]

[外链图片转存中…(img-MLlRjtwF-1712856446627)]

转载请注明出处或者链接地址:https://www.qianduange.cn//article/7510.html
标签
评论
发布的文章

在C#中使用JSON

2024-11-04 10:11:05

JSON串

2024-11-04 10:11:57

JSON教程(非常详细)

2024-05-08 10:05:36

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!