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的将DropDownlist的选中值赋给label的实现代码
May 06 Javascript
javascript 实现简单的table排序及table操作练习
Dec 28 Javascript
js window.print实现打印特定控件或内容
Sep 16 Javascript
node.js中的fs.open方法使用说明
Dec 17 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
Feb 21 Javascript
Vue组件通信之Bus的具体使用
Dec 28 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
Dec 29 Javascript
jQuery实现的图片点击放大缩小功能案例
Jan 02 jQuery
微信小程序实现多行文字滚动
Nov 18 Javascript
JavaScript分页组件使用方法详解
Jul 26 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 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
Python进行数据提取的方法总结
2016/08/22 Python
python去除扩展名的实例讲解
2018/04/23 Python
python实现Flappy Bird源码
2018/12/24 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
Python OpenCV实现视频分帧
2019/06/01 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
如何利用python 读取配置文件
2021/01/06 Python
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
工业学校毕业生自荐信范文
2014/01/03 职场文书
项目合作计划书
2014/01/09 职场文书
房地产开发计划书
2014/01/10 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
社区护士演讲稿
2014/08/27 职场文书
八年级英语教学反思
2016/02/15 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书