
<html>
<body style="background:#666;">
<style>
.nex_waveBox {
width:100%;
height:130px;
position:absolute;
bottom:-85px;
left:0;
overflow:hidden;
z-index:1;
}
.nex_waveBox canvas {
position:absolute;
bottom:0;
left:0;
}
</style>
<div class="nex_waveBox">
<canvas id="myCanvas1" height="200" width="2560"></canvas>
<canvas id="myCanvas2" height="200" width="2560"></canvas>
<canvas id="myCanvas3" height="200" width="2560"></canvas>
</div>
<script type="text/javascript">
(function() {
wave2();
wave3();
})();
params = {
ctx: document.getElementById("myCanvas1"),
waveHeight: 20, //波浪高度
waveCount: 6, //波浪个数
progress: 100, //波浪位置的高度
// fillStyle:'#95cef7', //颜色
fillStyle: 'rgba(255, 255, 255, 0.6)', //颜色
}
DrawBall(params)
function DrawBall(Params) {
var waveWidth = 3300,
offset = 0,
startX = -1000,
startY = 200, //canvas 高度
d2 = waveWidth / Params.waveCount,
d = d2 / 2,
hd = d / 2;
Params.ctx.width = 2560
ctx = Params.ctx.getContext("2d");
function tick() {
offset -= 5;
if (-1 * offset === d2) offset = 0;
ctx.clearRect(0, 0, Params.ctx.width, Params.ctx.height);
ctx.fillStyle = Params.fillStyle;
ctx.beginPath();
var offsetY = startY - Params.progress;
ctx.moveTo(startX - offset, offsetY);
for (var i = 0; i < Params.waveCount; i++) {
var dx = i * d2;
var offsetX = dx + startX - offset;
ctx.quadraticCurveTo(offsetX + hd, offsetY + Params.waveHeight, offsetX + d, offsetY);
ctx.quadraticCurveTo(offsetX + hd + d, offsetY - Params.waveHeight, offsetX + d2, offsetY);
}
ctx.lineTo(startX + waveWidth, 5000);
ctx.lineTo(startX, 5000);
ctx.fill();
requestAnimationFrame(tick);
}
tick();
}
/* 第二条 */
function wave2() {
var waveWidthB = 3300,
offsetB = 0,
waveHeightB = 15, //波浪高度
waveCountB = 5, //波浪个数
startXB = -1000,
startYB = 200, //canvas 高度
progressB = 90, //波浪位置的高度
d2B = waveWidthB / waveCountB,
dB = d2B / 2,
hdB = dB / 2,
cB = document.getElementById("myCanvas2");
cB.width = 2560
ctxB = cB.getContext("2d");
function tickB() {
offsetB -= 5;
if (-1 * offsetB === d2B) offsetB = 0;
ctxB.clearRect(0, 0, cB.width, cB.height);
ctxB.fillStyle = 'rgba(255, 255, 255, 0.8)';
ctxB.beginPath();
var offsetYB = startYB - progressB;
ctxB.moveTo(startXB - offsetB, offsetYB);
for (var i = 0; i < waveCountB; i++) {
var dxB = i * d2B;
var offsetXB = dxB + startXB - offsetB;
ctxB.quadraticCurveTo(offsetXB + hdB, offsetYB + waveHeightB, offsetXB + dB, offsetYB);
ctxB.quadraticCurveTo(offsetXB + hdB + dB, offsetYB - waveHeightB, offsetXB + d2B, offsetYB);
}
ctxB.lineTo(startXB + waveWidthB, 5000);
ctxB.lineTo(startXB, 5000);
ctxB.fill();
// setTimeout(tickB,5000 / 60); //速度
requestAnimationFrame(tickB);
}
tickB();
}
/* 第三条 */
function wave3() {
var waveWidthC = 3300,
offsetC = 0,
waveHeightC = 30, //波浪高度
waveCountC = 4, //波浪个数
startXC = -1000,
startYC = 200, //canvas 高度
progressC = 100, //波浪位置的高度
d2C = waveWidthC / waveCountC,
dC = d2C / 2,
hdC = dC / 2,
cC = document.getElementById("myCanvas3");
cC.width = 2560
ctxC = cC.getContext("2d");
function tickC() {
offsetC -= 5;
if (-1 * offsetC === d2C) offsetC = 0;
ctxC.clearRect(0, 0, cC.width, cC.height);
ctxC.fillStyle = 'rgba(255, 255, 255, 0.9)';
ctxC.beginPath();
var offsetYC = startYC - progressC;
ctxC.moveTo(startXC - offsetC, offsetYC);
for (var i = 0; i < waveCountC; i++) {
var dxC = i * d2C;
var offsetXC = dxC + startXC - offsetC;
ctxC.quadraticCurveTo(offsetXC + hdC, offsetYC + waveHeightC, offsetXC + dC, offsetYC);
ctxC.quadraticCurveTo(offsetXC + hdC + dC, offsetYC - waveHeightC, offsetXC + d2C, offsetYC);
}
ctxC.lineTo(startXC + waveWidthC, 6000);
ctxC.lineTo(startXC, 6000);
ctxC.fill();
// setTimeout(tickC,5000 / 60); //速度
requestAnimationFrame(tickC);
}
tickC();
}
</script>
</body>
</html>