黑马程序员技术交流社区

标题: 【上海校区】工程师竟然沉迷上了种胡萝卜——CSS Grid 28关... [打印本页]

作者: 不二晨    时间: 2018-8-13 09:25
标题: 【上海校区】工程师竟然沉迷上了种胡萝卜——CSS Grid 28关...
游戏概况Grid Garden1是Codepip2创建的一款寓教于乐的在线网页游戏,游戏共有28关。玩家可以通过过关的方式掌握CSS最新标准CSS Grid。
游戏的设定是一个花园种植胡萝卜的场景,玩家通过在代码区填写CSS Grid的相关代码完成除草、浇水等任务。通过玩家的辛勤劳作,一定能够吃上纯天然、无公害的胡萝卜。


打开游戏,我们发现,游戏存在多语言版。在左侧底部就可以切换各种语言。事实上,笔者对自己的英语水平是非常有信心的,所以毫不犹豫的切换到——简体中文版。
除了代码区和任务区,玩家可以在选关区选择28关的任意一关来挑战;当玩家在代码区敲入代码时候,右侧的任务和结果展示区会实时根据代码展现结果。如果代码完成了任务,则点击提交按钮,会进入下一关,如果玩家通关的话,则展示通关特效;如果代码不能完成任务,提交按钮会灰掉。如果玩家硬来,代码区会有一个错误特效供玩家欣赏:-(
除了游戏本身,游戏的目的是加深玩家对CSS Grid的理解。说到CSS Grid,这可是一种强大的Web页面布局方式。恰当的使用CSS Grid,可以高效地解决很多常见的布局问题,而且优雅、简洁。完整的CSS Grid属性参考,可查阅这里3。由于CSS Grid标准尚属CR(CR,Candidate Recommendation)阶段,如果你是最新标准的爱好者,还可以跟进CSS工作组关于CSS Grid的最新进展4。
尽管如此,现在主流浏览器都已经有了不同程度的支持,支持度如下图所示:


说到这里,各位都迫不及待地想要在游戏中一试身手了吧,那么话不多说,Let's Go。
过关实录跟网格项玩耍也许各位玩家完全没有接触过CSS Grid,刚刚进来可能会有些不知所措。我们姑且认为前面几关是教学关。一般游戏的教学关都会有一个人物在屏幕上蹦来蹦去外加叨逼叨来普及各种概念和操作。那么笔者现在就来饰演一下这个人物。

5. 网格轨道是指相邻的网格线之间的部分,下图箭头所指是一个网格轨道。
掌握了这些知识我们就可以开始过关之旅了。
第1关到第11关设置主要是针对网格项属性grid-column-start和grid-column-end展开的,相当的简单,相信玩家一定可以很快的完成。


下面简单总结一下第1-11关:
上面可能出错的地方在于,设置数值时候,是确定网格线的顺序而非网格轨道的顺序,尤其是负数时候,而span后面跟着的数字是网格轨道的个数。只要牢记这点就很容易。
第12关与第13关,主要展示了CSS Grid在行row上设置的能力,二维空间的设置是Grid布局比flex布局拓展的一个方面。
这两关也比较简单。


从第14关开始,我们开始综合运用行与列的属性。第14和15关的过关,需要灵活利用上述关键字。规范中还可以给轨道线命名,这里暂时没有遇到,我们先不使用“命名”这个利器。


第16关的意思是可以行列的简写方式,依然可以使用grid-area属性再次化简,grid-area接收4个由/隔开的值,依次为:grid-row-start, grid-column-start, grid-row-end, grid-column-end。


第17关告诉我们,重迭覆盖是不影响计算机制的。


依然很简单,过。
针对17关的重叠,第18-19关引入了属性关键字:order,order类似于z-index,表明叠放顺序,数值越大,越在上。允许负数。
很简单是不是。


跟网格容器玩耍上面我们对网格项的“一波操作猛如虎”,下面我们再来看一看,对于网格容器的操作,能不能“横扫千军我做主”。
第20关到第22关主要针对网格容器的属性grid-template-columns和grid-template-rows展开的。


下面简单总结一下第20-22关:
第23-25关,主要说明了关键字fr的使用。
下面总结一下第23-25关:


第26关介绍grid-template-rows与前面的grid-template-columns语法类似。留给玩家尝试。


第27关介绍了grid-template-columns与grid-template-rows的简写方式grid-template,写法是:grid-template-rows / grid-template-columns


经历了百转千回,我们终于来到了关底,我们来看看大BOSS的尊容:


WTF?只能写一行代码么?仔细想想:grid-template最简洁,格式是/隔开的先行后列。先解决行:需要把50px先分出去,后面100%给到花草。再解决列,列的场景是典型的fr使用场景,杂草占空间的1/5,胡萝卜占4/5。
于是代码是:grid-template: 1fr 50px/1fr 4fr;


Bingo!恭喜你,通关成功!


结语是的,我们已经最快速度领略了CSS Grid的风采。然而,对于整个的CSS Grid我们仅仅做了最常用的展示,更多的好玩的做法,还要等待大家的发掘,以及标准的演进。


【转载】链接:https://juejin.im/post/5b70c7c7e51d45666e2c6ade




作者: 小影姐姐    时间: 2018-8-13 10:33

作者: 梦缠绕的时候    时间: 2018-8-16 16:15

作者: 不二晨    时间: 2018-8-16 17:19
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2