这是一款svg和CSS制作抖音logo动画。该动画中的抖音logo使用SVG制作,然后通过CSS动画使它抖动起来,非常炫酷。
使用方法
HTML代码
<svg aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<symbol id="icon-tiktok" viewBox="0 0 512 512">
<title>tiktok</title>
<path style="fill: #fff" d="M256,352V32h64c0,32,64,96,128,96v64c-64,0-128-32-128-32V352c0,128-128,128-128,128S64,480,64,352,192,224,192,224c32,0,40,10,40,10v64s-8-10-40-10c0,0-64,0-64,64s64,64,64,64S256,416,256,352Z" />
</symbol>
</defs>
</svg>
<main class="container">
<figure class="item en">
<svg class="svg-tiktok">
<use xlink:href="#icon-tiktok"></use>
</svg>
<figcaption>TikTok</figcaption>
</figure>
<figure class="item zh">
<svg class="svg-tiktok">
<use xlink:href="#icon-tiktok"></use>
</svg>
<figcaption>抖音</figcaption>
</figure>
</main>
CSS代码
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
html {
font-size: 62.5%;
}
body {
font-size: 1.6rem;
background-color: #111;
position: relative;
}
.container {
width: 100vw;
height: 60vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-image: linear-gradient(45deg, #222, #444);
}
.item {
font-size: 6rem;
line-height: 6rem;
font-family: "Trebuchet MS", sans-serif;
color: #fff;
animation: shaking .2s steps(6, end) infinite;
white-space: nowrap;
mix-blend-mode: screen;
}
.item figcaption {
display: inline;
}
.item .svg-tiktok {
fill: #fff;
width: 8rem;
height: 8rem;
transform: translateY(1rem);
}
.item.zh .svg-tiktok {
transform: translateY(1.5rem);
}
@keyframes shaking {
0% {
/* Using filter cause text-shadow doesn't support svgs */
filter: drop-shadow(3px 3px 0px #0ff) drop-shadow(-3px -3px 0px #f00);
transform: translate(1px, 1px);
}
20% {
filter: drop-shadow(-3px 3px 0px #0ff) drop-shadow(3px -3px 0px #f00);
transform: translate(-2px, 1px);
}
40% {
filter: drop-shadow(3px -3px 0px #0ff) drop-shadow(3px -3px 0px #f00);
transform: translate(1px, -1px);
}
60% {
filter: drop-shadow(-3px -3px 0px #0ff) drop-shadow(3px 3px 0px #f00);
transform: translate(-1px, -1px);
}
80% {
filter: drop-shadow(-2px 3px 0px #0ff) drop-shadow(-3px 2px 0px #f00);
transform: translate(2px, 0px);
}
100% {
filter: drop-shadow(-3px 1px 0px #0ff) drop-shadow(1px -3px 0px #f00);
transform: translate(1px, 1px);
}
}