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 相关文章推荐
JS控制文本框textarea输入字数限制的方法
Jun 17 Javascript
jquery indexOf使用方法
Aug 19 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
JavaScript中setMonth()方法的使用详解
Jun 11 Javascript
谈谈Jquery中的children find 的区别有哪些
Oct 19 Javascript
jquery判断iPhone、Android设备类型
Sep 14 Javascript
使用JavaScript实现点击循环切换图片效果
Sep 03 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
在JavaScript中使用严格模式(Strict Mode)
Jun 13 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
Oct 09 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
Oct 24 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 empty函数判断mysql表单是否为空
2010/04/12 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
php常用正则函数实例小结
2016/12/29 PHP
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
python字符串连接的N种方式总结
2014/09/17 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
django 多数据库配置教程
2018/05/30 Python
django框架自定义用户表操作示例
2018/08/07 Python
英国精品买手店:Browns Fashion
2016/09/29 全球购物
日本小田急百货官网:Odakyu
2018/07/19 全球购物
椰子猫砂:CatSpot
2018/08/27 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
教师实习自我鉴定
2013/12/14 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
2019年大学推荐信
2019/06/24 职场文书
python中subplot大小的设置步骤
2021/06/28 Python