svg+ccss实现文字描边入场动画效果代码
代码语言:html
所属分类:动画
代码描述:svg+ccss实现文字描边入场动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<style>
* {
border: 0;
box-sizing: border-box;
margin: 0;
padding: 0;
}
:root {
--hue: 223;
--bg: hsl(var(--hue),90%,90%);
--fg: hsl(var(--hue),90%,10%);
--primary: hsl(var(--hue),90%,50%);
--secondary: hsl(198,90%,50%);
--trans-dur: 0.3s;
font-size: calc(16px + (48 - 16) * (100vw - 320px) / (2560 - 320));
}
body {
background-color: var(--bg);
color: var(--fg);
font: 1em/1.5 sans-serif;
display: flex;
height: 100vh;
transition:
background-color var(--trans-dur),
color var(--trans-dur);
}
.logo {
--anim-dur: 4s;
display: block;
overflow: visible;
margin: auto;
width: 13.5em;
height: auto;
}
.logo__fill,
.logo__letter,
.logo__letter path {
animation: logoFill var(--anim-dur) cubic-bezier(0.65,0,0.35,1) infinite;
}
.logo__fill {
transform: translateX(-100%);
}
.logo__letter {
animation-name: logoLetter;
animation-timing-function: cubic-bezier(0.37,-0.67,0.63,1.67);
transform: translateY(50%);
}
.logo__letter path {
animation-name: logoStroke1;
stroke-dasharray: 107 107;
stroke-dashoffset: -107;
}
.logo__letter:nth-child(2),
.logo__letter:nth-child(2) path {
animation-delay: calc(var(--anim-dur) * 0.02);
}
.logo__letter:nth-child(2) path {
animation-name: logoStroke2;
stroke-dasharray: 59 59;
stroke-dashoffset: -59;
}
.logo__letter:nth-child(3),
.logo__letter:nth-child(3) path {
animation-delay: calc(var(--anim-dur) * 0.04);
}
.logo__letter:nth-child(3) path {
animation-name: logoStroke3;
stroke-dasharray: 107 107;
stroke-dashoffset: -107;
}
.logo__letter:nth-child(4),
.logo__letter:nth-child(4) path {
animation-delay: calc(var(--anim-dur) * 0.06);
}
.logo__letter:nth-child(4) path {
animation-name: logoStroke4;
stroke-dasharray: 59 59;
stroke-dashoffset: -59;
}
.logo__letter:nth-child(5),
.logo__letter:nth-child(5) path {
animation-delay: calc(var(--anim-dur) * 0.08);
}
.logo__letter:nth-child(5) path {
animation-name: logoStroke5;
stroke-dasharray: 118 118;
stroke-dashoffset: -118;
}
.logo__letter:nth-child(6),
.logo__letter:nth-child(6) path {
animation-delay: calc(var(--anim-dur) * 0.1);
}
.logo__letter:nth-child(6) path {
animation-name: logoStroke6;
stroke-dasharray: 100 100;
stroke-dashoffset: -100;
}
.logo__letter:nth-child(7),
.logo__letter:nth-child(7) path {
animation-delay: calc(var(--anim-dur) * 0.12);
}
.logo__letter:nth-child(7) path {
animation-name: logoStroke7;
stroke-dasharray: 130 130;
stroke-dashoffset: -130;
}
.logo__letter:nth-child(8),
.logo__letter:nth-child(8) path {
animation-delay: calc(var(--anim-dur) * 0.14);
}
.logo__letter:nth-child(8) path {
animation-name: logoStroke8;
stroke-dasharray: 118 118;
stroke-dashoffset: -118;
}
.logo__letter:last-child,
.logo__letter:last-child path {
animation-delay: calc(var(--anim-dur) * 0.16);
}
.logo__letter:last-child path {
animation-name: logoStroke9;
stroke-dasharray: 113 113;
stroke-dashoffset: -113;
}
/* Dark theme */
@media (prefers-color-scheme: dark) {
:root {
--bg: hsl(var(--hue),90%,10%);
--fg: hsl(var(--hue),90%,90%);
}
}
/* Animations */
@keyframes logoFill {
from, 25% { transform: translateX(-100%); }
40%, 65% { transform: translateX(0); }
80%, to { transform: translateX(100%); }
}
@keyframes logoLetter {
from, 85%, to { transform: translateY(50%); }
20%, 70% {
animation-timing-function: cubic-bezier(0.37,0,0.63,1);
transform: translateY(0);
}
}
@keyframes logoStroke1 {
from { stroke-dashoffset: -107; }
20%, 70% { stroke-dashoffset: 0; }
85%, to { stroke-dashoffset: 107; }
}
@keyframes logoStroke2 {
from { stroke-dashoffset: -59; }
20%, 70% { stroke-dashoffset: 0; }
85%, to { stroke-dashoffset: 59; }
}
@keyframes logoStroke3 {
from { stroke-dashoffset: -107; }
20%, 70% { stroke-dashoffset: 0; }
85%, to { stroke-dashoffset: 107; }
}
@keyframes logoStroke4 {
from { stroke-dashoffset: -59; }
20%, 70% { stroke-dashoffset: 0; }
85%, to { stroke-dashoffset: 59; }
}
@keyframes logoStroke5 {
from { stroke-dashoffset: -118; }
20%, 70% { stroke-dashoffset: 0; }
85%, to { stroke-dashoffset: 118; }
}
@keyframes logoStroke6 {
from { stroke-dashoffset: -100; }
20%, 70% { stroke-dashoffset: 0; }
85%, to { stroke-dashoffset: 100; }
}
@keyframes logoStroke7 {
from { stroke-dashoffset: -130; }
20%, 70% { stroke-dashoffset: 0; }
85%, to { stroke-dashoffset: 130; }
}
@keyframes logoStroke8 {
from { stroke-dashoffset: -118; }
20%, 70% { stroke-dashoffset: 0; }
85%, to { stroke-dashoffset: 118; }
}
@keyframes logoStroke9 {
from { stroke-dashoffset: -113; }
20%, 70% { stroke-dashoffset: 0; }
85%, to { stroke-dashoffset: 113; }
}
</style>
</head>
<body >
<svg.........完整代码请登录后点击上方下载按钮下载查看
网友评论0