这是一款效果超级炫酷的jQuery和SVG弹射纸飞机动画特效。用户可以拖动指定区域,当鼠标松开时,一架小飞机被弹射出去,飞行一圈后有回到原来的位置。同时背景中的树和下面的列表项也会有动画效果。
制作方法
HTML结构
背景中的树和景色使用的是SVG来制作。
<div class="demo__top"> <svg class="demo__top-svgBg" viewBox="0 0 366 256"> <g class="svgBg__objects"> <path class="svgBg__bg svgBg__bg1" fill="#86D7DB" d="M0,143 88,107 224,153 348,109 366,123 366,256 0,256z" /> <path class="svgBg__bg svgBg__bg2" fill="#3C929A" d="M0,156 106,136 272,172 342,124 366,144 366,256 0,256z" /> <path class="svgBg__bg svgBg__bg3" fill="#416175" d="M0,170 62,160 235,148 305,145 366,153 366,256 0,256z" /> <g class="svgBg__tree svgBg__tree-1 m--left" data-id="1"> <path class="svgBg__tree-leafs svgBg__tree-part" fill="#389296" d="M54,127 C77,127 62,95 54,63 C46,95 31,127 54,127" /> <path class="svgBg__tree-trunk svgBg__tree-part" d="M56,147 Q55,115 54,83 Q53,115 52,146" /> </g> ...... </g> </svg> </div>
小纸飞机也是使用SVG来制作。
<div class="plane"> <svg class="plane-svg" viewBox="0 0 28 26"> <path class="plane-svg__path" fill="#fff" d="M0,0 28,13 0,26 0,13 20,13 0,7z" /> </svg> </div>
CSS样式
该弹射纸飞机特效的CSS样式并不是十分复杂,其中纸飞机的飞行动画使用的是planeFly
帧动画。
.plane.fly { -webkit-animation: planeFly 3.5s forwards; animation: planeFly 3.5s forwards; } @keyframes planeFly { 28% { -webkit-transform: translate(55rem, 13rem) rotate(20deg) scale(0.7); transform: translate(55rem, 13rem) rotate(20deg) scale(0.7); } 35% { -webkit-transform: translate(45rem, -8rem) rotate(-160deg) scale(0.5); transform: translate(45rem, -8rem) rotate(-160deg) scale(0.5); } 85% { -webkit-transform: translate(-15rem, -4rem) rotate(-180deg) scale(0.7); transform: translate(-15rem, -4rem) rotate(-180deg) scale(0.7); } 90% { -webkit-transform: translate(-15rem, 0) rotate(0deg); transform: translate(-15rem, 0) rotate(0deg); } 100% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } }
JAVASCRIPT
该特效的js代码中将各个功能都封装为一个函数。每个函数都带有相应的注释,可以查看源文件了解他们的功能。