CANVAS 水波动态背景

参考:https://github.com/cyclegtx/wave_background

做的水波背景,以后可能会用到哈!

效果如下:

代码如下:

<!DOCTYPE html>
<html>
<head>
    <title>水波背景</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">
        var canvas = document.getElementById(‘canvas‘);
        var ctx = canvas.getContext(‘2d‘);
        canvas.width = canvas.parentNode.offsetWidth;
        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(){
            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>
时间: 2024-11-06 17:40:08

CANVAS 水波动态背景的相关文章

用Canvas为网页添加动态背景

最近刚刚接到为微信公众帐号"玩转三里屯"制作首页的任务.考虑到页面只在手机中浏览,而且手机对canvas的支持又非常好,所以打算使用canvas做点不一样的动画. 首先来看下效果图. 要实现这样的动画普通的CSS3是鞭长莫及了,只能使用Canvas.好在使用canvas也非常简单. Step1. 新建一个画布(<canvas>)元素,并放在在所有按钮和logo的下方以免遮挡前面的元素. <canvas id="canvas" style="

android 动态背景的实现以及SurfaceView中添加EditText控件

      首先还是一贯作风,我们先看案例: 静态图看不出来效果,如果用过此软件(扎客)的同学们都知道,她的背景会动.怎么样,是不是觉得很时尚,起码比静态的要好(个人观点).其实实现起来并 不复杂,这个如果让做游戏程序员做简直太小儿科了,这里我说明一点,其实我们做应用的也应该多少了解下游戏编程思维,起码对我们做应用有很好的帮助. 下面我简单介绍下实现方式. 实现原理:自定义一个SurfaceView控件.对之不停的onDraw,使得其背景动起来. 对于SurfaceView如果不了解的同学们麻烦

[canvas]通过动态生成像素点做绚丽效果

本例中的粒子就是实实在在的像素,由js代码在canvas上动态生成的像素点!这些像素点通过一个运动方法有规律地动了起来.透过这个思路,我们可以想到很多很炫的效果,但是这个性能有待考察.实验证明,动态控制太多像素点的话绝对会卡的!在做效果方面有经验的朋友,请提出宝贵意见!这个思路走得通么? <!doctype html> <html> <head> <title>智能粒子</title> <meta charset='utf-8' />

赶紧来许愿:canvas流星雨的背景

赶紧来许愿:canvas流星雨的背景 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>一起来看流星雨</title> <script> var context; var arr = new Array(); var starCount = 800; var rains = new Array(); var rainCount =20

css3 动态背景

动态背景 利用多层背景的交替淡入淡出,实现一种背景在不停变换的效果,先看图. 效果图: DEMO地址 步骤 1.利用css的radial-gradient创建一个镜像渐变的背景.其中的80% 20%为渐变中心的x,y位置. 具体的radial-gradient用法可以参见这里 .dynbg__bg{ position: absolute; top: 0px; left: 0px; width:100%; height:100%; background:-moz-radial-gradient(8

Canvas之动态波浪效果_陈在真Sunny_chen_新浪博客

Canvas之动态波浪效果_陈在真Sunny_chen_新浪博客 Canvas之动态波浪效果 (2012-04-26 09:04:51) 转载▼

用duilib制作仿QQ2013动态背景登录器

转载请说明原出处,谢谢~~ 在上一篇博客里,我修复了CActiveXUI控件的bug,从而可以使用flash动画来制作程序的背景,这篇博客说明一下应该怎么使用CActiveXUI控件创建透明无窗体的背景. 去年的QQ2013的登陆界面就是动态界面,上篇博客我说道了,Duiengine已经有高人做好了仿QQ界面的代码,我这里只是把QQ2013的动态登陆界面制作出来.而QQ2014又换了全新的界面,不过熟悉UI制作的朋友知道,模仿 QQ2014的登陆界面比QQ2013的还要简单.可以看到QQ2013

每天一个JavaScript实例-canvas定时器动态的更新一个线条

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-canvas定时器动态的更新一个线条</title> <style> </style> <script> wind

基于CSS3动态背景登录框代码

基于CSS3动态背景登录框代码.这是一款基于jQuery+CSS3实现的带有动画效果的动态背景登陆框特效. 实现的代码. html代码: <div class="htmleaf-container"> <div class="wrapper"> <div class="container"> <h1>Welcome</h1> <form class="form"