首页 前端知识 10分钟理解CSS3 Grid布局,深入分析

10分钟理解CSS3 Grid布局,深入分析

2024-03-29 15:03:37 前端知识 前端哥 843 554 我要收藏

可以看到,虽然第四行没有内容,但是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; }

section{ grid-area: section; }

aside { grid-area: aside; }

nav { grid-area: nav; }

footer { grid-area: footer; }

效果:

看明白没有?重点在于grid container的 grid-template-areas 属性。我们给每个grid item设置一个grid area,然后在grid container中设置一个grid area模版(grid-template-areas),模版中每行字符串表示一个row,每个area名称表示一个column,完全将几何布局用文字模拟出来,空白的grid item用 . 表示。当然使用grid area要注意语法严谨,像 "header main header main" 这种写法css是无法解析的,用area名称模拟出的结构在二维空间上必须是一个整体,因为每个grid item也是无法分割的。

使用grid area template的优点在实现响应式布局时也是显而易见的,我们只需要针对不同的屏幕尺寸制定不同的grid area template就行了。

5. Justify and Align

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

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

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

前端框架

前端框架太多了,真的学不动了,别慌,其实对于前端的三大马车,Angular、React、Vue 只要把其中一种框架学明白,底层原理实现,其他两个学起来不会很吃力,这也取决于你以后就职的公司要求你会哪一个框架了,当然,会的越多越好,但是往往每个人的时间是有限的,对于自学的学生,或者即将面试找工作的人,当然要选择一门框架深挖原理。

以 Vue 为例,我整理了如下的面试题。

Vue部分截图

无偿领取!(备注:前端)**
[外链图片转存中…(img-NC1stQGe-1710580705854)]

前端框架

前端框架太多了,真的学不动了,别慌,其实对于前端的三大马车,Angular、React、Vue 只要把其中一种框架学明白,底层原理实现,其他两个学起来不会很吃力,这也取决于你以后就职的公司要求你会哪一个框架了,当然,会的越多越好,但是往往每个人的时间是有限的,对于自学的学生,或者即将面试找工作的人,当然要选择一门框架深挖原理。

以 Vue 为例,我整理了如下的面试题。

Vue部分截图

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

转载请注明出处或者链接地址:https://www.qianduange.cn//article/4244.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!