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 相关文章推荐
javascript定时保存表单数据的代码
Mar 17 Javascript
javascript模拟枚举的简单实例
Mar 06 Javascript
jQuery事件绑定和委托实例
Nov 25 Javascript
jQuery使用height()获取高度需要注意的地方
Dec 13 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
Mar 17 Javascript
javascript日期格式化方法小结
Dec 17 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
js学习笔记之事件处理模型
Oct 31 Javascript
微信小程序之电影影评小程序制作代码
Aug 03 Javascript
JS实现json对象数组按对象属性排序操作示例
May 18 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
JS实现根据详细地址获取经纬度功能示例
Apr 16 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
PHP4引用文件语句的对比
2006/10/09 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
js JSON.stringify()基础详解
2019/06/19 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
go和python调用其它程序并得到程序输出
2014/02/10 Python
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
Python求出0~100以内的所有素数
2018/01/23 Python
使用Python来开发微信功能
2018/06/13 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
PyTorch中的C++扩展实现
2020/04/02 Python
详解Flask前后端分离项目案例
2020/07/24 Python
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
毕业生求职信的经典写法
2014/01/31 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
自查自纠工作总结
2014/10/15 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
解析Java异步之call future
2021/06/14 Java/Android