先上结果,最终实现效果如下:
还原度应该还可以吧?
抖音Logo结构
想要用CSS来画抖音的Logo,前提要先了解它的构造,一定是一些几何图形的拼接组合,因为之前很多业界大佬已经扒过抖音的Logo的结构了,我就拿来借用一下:
好的,有点复杂,简化一下,其实就是 4
个部分
每个颜色划出来的区域代表一个部分,所以最后是:1/4圆环
+ 半圆
+ 长条矩形
+ 半径略大一些的1/4圆环
制作思路
回到本文标题,有人要说我标题党了,这 logo
都划分成四个部分了,你怎么用一个标签搞定呢?就算你用 ::before
和 ::after
,也加上标签本体一共也就三个部分
而且!抖音的 logo
是有两层的:
可以看到,是一个青色的音符和一个红色的音符叠加的
所以! 这么多元素,你怎么用一个标签完成呢?而且还说带动画,是不是逗我们玩呢?
好了,别急,咱们先捋一下思路哈:
- 先从元素的大方向开始思考:
- 需要实现一个黑色背景(需要一个标签)
- 两个音符叠加("黑色背景"已经是一个标签了,那两个音符只能是两个伪元素)
- 再从元素的小细节着手突破:
- 需要在一个伪元素中一笔画出整个音符图案(容我思考一下...)
如何在一个伪元素中一笔画出整个音符图案呢?
💡 想到办法了,超级简单,给大家演示一下
<style> /* 为了保证文章整洁,省略一些代码... */ .douyin::before { background: url('青色的音符.png') } .douyin::affter { background: url('红色的音符.png') } </style> <div class="douyin"/>
好了,轻松搞定,本文结束!鼓掌👏🏻 大家 点赞、收藏、转发 走起~
别骂了,别骂了,刚刚跟大家开了个小玩笑,正文走起!
我们肯定是要用到 background
属性的,不然哪来的色块啊,去扒一下 MDN 文档:
都不用想了,只有一个 background-image
有用,那再具体看看:
划重点了!同学们,background-image
支持为一个元素设置一个或多个图像,来看一下其支持哪些图像类型:
看了语法,发现基本上 <image>
类型支持的都是直接设置图片的,唯独有一个支持渐变函数的,例如:linear-gradient
、repeating-linear-gradient
、radial-gradient
、conic-gradient
...
如果你还不会看CSS的语法,可以看我之前写的 热议:CSS为什么这么难学?一定是你的方法不对,超详细地讲解了如何解读CSS的语法(带实战的)
什么是渐变函数呢?根据它们的单词名字可以知道,支持了 线性、径向(其实就是圆)、锥形 的颜色渐变。我们用前两个就可以满足抖音 logo
的构造了
因为根据 MDN 上的解释,我们是可以使用多个渐变函数来控制元素的背景图像的,多个值用 ,
隔开,例如官方的例子:
background-image: linear-gradient(rgba(0, 0, 255, 0.5), rgba(255, 255, 0, 0.5)), url("../../media/examples/lizard.png");
用个比较形象的比喻,background-image
就像我们写字一样,写字需要一笔一划写,而 background-image
中 ,
隔开的每一个值就像每一个笔画,这些值共同组成了一个 "图像"
那我们就可以借助这些函数来画出抖音的logo了