“字节跳动”现今也是如日中天,旗下产品,除头条外,还有短视频平台“抖音”,人气也是非常高,据说拥有亿用户。
今天我们就来研究研究抖音的logo,蹭蹭热度。
效果预览:
主要用css新增属性mix-blend-mode,混合模式来实现。
我们先来看看它的组成,由大写的“J”组成,然后有种颜色,白色、红色、和天蓝色。
ok,我们先来完成一个“J”。根据以往的经验,我们把它拆分成部分。
下面我们来分步骤实现。
<div class="jitter"> <div class="logo"></div> </div>
添加样式
.jitter { position: relative; width: px; margin: px auto; } // 第一部分 .logo { position: absolute; top: ; left: ; width: px; height: px; z-index: ; background: #ff; } // 第二部分 .logo::after { content: ""; position: absolute; width: px; height: px; border: px solid #ff; border-right: px solid transparent; border-top: px solid transparent; border-left: px solid transparent; top: -px; right: -px; border-radius: %; transform: rotate(deg); z-index: -; } // 第三部分 .logo::before { content: ""; position: absolute; width: px; height: px; border: px solid #ff; border-top: px solid transparent; border-radius: %; top: px; left: -px; transform: rotate(deg); }
第一部分,就是个矩形 第二部分,是圆环的/ 第三部分,是圆环的/
<div class="jitter"> <div class="logo"></div> <div class="logo"></div> </div>
样式只需要添加
... // 省略上面的样式 ... // 和第一个J错开px .logo:last-child { left: px; top: px; background: #fed; z-index: ; } // 填充红色 .logo:last-child::before { border: px solid #fed; border-top: px solid transparent; } .logo:last-child::after { border: px solid #fed; border-right: px solid transparent; border-top: px solid transparent; border-left: px solid transparent; }
CSS 新增了一个很有意思的属性 -- mix-blend-mode ,其中 mix 和 blend 的中文意译均为混合,那么这个属性的作用直译过来就是混合混合模式,当然,我们我们通常称之为混合模式。
混合模式最常见于 photoshop 中,是 PS 中十分强大的功能之一。下面来看看mix-blend-mode有哪些属性可以设置:
mix-blend-mode: normal; // 正常 mix-blend-mode: multiply; // 正片叠底 mix-blend-mode: screen; // 滤色 mix-blend-mode: overlay; // 叠加 mix-blend-mode: darken; // 变暗 mix-blend-mode: lighten; // 变亮 mix-blend-mode: color-dodge; // 颜色减淡 mix-blend-mode: color-burn; // 颜色加深 mix-blend-mode: hard-light; // 强光 mix-blend-mode: soft-light; // 柔光 mix-blend-mode: difference; // 差值 mix-blend-mode: exclusion; // 排除 mix-blend-mode: hue; // 色相 mix-blend-mode: saturation; // 饱和度 mix-blend-mode: color; // 颜色 mix-blend-mode: luminosity; // 亮度 mix-blend-mode: initial; mix-blend-mode: inherit; mix-blend-mode: unset;
然后我们添加mix-blend-mode:lighten
.logo:last-child { ... mix-blend-mode: lighten; }
看看效果:
是不是很Ok了?
然后我们添加动画,让第二个J缓慢和一个J融合。
.logo:last-child { ... animation: move s infinite; } @keyframes move { % { transform: translate(px); } % { transform: translate(px); } % { transform: translate(px); } }
最终就可以实现第一张图片的预览效果了