基于SVG和animate.css的炫酷文字动画效果

当前位置:主页 > Html5库 > SVG > 基于SVG和animate.css的炫酷文字动画效果
基于SVG和animate.css的炫酷文字动画效果
分享:

    插件介绍

    这是一款效果非常炫酷的基于SVG和animate.css的炫酷文字动画效果。该效果中的文字和边框路径都使用SVG来制作,然后通过animate.css和walkway.js分别制作文字动画和SVG路径动画。

    浏览器兼容性

    浏览器兼容性
    时间:12-23
    阅读:
简要教程

这是一款效果非常炫酷的基于SVG和animate.css的炫酷文字动画效果。该效果中的文字和边框路径都使用SVG来制作,然后通过animate.css和walkway.js分别制作文字动画和SVG路径动画。

walkway.js是一款可以制作SVG路径动画的js插件。它使用简单,支持pathlinepolylineSVG元素。

animate.css则是一款功能强大的CSS3动画库,它支持多达66种CSS3动画效果,并且十分易于使用,几行代码即可完成一个动画效果。

使用方法

HTML结构

在这个SVG文字动画效果中,通过内联的SVG来制作文字和路径。并通过<g>元素对各组文字进行分组,以实现文字的不同动画效果。例如文字“Thats”的HTML代码为:

<g id="Thats">
  <g>
    <path class="st0" d="M28.8,9.6v2.9h-3.1v6.9h-3.2v-6.9h-3.1V9.6H28.8z"/>
    <path class="st0" d="M33.8,13V9.6H37v9.9h-3.2v-3.6h-2.6v3.6H28V9.6h3.2V13H33.8z"/>
    <path class="st0" d="M36.7,19.5L40,9.6h4.9l3.3,9.9h-3.7l-0.6-1.8h-2.9l-0.6,1.8H36.7z M42.4,11.8L41,15.7h2.7L42.4,11.8z"/>
    <path class="st0" d="M57,9.6v2.9h-3.1v6.9h-3.2v-6.9h-3.1V9.6H57z"/>
    <path class="st0" d="M58.1,13.9V9.6h2.1v2.2L58.1,13.9z"/>
    <path class="st0" d="M69.6,12.6h-2.4c-1.2,0-1.3,0.3-0.5,1c1.5,1.3,2.2,2.6,2.2,3.8s-0.8,2-2.2,2.2h-5.2v-2.9h2.1
      c1.3,0,1.5-0.3,0.5-1.1c-1.6-1.5-2.3-2.8-2-4s1-1.8,2.2-1.8h5.4V12.6z"/>
  </g>
</g>                
              
CSS样式

对于SVG路径预定义了两个class类:st0st1。它们分别用于SVG路径的填充和描边。

.st0{fill:#DBD43E;}
.st1{fill:none;stroke:#DBD43E;stroke-width:3;stroke-miterlimit:10;}                
              

对于文字的动画效果,分别对每组文字使用不同的animate.css动画。

#hanSaidToFin {
  animation: fadeIn 2s ease;
  margin-left: auto;
  margin-right: auto;
  width: 300px;
  margin-top: 5%;
}

#Thats {
  animation: bounceInUp 1s ease;
}

#Not {
  animation: bounceInUp 1s 0.15s ease;
}

#How {
  animation: bounceInUp 1s 0.25s ease;
}

#The {
  animation: bounceInUp 1s 0.4s ease;
}

#Force {
  animation: zoomInUp 1s 0.6s ease;
}

#Works {
  animation: wobble 1s 1.5s ease;
}                
              
JavaScript

该特效中使用walkway.js来制作SVG边框的路径动画。walkway.js的使用方法可以参考这里

var svg = new Walkway({
    selector: 'svg',
    duration: '1000'
});
svg.draw();