通关小游戏巩固flexbox基础

177 阅读5分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

昨天好好梳理了下flexbox的知识点,赶紧找找题目练习。 找到一个在线小游戏,可以用于巩固flexbox基础。 记录下通关过程,同时再做下小结。 算是复习了。

游戏背景

游戏地址:flexboxfroggy.com/

游戏玩法:通过修改flexbox的属性值,使青蛙移动到与其同色的荷叶上。

如果成功,红色按钮next会被激活,此时可以挑战下一关。

游戏一共24关。

游戏挺简单的,能巩固对几个基础属性的理解。

比较可惜的是,没有flex-shrink,flex-basis,flex-grow的相关练习。

下面是24个关卡的通关记录。

1/24

题目:

解析:默认按行排列,使用justify-content确定排布起始位置。

解法:

2/24

题目:

解析:默认按行排列,使用justify-content确定排布起始位置。

解法:

3/24

题目:

解析:

解析:默认按行排列,使用justify-content确定排布起始位置。

解法:

4/24

题目:

解析:

默认按行排列,使用justify-content确定排布起始位置。

3,4两题可以帮助区分space-around和space-between。

解法:

5/24

题目:

解析:

默认按行排列,使用justify-content确定排布起始位置。

解法:

6/24

题目:

解析:

flexbox的元素居中排列要怎么做,修改主轴和交叉轴的起始排布位置。

解法:

7/24

题目:

解析:主轴上均匀间隔(首尾不空),交叉轴居于底部。

解法:

8/24

题目:

解析:

主轴上从结束点向起始点排布。

解法:

9/24

题目:

解析:

按列排布

解法:

10/24

题目:

解析:

先顶到行末,再逆序排布。

解法:

11/24

题目:

解析:

先按列排布,再顶到尾部。

解法:

12/24

题目:

解析:

主轴按列逆序排布,同时均匀排布(首尾不占空间)

解法:

13/24

题目:

解析:

主轴(行):逆序,居中,交叉轴(列)置于尾部。

解法:

14/24

题目:

解析:

将黄色蛙排到最后,修改其顺序。放到最后面。值为最大值。

解法:

15/24

题目:

解析:

将红色蛙提到最前面。改变顺序,修改为最小值。默认为0.

解法:

16/24

题目:

解析:

只修改黄色蛙在交叉轴上的排布方式,使之处于尾部。

修改覆盖对所有元素在交叉轴上的配置。使用align-self。

解法:

17/24

题目:

解析:

主轴方向,通过修改黄色蛙的order使之排到行末,交叉轴方向,使之排到底部。

解法:

18/24

题目:

解析:

元素项换行,使之不压缩。

解法:

19/24

题目:

解析:按列换行。先改为按列排布,后选择换行。

解法:

20/24

题目:

解析:

属性简写。flex-flow合并flex-direction和flex-wrap。

解法:

21/24

题目:

解析:主轴溢出,在交叉轴延伸布局,用align-content修改在元素在交叉轴上间距。

在本题里,按行排列,换行后,调整行间距,或者说是整个容器的排布方式。按照在垂直方向从上到下分布。

解法:

22/24

题目:

解析:整体压到底部排列。

解法:

23/24

题目:

解析:改变主轴和交叉轴方向,且逆序排布;同时整体居中排布。

解法:

24/24综合应用

题目:综合利用前面所学的知识,利用所给的属性,自由组合,使青蛙移动到相同颜色的荷叶上。

分析:

最后一题较难,是对前面23题几个属性的综合应用。

另人开心的是,在左侧输入代码时,右侧会实时显示青蛙的位置变化,所以其实也不算太难。

可以看到是按列排布,且有换行,而且顺序都反了。同时整个容器是往水平两边靠,同时换行溢出的元素是居中排布。

解法:

小结

1.注意主轴和交叉轴,主轴确定后,交叉轴为垂直方向,使用flex-direction确定主轴

2.默认情况,元素项不换行,所以如果元素总和超出容器大小,会自动进行缩放,此时可设置flex-wrap,使元素项在交叉轴上进行排布。

3.order可以更改元素相的排布顺序,可手动实现逆序排布,也可单独将某个元素放置到最前面或最末尾。

4.对于某个单独的元素,可单独设置其在交叉轴上的布局方式,即align-self,此时会覆盖align-items属性的值。

5.justify-content配置主轴排布方式,align-items配置交叉轴排布方式。

6.align-content,是当元素相溢出在交叉轴排布时,可设置容器的对齐方式。

7.属性值为space-aroud和space-between的区别在于,spac-between首尾两个元素项会贴边排布,在对应轴上不占用空间。

ps:可以研究下这个游戏是怎么实现的,考虑增加flex-shrink,flex-basis,flex-grow的练习。

通关后,可以看到相关游戏,可以继续玩。

这里可以看到更多游戏:codepip.com/

这里是项目源码地址:github.com/thomaspark/…