js实现canvas鼠标撩动垂柳自然摆动动画效果代码
代码语言:html
所属分类:动画
代码描述:js实现canvas鼠标撩动垂柳自然摆动动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<html>
<head>
<style>
html,
body {
margin: 0;
padding: 0;
height: 100%;
}
body {
user-select: none;
background-color: #000;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
canvas {
flex-shrink: 0;
background-color: #222;
image-rendering: -moz-crisp-edges;
image-rendering: -webkit-crisp-edges;
image-rendering: pixelated;
object-fit: contain;
}
#message {
color: white;
font-family: sans-serif;
position: absolute;
left: 50%;
top: 40%;
transform: translate(-50%,-50%);
text-align: center;
}
h1,h4 {
margin: 0;
}
h1 {
font-size: 10vmin;
}
h4 {
font-size: 4vmin;
}
</style>
</head>
<body>
<div></div>
<script>
function lerpColor(a, b, amount) {
var ah = parseInt(a.replace(/#/g, ""), 16),
ar = ah >> 16,
ag = (ah >> 8) & 0xff,
ab = ah & 0xff,
bh = parseInt(b.replace(/#/g, ""), 16),
br = bh >> 16,
bg = (bh >> 8) & 0xff,
bb = bh & 0xff,
rr = ar + amount * (br - ar),
rg = ag + amount * (bg - ag),
rb = ab + amount * (bb - ab);
return (
"#" + (((1 << 24) + (rr << 16) + (rg << 8) + rb) | 0).toString(16).slice(1)
);
}
const PI = Math.PI,
TWO_PI = Math.PI * 2;
const Util = {};
Util.timeStamp = function() {
return window.performance.now();
};
Util.random = function(min, max) {
return min + Math.random() * (max - min);
};
Util.map = function(a, b, c, d, e) {
return (a - b) / (c - b) * (e - d) + d;
};
Util.lerp = function(value1, value2, amount) {
return value1 + (value2 - value1) * amount;
};
Util.clamp = function(value, min, max) {
return Math.max(min, Math.min(max, value));
};
const Tween = {};
Tween.linear = function(currentTime, start, degreeOfChange, duration) {
return degreeOfChange * currentTime / duration + start;
};
Tween.easeInOutQuad = function(t, b, c, d) {
t /= d / 2;
if (t < 1) return c / 2 * t * t + b;
t--;
return -c / 2 * (t * (t - 2) - 1).........完整代码请登录后点击上方下载按钮下载查看
网友评论0