转载

2种SVG和CSS3创意无限循环动画特效

简要教程

这是一款使用SVG和CSS3制作的非常有创意的无限循环动画特效。该无限循环动画特效共有两种效果,一种是模拟鱼儿跃起在落入水中的动画,一种是一条线绕无穷符号不断动画的特效。

这两种动画特效的灵感来自于 《7种基于GSAP的SVG Loader加载动画特效》 ,是根据它里面的两种效果来制作的。因为那7种GSAP效果是要收费的,因此这里使用CSS3来模拟这些动画效果。

2种SVG和CSS3创意无限循环动画特效

2种SVG和CSS3创意无限循环动画特效


制作方法

这2个无限循环动画特效都是使用SVG和CSS3 animation动画来制作的。在第一种效果中,是一半圆形的条线不断跃起落下的动画。它的HTML结构使用一个svg 来构建所有需要的元素。

  1. <svg viewBox="0 0 200 200" preserveAspectRatio="xMidYMid meet">
  2.   <path class="jumper" stroke-linecap="round" stroke-linejoin="round" d="M47.5,94.3c0-23.5,19.9-42.5,44.5-42.5s44.5,19,44.5,42.5"/>
  3.   <g stroke="#2d2d2d" stroke-width="1">
  4.     <ellipse class="circleL" fill="none" stroke-miterlimit="10" cx="47.2" cy="95.6" rx="10.7" ry="2.7" />
  5.     <ellipse class="circleR" fill="none" stroke-miterlimit="10" cx="136.2" cy="95.6" rx="10.7" ry="2.7" />
  6.   </g>
  7.   <path class="jumper clone" stroke-linecap="round" stroke-linejoin="round" d="M47.5,94.3c0-23.5,19.9-42.5,44.5-42.5s44.5,19,44.5,42.5"/>
  8. </svg>        
复制代码

svg 的preserveAspectRatio被设置为xMidYMid meet,viewbox居于viewport居中。然后里面有两条路径 元素和一个组元素。.jumper的路径时上面进行跳跃的半圆形线条。.jumper .clone则是它的倒影。组元素用于制作两个椭圆形的水波纹。
CSS样式

class 为.jumper的路径会执行名称为animJumper的动画,动画被设置为无限循环。
  1. .jumper {
  2.   fill: none;
  3.   stroke: #383845;
  4.   stroke-width: 10px;
  5.   stroke-dashoffset: 0;
  6.   stroke-dasharray: 0, 136.71884px;
  7.   -webkit-animation: animJumper 1.3s linear infinite;
  8.           animation: animJumper 1.3s linear infinite;
  9. }
  10. @-webkit-keyframes animJumper {
  11.   8% {
  12.     stroke-dasharray: 20.50783px, 136.71884px;
  13.   }
  14.   32% {
  15.     stroke-dasharray: 41.01565px, 136.71884px;
  16.     stroke-dashoffset: -47.85159px;
  17.   }
  18.   56% {
  19.     stroke-dasharray: 20.50783px, 136.71884px;
  20.     stroke-dashoffset: -116.21102px;
  21.   }
  22.   64% {
  23.     stroke-dasharray: 0, 136.71884px;
  24.     stroke-dashoffset: -136.71884px;
  25.   }
  26. }
  27. @keyframes animJumper {
  28.   8% {
  29.     stroke-dasharray: 20.50783px, 136.71884px;
  30.   }
  31.   32% {
  32.     stroke-dasharray: 41.01565px, 136.71884px;
  33.     stroke-dashoffset: -47.85159px;
  34.   }
  35.   56% {
  36.     stroke-dasharray: 20.50783px, 136.71884px;
  37.     stroke-dashoffset: -116.21102px;
  38.   }
  39.   64% {
  40.     stroke-dasharray: 0, 136.71884px;
  41.     stroke-dashoffset: -136.71884px;
  42.   }
  43. }               
复制代码
半圆形的小线条的倒影使用translateY和scaleY将它放置在下面,并降低其透明,制作倒影效果。
  1. .jumper.clone {
  2.   opacity: 0.05;
  3.   -webkit-transform: translateY(200px) scaleY(-1);
  4.       -ms-transform: translateY(200px) scaleY(-1);
  5.           transform: translateY(200px) scaleY(-1);
  6. }         
复制代码
两个模拟水波扩散的椭圆使用animCircle来使其动画起来,同样设置为无限循环。
  1. .circleL {
  2.   opacity: 0;
  3.   -webkit-transform-origin: 47.2px 95.6px;
  4.       -ms-transform-origin: 47.2px 95.6px;
  5.           transform-origin: 47.2px 95.6px;
  6.   -webkit-animation: animCircle 1.3s infinite;
  7.           animation: animCircle 1.3s infinite;
  8. }
  9. .circleR {
  10.   opacity: 0;
  11.   -webkit-transform-origin: 136.2px 95.6px;
  12.       -ms-transform-origin: 136.2px 95.6px;
  13.           transform-origin: 136.2px 95.6px;
  14.   -webkit-animation: animCircle 1.3s 0.728s infinite;
  15.           animation: animCircle 1.3s 0.728s infinite;
  16. }
  17. @-webkit-keyframes animCircle {
  18.   0% {
  19.     opacity: 1;
  20.   }
  21.   50% {
  22.     -webkit-transform: scale(3);
  23.             transform: scale(3);
  24.     opacity: 0;
  25.   }
  26.   100% {
  27.     opacity: 0;
  28.   }
  29. }
  30. @keyframes animCircle {
  31.   0% {
  32.     opacity: 1;
  33.   }
  34.   50% {
  35.     -webkit-transform: scale(3);
  36.             transform: scale(3);
  37.     opacity: 0;
  38.   }
  39.   100% {
  40.     opacity: 0;
  41.   }
  42. }               
复制代码
查看演示请点击     下载插件请点击 2种SVG和CSS3创意无限循环动画特效
正文到此结束
Loading...