一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情。
系列介绍
经常会被面试官问到这个怎么实现,或者怎么实现xx?
有些功能或者效果没有做过或者实现过,回答不出来,场面一度有些尴尬
于是打算出一个怎么实现系列,来实现xx功能或者xx效果,以此来提升自己的实战效果和能力。
本系列是一个开放系列,我实现的不一定是最好的,欢迎大家交流讨论
场景
面试官:你都用过什么布局?
我:我使用过grid布局
面试官:那你说下栅格布局怎么实现
(思考了一分钟)
我:呃...这个我没实现过
面试官:...
查阅资料
不会实现没有关系,后面马上去查阅相关资料,学习一下怎么实现栅格布局
什么是栅格布局
栅格布局,把容器分为多少行多少列。我们可以控制容器里面的元素可以占据多少行,多少列,这称为栅格布局。css布局里面有grid布局,把容器划分为一个网格,有多少行多少列;同时也可以控制子元素占据多少个格子。利用grid布局的特性,刚好可以实现栅格布局
实现
-
创建一个html文件
-
在body里面创建一个容器,在容器里生成12个子元素
<div class="container"> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div> -
设置容器的样式
.container { width: 800px; height: 600px; display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(3, 1fr); }grid-template-columns控制网格分成多少列,grid-template-rows控制网格分成多少行。
创建的值都是重复的时候,可以使用repeat
1fr,代表每个元素等分
-
设置子元素样式
.item { background-color: orange; }到浏览器查看效果,此时所有子元素都挤到一起了
给容器添加一个css属性就可以解决
.container {
width: 800px;
height: 600px;
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(3, 1fr);
grid-gap: 5px;
}
grid-gap 控制网格元素之间的间隙
此时再到浏览器查看效果,网格布局出来了
-
设置栅格布局
让第二个子元素占据两行两列,设置css样式
.item:nth-child(1) { grid-row: 1/3; grid-column: 2/4; background-color: pink; }grid-row:子元素从第几行开始,到第几行结束
grid-column:子元素从第几列开始,到第几列结束
到浏览器查看效果
#### 小结
至此,栅格布局已经完成,主要是用到grid布局完成