字节不给大伙发月饼?🎑那我亲自给大伙发!🥮人人都有!

简介: 字节不给大伙发月饼?🎑那我亲自给大伙发!🥮人人都有!

☀️ 前言


  • 本来最近忙着复习面试题,再加上想要完善自己的开源项目确实是没有什么时间写文章。
  • ‘‘叮叮’’,在我枯燥乏味的刷题的时候弹出一条信息:

  • Troy老哥来催更了,那好吧,就当是在刷题的过程中增加多点乐趣吧👌。
  • 于是我就想啊想啊怎样才能出一个跟中秋有关的文章呢?前有嫦娥三心哥,后有中秋献礼寒草哥,再有掘金可视化双子星之一fly哥的3d月球环绕,再看到活动页面的获奖规则,拿奖是不可能拿奖了,蹭个杯子周边可能还行🏃。突然看到之前的沸点活动是有机会得到字节跳动中秋礼盒,我寻思着,我得不到就不能做一个自己看看吗?
  • ok!!Let‘s go让我们来做一个字节跳动中秋礼盒,字节不给大伙发月饼?那我亲自给大伙发!人人都有!!!(标题出自三心哥🧖‍♂️)


🎑 可笑又滑稽的设计之路


  • 道理我都懂,可是我没有礼盒怎么做出来呀??!!🤷‍♂️能提供帮助的只有活动页的这张图片,剩下的大多只能靠我自己的想像了。

准备材料

  • 首先我们需要准备一些礼盒的图片和背景,要做一个简单版的字节礼盒需要的大致有以下三点:
  • 月饼礼盒封面贴图
  • 第二层月饼贴图
  • 字节贺卡贴图
  • 有的同学就会问了:啊?小卢,你没有收到字节的中秋月饼礼盒你是怎么来的图片呀?😅
  • 这个问题问得好啊,我一开始在准备制作的时候也想了很久,我自己也不知道从哪获取这些图片。
  • 但是聪明的我找到某红书上面有一些博主分享的字节礼盒开箱炫耀视频,在他们分享的照片上,我用手机对着电脑一张一张的扫描并保存到备忘录里面......😥

  • 就这样勉强凑齐第一层和第二层的贴图,还剩下一个蓝色贺卡。


请求帮助

  • 在我看到上面那张图片里面的贺卡的时候我一直以为是双面折叠打开的,奈何我无法找到清晰地封面图和里面的内容,我就在热点求助了。

  • 很不错呀,过了6个小时没有一个人回复我👍,正在苦恼的时候Troy老哥发了我一张图:

  • 我才发现原来这张贺卡不仅仅只是一张贺卡而已,该主题的月饼礼盒全部绘画都是益童儿童所绘画的,这些儿童们因为家庭的原因可能得不到我们习以为常的童年陪伴,而字节跳动也为此发起了公益项目
  • 是我格局小了,我没想到其中会有这样的故事,为字节点赞!!👍
  • 那么话说回来,这样的贺卡该怎么制作呢?我找遍了全网也就只有这张图片是最清楚的,而那些挡住的画面我也不可能脑补出来,如果我自己乱来那就相当于玷污了这张充满故事的卡片,我只能换一种方式来呈现这个卡片了。
  • 我们可以保留字节的logo和英文,里面的内容就我们自己发挥即可,主要还是体现中秋节的氛围。而又一个问题来了,从上图可以看到字节的logo左上方也是被挡住的,而背景色是各种颜色组装而成,如果想要这样一张图片我能做到吗?
  • 是的我不能❌!我只能求助我家那位设计大人👑了。

  • 为了这个封面最后还请了她吃雪糕才答应我,不过一切都准备就绪了,我们可以开始Codeing了。


💻 Talk is cheap. Show me the code!


月饼礼盒

  • 我们观察图片中的月饼礼盒不难发现,其实也就是一些立体的长方体堆砌而成,而当我们把它们放在同一个平面的时候会有一个层级的概念,也就是谁在上谁在下,那我们就了解清楚了。
  • 一个主容器
  • 第二层的月饼层容器
  • 最上面的封面层


主容器

  • 熟悉css的小伙伴可能很了解了,制作一个3d立体长方体无非就是通过transform-style: preserve-3d将一个容器设置为3d,将子元素都设置绝对定位并分别给予不同的角度拼接起来即可。
<!-- byteDance.html-->
<ul class="outerPack">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>
复制代码
  • 这里就拿外层的长方体来举例,接下来的其他长方体大致都差不多就是位置跟角度需要调整就不放源码了,具体可以看到文末的源码。
/* moonCake.css */
.outerPack{
    width: 200px;
    height: 200px;
    list-style: none;
    margin: 0 auto;
    padding: 0;
    position: relative;
    /* 将子元素转为3D */
    transform-style: preserve-3d; 
}
.outerPack{
    /* 让外包装整体向下转45度,向右转45度 */
    transform: rotateX(-45deg) rotateY(225deg); 
    animation-fill-mode:forwards;
}
.outerPack li {
    width: 200px;
    height: 100px;
    text-align: center;
    line-height: 200px;
    position: absolute; /*让所有的子元素都重叠在一起*/
    box-sizing: border-box;
    border: 1px solid #2b2213;
    left: 0;
    right: 0;
}
/* 背面 */
.outerPack li:nth-child(1) {
    height: 100px;
    transform: translateZ(100px) translateY(-50px); 
    background-size: cover;
}
/* 正面 */
.outerPack li:nth-child(2) {
    height: 100px;
    transform: translateZ(-100px)translateY(-50px);
    background-size: cover;
    border: 1px solid #55545c;
}
/*右面*/
.outerPack li:nth-child(3) {
    height: 100px;
    transform: rotateY(-90deg) translateZ(100px) translateY(-50px);
    background-size: cover;
}
/*左面*/
.outerPack li:nth-child(4) {
    height: 100px;
    transform: rotateY(90deg) translateZ(100px) translateY(-50px);
    background-size: cover;
}
/* 上面 */
.outerPack li:nth-child(5) {
    height: 200px;
    transform: rotateX(-90deg) translateZ(-151px);
    background-size: cover;
    border: 1px solid #55545c;
    padding: 10px;
}
/*下面*/
.outerPack li:nth-child(6) {
    height: 200px;
    transform: rotateX(-90deg) translateZ(-50px); 
    background-size: cover;
}
  • 很轻松的一个长方体就制作完成了,对了顺便说一句,如果自己拿捏不准角度的话可以让它转动起来比较容易观察。
/* moonCake.css */
@keyframes rotate {
    0% { transform:rotateX(-45deg) rotateY(225deg); }
    50% { transform:rotateX(-45deg) rotateY(105deg); }
    100% { transform:rotateX(-45deg) rotateY(225deg); }
}



第二层的月饼层容器

  • 这样我们的外层就做好了,为什么要把他跟第二层拆分开来呢?那是因为我们要分别对每层的元素进行一个动画效果所以需要分的很清楚。
  • 第二层的容器也是一样的,做一个一半的主容器进行组装即可,大部分代码都是差不多的,有兴趣的小伙伴可以到文末查看源码,值得注意的是我们的层级关系需要z-index: 2让第二层部分是在我们的视线上方的。
  • 我们顺便给第二层做一个拉出来的特效。
/* moonCake.css */
.moveOut{
    animation: moveOut 1s  linear!important;
    animation-fill-mode:forwards!important;
}
@keyframes moveOut{
    0%{ transform: rotateX(-45deg) rotateY(225deg) translateY(280px); }
    50%{ transform: rotateX(-45deg) rotateY(225deg) translateY(280px) translateZ(-100px); }
    100%{ transform: rotateX(-45deg) rotateY(225deg) translateY(280px) translateZ(-200px); }
}
  • 怎么实现的其实也很简单,通过js配合点击事件添加class进行动画拉出即可。


最上面的封面层

  • 这个封面就更简单的,只需要一个长方形调整角度即可,由于我的贴图素材原因这里采用了img添加图片,如果是贴图完美的话可以直接用背景来实现封面图,具体的代码太简单了也不展示了,但也是值得注意的是层级需要设为z-index:3
<!-- byteDance.html-->
<ul class="top" id="top">
    <li>
        <img src="./images/byte.jpg" alt="">
    </li>
</ul>
复制代码


细节处理

  • 这个盒子其实处理的差不多了,剩下的就是更改背景色,添加边框,对于第二层的月饼,一开始也打算把所有月饼做出来的,方法也是一样制作长方体只是比较繁琐罢了,由于时间原因和贴图的不合适我直接用两个图片代替了(就是懒)。
  • 那我们最后来看看成果吧~感觉还可以


字节卡片

  • 这个卡片的设计我一直都认为是翻页式设计,于是我画了张图给大家理解一下,emm...画的不太好大家凑合看吧。

  • 这种就算是比较简单了,一个容器里面有左右两页,一开始是重叠在一起的,当我们交互的时候会将左边的打开,其实也就是增加一个旋转角度而已,大部分都是基础的样式,我把主要代码贴一下吧。
<!-- byteDance.html-->
<div class="card" id="card">
    <div class="imgBox" id="imgBox">
        <!-- 左侧 -->
    </div>
    <div class="details">
        <!-- 右侧内容 -->
    </div>
</div>
复制代码
  • 这里旋转的时候需要注意,因为我们需要卡片往左翻转,也就是以y轴为中心轴,所以我们要给他的基点设置为left
  • 为了让卡片更加立体,我们可以使用perspective来改变我们观看立体图形的位置,让这个3d效果更加明显,关键代码如下:
/* card.css */
.card{
   ...
   z-index: 4;
   transform-style:preserve-3d;
   perspective:1700px;
   ...
}
.card .imgBox{
  width:100%;
  height:100%;
  position:relative;
  transform-origin:left;
  background-color: #2d6da7;
  background-size:100% 100%;  
  transition:1s;
}
.card:hover .imgBox{
  transform:rotatey(-135deg);
}
复制代码
  • 为了效果好点我还加上了阴影的感觉,我们来看看基础的卡片如何吧。

  • 感觉效果还是不错的,接下来只需要替换里面的内容即可,拿出我家设计大人帮忙p的图片和网上的素材进行组装。
  • 为了动态改变左侧页面的背景,我们需要在鼠标移入移出的时候使用js动态更换背景图片。

  • 感觉非常不错!!!!要的就是这个效果,换上了图片完全不是一个level,接下来只需要添加小卢想给大家的中秋贺语就完成啦。

最终效果

网络异常,图片无法展示
|


👋 写在最后


  • 首先还是很感谢大家看到这里,这次的文章就分享到这里,祝大家中秋节快乐!!
  • 以上就是我送给大家的 “字节跳动中秋月饼礼盒” ,希望大家喜欢,如果可以请务必给我一个免费的点赞和评论!!
  • 如果您觉得这篇文章有帮助到您的的话不妨🍉关注+点赞+收藏+评论+转发🍉支持一下哟~~😛您的支持就是我更新的最大动力。


相关文章
|
6月前
|
前端开发 JavaScript 程序员
程序员教你用代码制作圣诞树,正好圣诞节拿去送给女神给她个惊喜
使用HTML、CSS和JavaScript实现了一个圣诞树效果,包括一个闪烁的圣诞树和一个动态的光斑。代码包含一个&lt;div&gt;元素作为遮罩,一个&lt;canvas&gt;元素绘制星星动画,以及一个SVG元素绘制圣诞树。页面还包含一个提示用户先点赞再观看的提示。此效果适用于任何浏览器,推荐使用谷歌浏览器。提供了一段HTML代码,可以直接复制粘贴到文件中并以.html格式打开查看效果。
70 0
|
数据采集 存储 调度
文章马伊琍离婚后微博评论太多了...用代码来解决吧
文章马伊琍离婚后微博评论太多了...用代码来解决吧
|
Python
十行代码帮你迅速回应大家的祝福,你可以安心抢红包了~
十行代码帮你迅速回应大家的祝福,你可以安心抢红包了~
84 0
|
小程序 Java 机器人
使用Java实现发送微信消息(附源码)_此程序在手再也不怕对象跟你闹了
此程序在手再也不怕女朋友跟你闹了!!!!自从有了女朋友比如:早安、晚安之类的问候语可不能断,但是也难免有时候会忘记那么该咋么办呢?很简单写一个程序么,近日闲来无趣想着用Java写一个自动发送微信的小程序,实现定时给指定的好友发送指定的消息,这不就很Nice了?本文主要包括实现的思路、代码的实现、打包为jar快捷方式!
153 0
|
JSON 应用服务中间件 数据格式
杨洋撒撒一大片,Controller接收中文不再“不正经”,乱码问题这样解决,你信或不信
杨洋撒撒一大片,Controller接收中文不再“不正经”,乱码问题这样解决,你信或不信
118 0
杨洋撒撒一大片,Controller接收中文不再“不正经”,乱码问题这样解决,你信或不信
|
人工智能 Java 程序员
我见众生皆无意,唯有见你动了情(表白日记分享篇)
​                                        💕 我见众生皆无意,唯有见你动了情 💕                                                            ​ 目录                                                                                 💕 我见众生皆无意,唯有见你动了情 💕 0  写在前面 1.利用ASCII码使数字转化为中文 (GB_2312 字符集) (1)两个特定的ASCI
154 0
我见众生皆无意,唯有见你动了情(表白日记分享篇)
|
程序员
发送爱心-程序员的一点小浪漫
发送爱心-程序员的一点小浪漫
137 0
发送爱心-程序员的一点小浪漫
|
存储 Java 编译器
学妹一反常态主动联系我,我要不要答应帮她?
之前在学校举办的活动上,认识了一个学妹。我死磨硬泡终于加了她的微信,经常给她发微信。 可是她总是对我爱答不理的,我心里总有一天让你高攀不起,后来就很少联系了。今天突然主动联系我:
353 0
学妹一反常态主动联系我,我要不要答应帮她?
|
Java 程序员 双11
双11解码,这份程序员的浪漫请查收
一分钟激情下单,背后是陈酿已久的攻略研究;双11上云狂欢节,这份程序员的友情包裹已送达。
双11解码,这份程序员的浪漫请查收
|
机器学习/深度学习 存储 人工智能
叮,您有一份阿里云教师节礼物待查收!
教师节即将到来,阿里云天池为了回馈辛勤的老师,特此举行了阿里云教师节感恩活动,为老师准备了一份AI教学大礼包。
1990 0
叮,您有一份阿里云教师节礼物待查收!