本文中只是熟悉基本属性的用法,并完成一组骰子各个面的制作。在下面的内容我不会涉及flexbox一些比较棘手的问题,比如旧版本语法、供应商前缀、浏览器怪癖等:

一、First Face
我们知道,骰子有六个面,每个面的点的个数代表该面的值,第一个面由一个水平垂直居中的点组成。下面来看具体的实现:

CSS Code复制内容到剪贴板
  1.  <section name="01" class="face-01">   
  2.   <span class="dot"></span>   
  3.  </section>   
  4. face-01 {   
  5. display: flex;   
  6. justify-content: center;   
  7. align-items: center;   

关于justify-content和align-items的用法请参考这里justify-content,align-items。使用flexbox,垂直居中两行属性就可以搞定,很easy!

二、Second Face

CSS Code复制内容到剪贴板
  1. .face-02 {   
  2.  display: flex;   
  3.  justify-content: space-between;   
  4. }   
  5. .face-02 .dot:nth-of-type(2) {   
  6.  align-self: flex-end;   
  7. }   
  8.   <section name="02" class="face-02">   
  9.    <span class="dot"></span>   
  10.    <span class="dot"></span>   
  11.   </section>  

这里我们不能使用align-items属性,使用它两个点都会受影响,flexbox提供了一个align-self属性,这个属性可以让我们更方便的控制flex items的各项沿着cross axias方向,设置不同的布局。align-self的用法参考这里align-self。

 

三、Third Face

CSS Code复制内容到剪贴板
  1. .face-03 {   
  2.  display: flex;   
  3.  justify-content: space-between;   
  4. }   
  5. .face-03 .dot:nth-of-type(2) {   
  6.  align-self: center;   
  7. }   
  8. .face-03 .dot:nth-of-type(3) {   
  9.  align-self: flex-end;   
  10. }   
  11. <section name="03" class="face-03">   
  12.  <span class="dot"></span>   
  13.  <span class="dot"></span>   
  14.  <span class="dot"></span>   
  15. </section>  

该face与second face 使用的属性相同,不再解释。

 

四、Fourth Face

CSS Code复制内容到剪贴板
  1. .face-04 {   
  2.  display: flex;   
  3.  justify-content: space-between;   
  4.  flex-direction: column;   
  5. }   
  6. .face-04 .column {   
  7.  display: flex;   
  8.  justify-content: space-between;   
  9. }   
  10. <section name="04" class="face-04">   
  11.   <div class="column">   
  12.     <span class="dot"></span>   
  13.     <span class="dot"></span>   
  14.   </div>   
  15.   <div class="column">   
  16.     <span class="dot"></span>   
  17.     <span class="dot"></span>   
  18.   </div>   
  19. </section>  

本例中使用了flex-direction,从字面意思可以看出,是用来控制flex的方向,即按列还是按行来布局,该属性更详细的用法可以参考这里flex-direction

后面Fifth Face 和 Sixth Face,根据前面的布局思想,就很easy了不再赘述!

写到此,想想配合JS写一个玩骰子的小游戏应该很easy了吧。

 

五、实现1,2,3,4,6,12等份

CSS Code复制内容到剪贴板
  1. .row {   
  2.   display: flex;   
  3.   box-sizing: border-box;   
  4. }   
  5.   
  6. .column {   
  7.   margin: 10px;   
  8.   flex-grow: 1;   
  9.   flex-shrink: 1;   
  10.   flex-basis: 0;   
  11.   box-sizing: border-box;   
  12. }   
  13. <section class="row">   
  14.   <div class="column">One</div>   
  15. </section>   
  16. <section class="row">   
  17.   <div class="column">One Half</div>   
  18.   <div class="column">One Half</div>   
  19. </section>   
  20. <section class="row">   
  21.   <div class="column">One Third</div>   
  22.   <div class="column">One Third</div>   
  23.   <div class="column">One Third</div>   
  24. </section>   
  25. <section class="row">   
  26.   <div class="column">One Fourth</div>   
  27.   <div class="column">One Fourth</div>   
  28.   <div class="column">One Fourth</div>   
  29.   <div class="column">One Fourth</div>   
  30. </section>   
  31. <section class="row">   
  32.   <div class="column">One Sixth</div>   
  33.   <div class="column">One Sixth</div>   
  34.   <div class="column">One Sixth</div>   
  35.   <div class="column">One Sixth</div>   
  36.   <div class="column">One Sixth</div>   
  37.   <div class="column">One Sixth</div>   
  38. </section>   
  39. <section class="row">   
  40.   <div class="column">One Twelve</div>   
  41.   <div class="column">One Twelve</div>   
  42.   <div class="column">One Twelve</div>   
  43.   <div class="column">One Twelve</div>   
  44.   <div class="column">One Twelve</div>   
  45.   <div class="column">One Twelve</div>   
  46.   <div class="column">One Twelve</div>   
  47.   <div class="column">One Twelve</div>   
  48.   <div class="column">One Twelve</div>   
  49.   <div class="column">One Twelve</div>   
  50.   <div class="column">One Twelve</div>   
  51.   <div class="column">One Twelve</div>   
  52. </section>  

CSS3的Flexbox骰子布局的实现及问题讲解

在本例中用到了flex-grow,flex-shrink,flex-basis三个属性。
1. flex-grow:根据需要用来定义伸缩项目的扩展能力。它接受一个不带单位的值做为一个比例。主要用来决定伸缩容器剩余空间按比例应扩展多少空间。
如果所有伸缩项目的“flex-grow”设置了“1”,那么每个伸缩项目将设置为一个大小相等的剩余空间。如果你给其中一个伸缩项目设置了“flex-grow”值为“2”,那么这个伸缩项目所占的剩余空间是其他伸缩项目所占剩余空间的两倍。负值无效。
2. flex-shrink:根据需要用来定义伸缩项目收缩的能力。负值同样无效。
3. flex-basis: 用来设置伸缩基准值,剩余的空间按比率进行伸缩,不支持负值。如果设置为0,围绕内容的额外的空间不会考虑在内。如果设置为auto,额外的空间是基于flex-grow的值分配。

六、实现2-3-7布局

CSS Code复制内容到剪贴板
  1. .row237 .column:first-of-type {   
  2.   flex-grow: 2;   
  3.   flex-basis: 5px;   
  4. }   
  5. .row237 .column:nth-of-type(2) {   
  6.   flex-grow: 3;   
  7.   flex-basis: 18px;   
  8. }   
  9. .row237 .column:nth-of-type(3) {   
  10.   flex-grow: 7;   
  11.   flex-basis: 70.5px;   
  12. }   
  13.   
  14. <section class="row row237">   
  15.   <div class="column">One Half</div>   
  16.   <div class="column">One Third</div>   
  17.   <div class="column">One Seventh</div>   
  18. </section>  

此处各项flex-basis的值的计算,应该有个公式(待解决),如果有这个公式,配合sass,less等预处理语言实现多列自适应布局将会很方便。

广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。