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代码
Dec 09 Javascript
js浏览器本地存储store.js介绍及应用
May 13 Javascript
JavaScript中String.match()方法的使用详解
Jun 06 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
Jul 31 Javascript
Jquery基础教程之DOM操作
Aug 19 Javascript
避免jQuery名字冲突 noConflict()方法
Jul 30 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 Javascript
探究react-native 源码的图片缓存问题
Aug 24 Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 Javascript
vue请求数据的三种方式
Mar 04 Javascript
vue中element 的upload组件发送请求给后端操作
Sep 07 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中使用xmlreader读取xml数据示例
2014/12/29 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
2016/10/12 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
javascript 写类方式之六
2009/07/05 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
深入Python函数编程的一些特性
2015/04/13 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
python3中函数参数的四种简单用法
2018/07/09 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
python求解汉诺塔游戏
2020/07/09 Python
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
2014道德模范事迹材料
2014/02/16 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL