学生节抽奖界面:后日谈

偶然接锅,开始干活

阿伟来寝室找我的时候,我还在写计组lab5。我看到ddl附近还有计组lab4lab5的ddl、媒体计算滤波小作业的ddl、量子力学第三章作业ddl、材科实验答辩ddl、量子力学期中,感到有点害怕。但由于好奇心,以及想要检验一下暑假自学前端三件套的成果,我打算先看看旧模板代码的情况再作决定。

我看到往年代码的结构还算清晰,而且代码量不是很大,除了css样式表行数达到800+以外。阿伟说wj忙ddl没空,估计去外面找人也麻烦,我就把这个锅接下来了。

理解代码结构

接完锅,我先用两天把lab5写完,然后就开始看代码结构。网页的js脚本用了jQuery框架,是我之前没学过的(之前只看了一些js的基础语法),所以面向搜索引擎先学了一手。但是css这里就比较费劲了,css3的3D效果我之前没有接触过(不得不说还真挺强大的),而且800多行的样式表层叠嵌套,还有很多冗余的代码(原框架预留,但往年版本的抽奖页面没有应用的)。

开始写

随机数生成

由于这次的抽奖要求变了,抽奖券上的信息是数字0~9和8种卡牌颜色以及8种键合方式,所以我打算生成0~779且十位不超过7的三位数,再用这个数经过处理来生成抽奖结果。

3d效果

模仿了原本的旋转效果写了竖转,还通过rotateZ(45deg)的暴力手段做出了甲方要求的斜转xs。场景的切换就通过容器的上下移动translateY,再靠transition形成的动画,把不要的容器上下移个2500px就完事。

爆写阶段

写到后面感觉在乱写,时间有点紧,也不管什么函数封装复用的了,只要不出bug就行,出了bug打个补丁,看着没事就行。写的速度飞快,就是不知道会不会在什么时候来一个bug。

代码乱七八糟的像*山,不过也不指望会有人再来维护它了,只要能跑就行(代码和人总得有一个能跑.jpg)人反正是跑不掉了。

收官debug

周日半夜2点,我把调完的代码打包发给cx,希望不会出什么问题。cx两点半回复说没啥问题(真的肝)。不过bug这种东西,不出意外肯定是要出意外的。

结果bug就在周日下午准时找上门来。我接到aw的消息说键合闪动动画出了点问题,只有一团黑白影子。兼容性这个东西就很难办,也不知道为啥大礼堂只能用mac,safari和chrome(edge)还是不一样的,就算我本地拿edge和firefox都测过也不知道safari会出什么问题。

我看完这个黑白影,估计是背景图片大小没设置好。研究了半天才打开safari的元素审查(感谢百度),一看发现在动画里已经把background-size设置成contain了。一直不知道是哪里出了问题,我就看着代码开始怀疑人生。怀疑半天也没用,干脆就在元素审查里面瞎改。改了一下还真改出来了:在动画外面加了一个contain莫名其妙就可以了。估计是safari的可动画化属性和edge/firefox不一样。

(顺带一提,我在我pad上的safari也没试出过这种问题)

来点感想

大一学生节是观众,大二学生节是演员,大三学生节是班剧里的酱油。大二大三都只是忙完自己的锅就溜了,毕竟第二天还有考试。大四这次把名字写在了工作人员列表里,完整看完了自己作为工作人员(虽然只负责了一个小小的抽奖,比忙里忙外的其它人水多了)的一届学生节。

听说这是最后一届了,随着招生计划的调整,这一届没有新生了。没有新生,没有招新,学生会或许就要解散了吧。大四了,明年就要毕业,九字班也要从材院离开了。能在本科的最后一年,能在最后一届学生节上献上这一份凝结着一周心力的代码作为last dance,这一周的努力绝对值得。

代码仓库及彩蛋

代码仓库github.com/Weslie0803/hack-lajidog/
网页预览weslie0803.github.io/hack-lajidog/

彩蛋:css中的.cubeShow_114514和html里的德语数字,都是在写得精神时常时候的发病产物罢了。