Flex游戏学习Flex布局

本文为游玩Play Flex时顺手写的,目的为省去以后想回顾下再玩游戏的时间.

游戏地址:Games | Coding Fantasy

目录

故事背景:

概念引入:

游戏介绍:

关卡

Justify-content

Align-items

Flex-direction

Order

Align-self

Flex-wrap & align-content

Level 24 决战


故事背景:

主角团人物介绍:

   Arthur     "Marilyn  

概念引入:

CSS中  display:flex;    的元素我们称之为容器;

容器中的块,我们称为项目 item;

我们放置的块,如div, 默认都是横向排列的,我们称这个方向为 主轴
对应的主轴交叉方向的轴就是侧轴;  

通过  flex-direction:row / column / row-reverse / column-reverse 可以调整主轴的方向
 

接下来游戏需要什么代码,我们再拓展代码介绍

justify-content 则是 调整主轴方向内容 布局的代码;

游戏介绍:

该游戏的  #field{ }   为 主角所在地图这个大盒子的id,通过在里边写css代码,来控制主角和其队友在地图中的位置,将主角和其队友等移动到游戏要求的位置即算成功.

关卡

前边几关需要用到的代码:

Justify-content

justify-content:flex-start(默认) / center / flex-end / space-between / space-around / space-evenly;

Notice:

  • 当容器中主轴方向上存在剩余空间时, 该属性才有意义


Level 1  亚瑟王状态不满,需要吃些许苹果充饥回血  

justify-content:center;

Level 2

justify-content:felx-end;

Level 3 亚瑟王获得伙伴一枚

justify-content:space-between;     参考word的两端对齐

Level 4

justify-content:space-around;    类似于这个骑士和法师左右有同样的 marging. 且分配完后恰好他俩会平分这个容器的宽度. 多个的情况下也类似.

Level 5

justify-content:space-evenly;    间距绝对的公平!


接下来要用到的代码:

Align-items

align-items: flex-start(默认) / flex-end / center / baseline /stretch  (标灰的游戏没用,但我会介绍)

Notice:

  • 该属性仅适用于: 单行容器
  • 当容器中交叉轴方向上存在剩余空间时, 该属性才有意义


Level 6  亚瑟王又添一干将

align-items:center;

Level 7

align-items:flex-end;

Level 8   

(混合使用justify-content和align-items)

align-items:center;

justify-items:center;

Level 9

分析:主轴方向内容呈现 space-between 分布,   侧轴 item 位于底部,则对应代码 align-items:flex-end;

justify-content:space-between;

align-items:flex-end;


代码引入:

Flex-direction

flex-direction:row(默认)  → / column  ↓/ row-reverse  ← /column-reverse  ↑

作用:改变主轴的方向;

Tip:改变主轴的方向,那么显示的顺序可能会发生变化,具体可看游戏;


Level 10

flex-direction:column;

Level 11

 flex-direction:row-reverse; 

Level 12

解释:首先将主轴方向切换为竖轴方向 ;其次要将内容向下移动,这个移动出现在主轴方向;且仅仅是平移;所以使用 justify-content:flex-end; 

Level 13

主角要打大个,头孢要上红蜥蜴; 主轴方向仍然为row,但是要反向;故flex-direction:row-reverse;

内容在主轴方向和侧轴方向都居中; justify-content:center; align-items:center;

 


代码引入:

Order

order 属性规定弹性项目相对于同一容器内其余弹性项目的顺序。 注释: 如果元素不是弹性项目,则 order 属性无效。


Level 14

骑士刚才大战BOOS一场,吃点肉,需要到2号位

故在骑士的 id 下编写 CSS代码 order:2;

骑士现在到达2号位,吃到肉肉啦.


代码引入:

Align-self

align-self 属性定义flex子项单独在侧轴(纵轴)方向上的对齐方式。用法同align-items

注意:align-self 属性可重写灵活容器的 align-items 属性。


Level 15

法师打窟窿战士:

在法师的专属id里写CSS代码 : align-self:center;

Level 16

此处游戏要求使用order+align-self,此处给出两个解法;

order+align-self   order:1; align-self:flex-end; (Game仅能用这个)

flex-direction+justify-content: flex-direction:column; justify-content:flex-end;

Level 17

主角打大BOOS, 法师打吸血鬼,此处代码如下:

逆向翻转主角团: flex-direction:column-reverse;

将主角团在主轴方向平移到另一边: justify-content:flex-end;

将主角团沿着侧轴方向移动到中间位置:align-items:center;

Level 18

主角打大BOOS

在主角id下写如下CSS代码: 

order:2;

align-self:center; 


代码引入:

Flex-wrap & align-content

  • flex-wrap:nowrap (默认) / wrap / wrap-reverse 

     CSS 的 flex-wrap 属性指定 flex 元素单行显示还是多行显示。如果允许换行,这个属性允许你控制行的堆叠方向。

  • align-content:normal(默认) / center /space-between /space-around

        CSS 的 align-content 属性设置了浏览器如何沿着弹性盒子布局的纵轴和网格布局的主轴在内容项之间和周围分配空间。

        align-content - CSS(层叠样式表) | MDN (mozilla.org)

我对align-content的理解是:将侧轴方向下每行的(沿着主轴方向)一行看作一个处理单元;然后使用方法同justify-content


Level 19 >OvO< 噢耶,找回金币了,快将金币装入宝箱吧

flex-wrap:wrap;

Level 20

我对align-content的理解是:将侧轴方向下每行的(沿着主轴方向)一行看作一个处理单元;然后使用方法同justify-content

如此处的金币 :    两行在中间居中,可以看成两个元素在侧轴方向居中显示;

align-content:center;

Level 21

金币需要在底部,且主轴方向的内容居中显示;

代码:

align-content:flex-end;

justify-content:center;

Level 22

 如图,可以看到三个怪人之间竖向的距离是   space-around 布局   且位于最右边

故代码如下:

flex-direction:column-reverse;

justify-content:place-around;

align-items:flex-end;

Level 23

 看怪物和宝箱的排列;  竖向排列且主角要干的BOOS在底下,因此主轴方向为  column-reverse

此外要折行显示,且主角所在列在右边那一列:故折行代码为 flex-wrap:wrap-reverse;

看到三宝箱那一列位于主轴方向的中间:故 justify-content:center;

侧轴看(横向看) 这两列位于侧轴方向的中心位置: 故 align-content:center;

Level 24 决战

主角的最后一战还是交给主角去走吧!

文章参考资料来源:

flex布局(主轴方向 、主轴项目对齐方式 、交叉轴项目对齐 、项目顺序 、项目独立对齐方向 ) - 前端 - php中文网博客https://www.php.cn/blog/detail/21325.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值