git: https://github.com/rainnaZR/svg-animations/tree/master/src/pages/step2/letter.change
说明
这个页面实现了两个动画。
字母切换
字母切换的方式通过修改 stroke-dasharray 的值来实现动画。是从无到有的动画。
css 代码如下:
.txt{
stroke:#FFEB3B;
stroke-width:2px;
-webkit-animation:animate1 3s ease-in-out forwards;
}
@keyframes animate1{
0%{
stroke-dasharray:0% 30%;
}
80%{
stroke-dasharray:50% 0%;
fill:#E91E63;
}
100%{
stroke-dasharray:50% 0%;
fill:#FFEB3B;
}
}
html 代码如下:
<svg version="1.2" xml:space="default">
<symbol id="letter">
<text x="38%" y="50%">A</text>
</symbol>
<g>
<use xlink:href="#letter" class="txt"></use>
</g>
</svg>
数字切换
数字切换的方式是通过修改 path 路径来实现动画。是直接修改 path 的路径。
css 代码如下:
.path{
-webkit-animation:animation2 10s ease-in-out infinite;
}
@keyframes animation2 {
0%,
7% {
d: path('M0,100 L50,100 L50,50 L50,0 L0,0 L0,50 L50,50')
}
11%,
17% {
d: path('M0,0 L50,0 L50,100 L0,100 L0,0 L0,50 L50,50')
}
21%,
27% {
d: path('M0,0 L50,0 L50,20 L50,40 L50,60 L50,80 L50,100')
}
31%,
37% {
d: path('M50,0 L0,0 L0,50 L0,100 L50,100, L50,50 L0,50')
}
41%,
47% {
d: path('M50,0 L0,0 L0,50 L25,50 L50,50 L50,100 L0,100')
}
51%,
57% {
d: path('M0,0 L0,50 L50,50 L50,0 L50,35 L50,70 L50,100')
}
61%,
67% {
d: path('M0,0 L50,0 L50,100 L0,100 L50,100 L50,50 L0,50')
}
71%,
77% {
d: path('M0,0 L50,0 L50,50 L25,50 L0,50 L0,100 L50,100')
}
81%,
87% {
d: path('M50,0 L50,15 L50,30 L50,45 L50,60 L50,75 L50,100')
}
91%,
96% {
d: path('M0,0 L50,0 L50,50 L50,100 L0,100 L0,25 L0,0')
}
}
html 代码如下:
<svg version="1.2" xml:space="default">
<path class="path" fill="none" stroke="#FFEB3B" stroke-width="2px" d="M0,0 L50,0 L50,50 L50,100 L0,100 L0,25 L0,0"></path>
</svg>
参考资料: http://www.alloyteam.com/2017/02/the-beauty-of-the-lines-break-lines-svg-animation/