TweenMax+rx实现彩色线条流动动画效果代码
代码语言:html
所属分类:动画
代码描述:TweenMax+rx实现彩色线条流动动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
html, body {
width: 100%;
height: 100%;
overflow: hidden;
margin: 0;
padding: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
color: #111;
}
body {
background-color: #303030;
}
#app {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="app">
<svg id="stage" width="497" height="418" xmlns="http://www.w3.org/2000/svg"></svg>
</div>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/TweenMax.min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/Rx.5.0.1.js"></script>
<script>
"use strict";
// Tidier code with webpack and better Typescript in Github
// https://github.com/ste-vg/svg-squiggles
console.clear();
var SquiggleState;
(function (SquiggleState) {
SquiggleState[SquiggleState["ready"] = 0] = "ready";
SquiggleState[SquiggleState["animating"] = 1] = "animating";
SquiggleState[SquiggleState["ended"] = 2] = "ended";
})(SquiggleState || (SquiggleState = {}));
class Squiggle {
constructor(stage, settings, grid) {
this.sqwigs = [];
this.state = SquiggleState.ready;
this.grid = grid;
this.stage = stage;
settings.width = 0;
settings.opacity = 1;
this.state = SquiggleState.animating;
let path = this.createLine(settings);
let sqwigCount = 3;
for (let i = 0; i < sqwigCount; i++) {
this.createSqwig(i, sqwigCount, path, JSON.parse(JSON.stringify(settings)), i == sqwigCount - 1);
}
}
createSqwig(index, total, path, settings, forceWhite) {
let sqwig = document.createElementNS("http://www.w3.org/2000/svg", 'path');
sqwig.setAttribute('d', path);
sqwig.style.fill = 'none';
sqwig.style.stroke = forceWhite ? '#303030': this.getColor();
sqwig.style.strokeLinecap = "round";
settings.length = sqwig.getTotalLength();
settings.chunkLength = settings.length / 6; //(settings.sections * 2) + (Math.random() * 40);
settings.progress = settings.chunkLength;
sqwig.style.strokeDasharray = `${settings.chunkLength}, ${settings.length + settings.chunkLength}`;
sqwig.style.strokeDashoffset = `${settings.progress}`;
this.stage.appendChild(sqwig);
this.sqwigs.unshift({
path: sqwig, settings: settings
});
TweenLite.to(settings, settings.sections * 0.1, {
progress: -settings.length,
width: settings.sections * 0.9,
ease: Power1.easeOut,
delay: index * (settings.sections * 0.01),
onComplete: () => {
if (index = total - 1)
this.state = SquiggleState.ended;
sqwig.remove();
}
});
}
update() {
this.sqwigs.map((set) => {
set.path.style.strokeDashoffset = `${set.settings.progress}`;
set.path.style.strokeWidth = `${set.settings.width}px`;
set.path.style.opacity = `${set.settings.opacity}`;
});
.........完整代码请登录后点击上方下载按钮下载查看
网友评论0