<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Canvas</title>
</head>
<style>
#myCanvas{
border:1px solid #cccccc;
}
</style>
<body>
<canvas id="myCanvas" width="600" height="300">
您的浏览器不支持 HTML5 canvas 标签。
</canvas>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script>
$(function () {
var myAction = {};
$.extend(myAction, {
getWidth: function (pointA, pointB) {
var xWidth = (pointA.x - pointB.x) * (pointA.x - pointB.x);
var yWidth = (pointA.y - pointB.y) * (pointA.y - pointB.y)
var edgeWidth = Math.sqrt( xWidth + yWidth );
return 100 / edgeWidth ;
},
initCanvas: function () {
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var start = 0;
var pointA = {
x: 0,
y: 100
};
var pointB = {
x: 600,
y: 100
};
var width = myAction.getWidth(pointA, pointB);
function auto() {
ctx.beginPath();
ctx.moveTo(0, 100);
ctx.quadraticCurveTo(300, 5, 600, 100);
var grd = ctx.createLinearGradient(pointA.x, pointA.y, pointB.x, pointB.y);
grd.addColorStop(0, "#9eacb7");
grd.addColorStop(start, "#5BC0DE");
grd.addColorStop(start + (width / 2), "#ffff4d");
grd.addColorStop(start + width, "#01d1ad");
grd.addColorStop(1, "#01d1ad");
ctx.lineWidth = 3;
ctx.strokeStyle = grd;
ctx.stroke();
ctx.closePath();
if (start + width + 0.02 >= 1) {
start = 0;
} else {
start = start + 0.02;
}
setTimeout(function() {
auto();
}, 100);
}
auto();
},
});
var init = function () {
myAction.initCanvas();
}();
});
</script>
</body>
</html>
canvas贝塞尔曲线加渐变动画效果
最新推荐文章于 2024-03-31 17:17:38 发布