<!DOCTYPE html>
<html>
<head>
<title>[图片上传中...(Snipaste_2022-10-17_15-15-07.png-44cf57-1665990919221-0)]
</title>
<meta charset="utf-8" />
<style>
html,
body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
</style>
</head>
<body>
<canvas
id="canvas"
style="position: absolute; top: 0px; left: 0px; z-index: 1"
></canvas>
<script type="text/javascript">
//获得canvas容器
var canvas = document.getElementById('canvas')
//获得画笔
var ctx = canvas.getContext('2d')
//canvas设置宽度
canvas.width = canvas.parentNode.offsetWidth
//canvas设置高度
canvas.height = canvas.parentNode.offsetHeight
//如果浏览器支持requestAnimFrame则使用requestAnimFrame否则使用setTimeout
window.requestAnimFrame = (function () {
return (
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function (callback) {
window.setTimeout(callback, 1000 / 60)
}
)
})()
// 波浪大小
var boHeight = canvas.height / 10
var posHeight = canvas.height / 1.2
//初始角度为0
var step = 0
//定义三条不同波浪的颜色
var lines = [
'rgba(0,222,255, 0.2)',
'rgba(157,192,249, 0.2)',
'rgba(0,168,255, 0.2)',
]
function loop() {
//清除canvas内容
ctx.clearRect(0, 0, canvas.width, canvas.height)
step++
//画3个不同颜色的矩形
for (var j = lines.length - 1; j >= 0; j--) {
ctx.fillStyle = lines[j]
//每个矩形的角度都不同,每个之间相差45度
var angle = ((step + j * 50) * Math.PI) / 180
var deltaHeight = Math.sin(angle) * boHeight
var deltaHeightRight = Math.cos(angle) * boHeight
ctx.beginPath()
ctx.moveTo(0, posHeight + deltaHeight)
ctx.bezierCurveTo(
canvas.width / 2,
posHeight + deltaHeight - boHeight,
canvas.width / 2,
posHeight + deltaHeightRight - boHeight,
canvas.width,
posHeight + deltaHeightRight
)
ctx.lineTo(canvas.width, canvas.height)
ctx.lineTo(0, canvas.height)
ctx.lineTo(0, posHeight + deltaHeight)
ctx.closePath()
ctx.fill()
}
requestAnimFrame(loop)
}
loop()
</script>
</body>
</html>
赛贝尔曲线(水波背景)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1 Canvas接口元素定义 1.1 getContext()方法 为了在canvas上绘制,你必须先得到一个画布...
- 前言: 伙计儿,来点干货吧!效果看上去还想这么回事,嘻嘻~ canvas也就这么几步,没事自己多研究研究,...
- 前言 html5Canvas的知识点,是开发的必备技能,在实际工作中也常常会涉及到。 最近熬夜总结html5Can...