转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。
新logo保留了原本logo里转转熊的轮廓,两个熊耳是两个卫星围绕熊头旋转,是“循环”的意思。中间倾斜的转转首字母“Z”,既像二手质检的印章,又像N——NEW的首字母,代表着全新的二手生活方式。

以上是我们要还原的Logo效果动图,现阶段使用方式主要是gif和lottie
SVG两种方式。因为我们的目的是使用单标签实现所有的功能点,对于一些细节部分有所取舍,并不是百分百还原,也并不代表使用CSS的成本和效果是最好的,仅表达CSS的强大能力。接下来分析我们要核心实现的功能点:
开始动画时中心的大圆以及2个围绕的小圆都有放大的效果
动画开始后2个小圆围绕中心的椭圆旋转
字母 Z 由大变小覆盖在中心的椭圆
字母 Z 出现时中心的椭圆由红色边框圆变成实心红色圆
仔细观察这个字母 Z 并不是普通的字符
基于上述分析接下来开始核心的代码拆解实现,在开始前先定义一些变量方便后续使用:
:root {
/* 主题色 */
--mainColor: #ff483c;
/* 字体颜色 */
--fontColor: #fff;
/* 字体宽度 */
--zWidth: 260px;
/* 中心椭圆宽高比 */
--parentScaleY: 0.9;
/* 子元素抵消比例 */
--childScaleY: calc(1 / var(--parentScaleY))
}
2个小圆旋转动画
如果是围绕一个正圆的旋转那么实现就简单很多了,但是这里是一个椭圆,纯CSS应该怎么做呢?根据小编目前的了解大概有以下几种方式都可以实现,但是对应的效果有所区别:
使用
transform-style: preserve-3d;
开启3D模式,但是对应的小圆在旋转角度存在视角消失的情况,需要额外处理使用
cubic-bezier
贝塞尔曲线执行动画可以达到椭圆曲线的效果,但是存在动画开始停止不可控的情况使用
rotate
0-