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 按位取反运算符 (~)
Feb 04 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
Dec 09 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
Vue.js学习教程之列表渲染详解
May 17 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
Jun 04 Javascript
js微信应用场景之微信音乐相册案例分享
Aug 11 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
Aug 13 Javascript
javascript实现简易数码时钟
Mar 30 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
星际中的相关伤害
2020/03/04 星际争霸
多人战的战术与战略
2020/03/04 星际争霸
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
PHP缓冲区用法总结
2016/02/14 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
JS实现拼图游戏
2021/01/29 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
Python实现合并两个列表的方法分析
2018/05/28 Python
python 实现按对象传值
2019/12/26 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
小学开学寄语
2014/01/19 职场文书
学习自我鉴定
2014/02/01 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
法学专业求职信
2014/07/15 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
大学军训通讯稿
2015/07/18 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
文书工作总结(范文)
2019/07/11 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫