web

一个FLEX的game

有趣的小游戏

Posted by Lorry on January 15, 2019

文章字数:1729, 阅读全文大约需要:4 分钟

周末玩儿了一个小游戏, 关于flex弹性布局的, 加上之前面试的时候被问到过相关的问题, 所以决定单独写一篇文章来总结一下, 需要的朋友直接点链接可以免费玩(我玩儿的时候免费, 据说之后会收费).

整体的剧情就是你作为一个冒险者, 拿着一把弓箭, 去射僵尸, 僵尸的排布不一, 且还会动态变化(弹性布局), 有一个mentor指导你, 会把flex的技巧都覆盖到, 而且很直观, 所敲即所得. 还是比较有意思滴~

友情提醒: 需翻墙, 全英文, 当然, 可跳过剧情, 直接撸!

总体来说flex是一个相对的概念, 需要在父元素上进行设置.

.Parent{
  display: flex
}

只需这一个设置便可以实现flex布局了, 只是所有剩下的参数都是默认的, 那么默认的参数都是什么呢?

  • flex-direction: row
  • flex-wrap: nowrap
  • flex-flow: flex-diretion flex-wrap
  • justify-content: flex-start
  • align-items: flex-start
  • align-content: flex-start

以上是所有父元素的设置属性, 子元素有哪些呢?

  • align-self, 默认跟父元素的align-items一致
  • flex 这一个属性包含了三个, 如果写了flex, 那么默认值就是0 1 auto, 也是 initial 设置的对应值, 还有剩余两个, auto 对应1 1 auto, none 对应 0 0 auto
    • flex-grow
    • flex-shrink
    • flex-basis
    • 注意, 如果使用的是flex, 没有写flex-basis会默认为0, 这样导致的后果是在shrink的时候会缩短到0.
    • 注意, 如果是设置了双值, 其中一个带有单位的话即为flex-basis, 前一个值会被识别为flex-shrink. 比如 flex: 1 300px; 表示flex-shrink: 1; flex-basis: 300px;
    • 如果不设置flex, 默认为0 1 auto;
  • min-width, max-width, min-height, max-height这个会限制flex-shrink和flex-grow的大小.
  • order 表示子元素的顺序, 从大到小, 从flex-start到flex-end排列, 可为负数.

好了, 属性基本上就是那么多.

属性值再说一下.

  • flex-direction
    • row
    • row-reverse
    • column
    • column-reverse
  • flex-start, 根据direction的顺序为: 左, 右, 上, 下
  • flex-end, 根据direction的顺序为: 右, 左, 下, 上
  • flex-wrap
    • wrap
    • nowrap
    • wrap-reverse
      • 说一下wrap-reverse, 是将下一行按照flex-direction的反过来, 比如flex-direction为row, 那么正常的wrap是从上到下, 而reverse了就是从下到上了.
  • justify-content, align-items, align-content, align-self都可应用:
    • 位置类属性
      • flex-start, start
      • flex-end, end
      • center
    • 分布类属性
      • space-around
      • space-between
      • space-evenly
      • stretch