javascript实现起伏的水波背景效果


Posted in Javascript onMay 16, 2016

本文实例为大家分享了js水波背景效果的实现代码,供大家参考,具体内容如下

效果图:

javascript实现起伏的水波背景效果

实现代码:

<!DOCTYPE html>
<html>
<head>
 <title>水波背景</title>
 <meta charset="gb2312" />
 <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>

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
jQuery 全选效果实现代码
Mar 23 Javascript
基于jquery的地址栏射击游戏代码
Mar 10 Javascript
基于jQuery的简单九宫格实现代码
Aug 09 Javascript
浅谈Javascript的静态属性和原型属性
May 07 Javascript
jfinal与bootstrap的登录跳转实战演习
Sep 22 Javascript
JS中多种方式创建对象详解
Mar 22 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
Dec 08 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
VUE实现一个分页组件的示例
Sep 13 Javascript
详解Vue中watch对象内属性的方法
Feb 01 Javascript
js中关于Blob对象的介绍与使用
Nov 29 Javascript
微信小程序实现日历小功能
Nov 18 Javascript
JavaScript判断用户名和密码不能为空的实现代码
May 16 #Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
May 16 #Javascript
js流动式效果显示当前系统时间
May 16 #Javascript
JavaScript禁止复制与粘贴的实现代码
May 16 #Javascript
JavaScript代码性能优化总结(推荐)
May 16 #Javascript
AngularJS学习笔记之依赖注入详解
May 16 #Javascript
javascript表单事件处理方法详解
May 15 #Javascript
You might like
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
浅析php数据类型转换
2014/01/09 PHP
PHP 断点续传实例详解
2017/11/11 PHP
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
JavaScript实现简单评论功能
2017/08/17 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
Python编写检测数据库SA用户的方法
2014/07/11 Python
Python制作词云的方法
2018/01/03 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
简单了解python代码优化小技巧
2019/07/08 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
Python修改列表值问题解决方案
2020/03/06 Python
Python接口测试文件上传实例解析
2020/05/22 Python
理想演讲稿范文
2014/05/21 职场文书
2014年党小组工作总结
2014/12/20 职场文书
房产公证书
2015/01/23 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
写给老师的保证书
2015/05/09 职场文书
化验室安全管理制度
2015/08/06 职场文书
详解Python类和对象内容
2021/06/22 Python