canvas下雨打雷效果

废话不多说,代码走起

*html部分*
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="utf-8"><title>canvas下雨打雷效果</title><link rel="stylesheet" href="css/style.css">
</head><body onresize="_pexresize()"><canvas id="dowebok" width="1280" height="720"></canvas><script src="js/script.js"></script>
</body></html>
body {margin: 0;background: #000;
}canvas {background: url("../images/img1.jpg");background-size: cover;background-repeat: no-repeat;background-position: center center;
}
*javascript部分*
var canvas = document.getElementById('dowebok');
var ctx = canvas.getContext('2d');var stgw = 1280;
var stgh = 720;var loffset = 0;
var toffset = 0;function _pexresize() {var cw = window.innerWidth;var ch = window.innerHeight;if (cw <= ch * stgw / stgh) {loffset = 0;toffset = Math.floor(ch - (cw * stgh / stgw)) / 2;canvas.style.width = cw + "px";canvas.style.height = Math.floor(cw * stgh / stgw) + "px";} else {loffset = Math.floor(cw - (ch * stgw / stgh)) / 2;toffset = 0;canvas.style.height = ch + "px";canvas.style.width = Math.floor(ch * stgw / stgh) + "px";}canvas.style.marginLeft = loffset + "px";canvas.style.marginTop = toffset + "px";
}
_pexresize();var count = 100;
var lcount = 6;var layer = [];
var layery = [];ctx.fillStyle = "rgba(255,255,255,0.5)";
for (var l = 0; l < lcount; l++) {ctx.clearRect(0, 0, stgw, stgh);for (var i = 0; i < count * (lcount - l) / 1.5; i++) {var myx = Math.floor(Math.random() * stgw);var myy = Math.floor(Math.random() * stgh);var myh = l * 6 + 8;var myw = myh / 10;ctx.beginPath();ctx.moveTo(myx, myy);ctx.lineTo(myx + myw, myy + myh);ctx.arc(myx, myy + myh, myw, 0, 1 * Math.PI);ctx.lineTo(myx - myw, myy + myh);ctx.closePath();ctx.fill();}layer[l] = new Image();layer[l].src = canvas.toDataURL("image/png");layery[l] = 0;
}var stt = 0;
var str = Date.now() + Math.random() * 4000;
var stact = false;function animate() {ctx.clearRect(0, 0, stgw, stgh);for (var l = 0; l < lcount; l++) {layery[l] += (l + 1.5) * 5;if (layery[l] > stgh) {layery[l] = layery[l] - stgh;}ctx.drawImage(layer[l], 0, layery[l]);ctx.drawImage(layer[l], 0, layery[l] - stgh);}if (Date.now() > str) {stact = true;}if (stact) {stt++;if (stt < 5 + Math.random() * 10) {var ex = stt / 30;} else {var ex = (stt - 10) / 30;}if (stt > 20) {stt = 0;stact = false;str = Date.now() + Math.random() * 8000 + 2000;}ctx.fillStyle = "rgba(255,255,255," + ex + ")";ctx.fillRect(0, 0, stgw, stgh);}window.requestAnimationFrame(animate);
}animate();

canvas下雨打雷效果相关推荐

  1. 下雨打雷效果(动态)html

    提供了下雨打雷的动态效果(内涵js文件) 底部图片可以更换: 下载地址https://pan.baidu.com/s/12FDjM5UKkmLqlhIPAuABSQ 提取码:yvvc

  2. H5 Canvas下雨特效

    模仿下雨的特效,雨点从空中随机飘落. 这个特效使用了H5的新特性Canvas. 效果演示 代码展示 body代码 <!DOCTYPE html> <html lang="e ...

  3. 20多行js实现canvas雪夜下雪效果

    目录 前言 实现canvas雪夜下雪效果 1.设置canvas标签的id为cvs,设置背景颜色为黑色 2.设置body外边距为0 3.通过获取DOM元素获得画板 4.指定二维绘图 5.设置宽高填满页面 ...

  4. html中放大镜案列,Canvas实现放大镜效果完整案例分析(附代码)

    本文主要记录 canvas 在图像.文字处理.离屏技术和放大镜特效的实现过程中使用到的api.先看下效果吧: 一张模糊的图片: 鼠标点击任意位置,产生放大效果: 哇塞~ 一个帅哥,哈哈哈哈~ 1.放大 ...

  5. 原生js实现canvas气泡冒泡效果

    说明: 本文章主要分为ES5和ES6两个版本 ES5版本是早期版本,后面用ES6重写优化的,建议使用ES6版本. 1, 原生js实现canvas气泡冒泡效果的插件,api丰富,使用简单 2, 只需引入 ...

  6. java做橡皮擦效果_HTML5 canvas橡皮擦擦拭效果

    这是一款HTML5 canvas橡皮擦擦拭效果.该效果通过canvas来制作遮罩层和擦拭用的橡皮擦,用户可以通过移动鼠标来移除遮罩层,效果非常炫酷. 因为发代码有时会排版混乱,所以先发图演示了.源码已 ...

  7. 鼠标点击特效:canvas点击效果

    JS代码(代码中包含了sketch.min.js的源码,如果你的网站已经引用了,请删掉下面的6到7行.): /** 鼠标点击特效:canvas点击效果*/ /* Copyright (C) 2013 ...

  8. canvas实现涂鸦效果--橡皮檫和历史记录

    利用canvas实现涂鸦效果,包括更换笔触大小颜色.换背景图.橡皮檫.历史记录.清屏等功能,并能保存涂鸦图片到本地. 由于篇幅问题,本文主要实现橡皮檫和历史记录功能,该部分功能不操作背景图片,最终效果 ...

  9. canvas实现聚光灯效果(js)

    效果展示: 源码展示: <!doctype html> <html> <head><meta charset="utf-8">< ...

最新文章

  1. DbgView软件 查看VC++ MFC 程序的打印信息
  2. centos7 搭建Docker Registry
  3. 难以摸透的直男脑回路......
  4. unity3d 鼠标延各个方向拖拽物体
  5. LeetCode MySQL 1098. 小众书籍
  6. Eclipse 版本升级:如何不卸载旧版本 Eclipse 实现在线升级到最新版本?
  7. [SHELL实例] (转)最牛B的 Linux Shell 命令 (一)
  8. [No0000F5]C# 类(Class)
  9. 【图像增强】基于matlab区域相似变换函数和蜻蜓算法灰度图像增强【含Matlab源码 089期】
  10. 电子签的背后江湖:腾讯、蚂蚁、字节跳动的较量
  11. 项目报错信息如下:java.text.ParseException: Unparseable date: “Wed Aug 03 2022 00:00:00 GMT+0800 (中国标准时间)“
  12. 复旦大学python教程_安装python-复旦大学大数据学院.pdf
  13. excel用图标表示数据增减
  14. ASO干货丨6招解决APP上架时内购频繁被拒问题
  15. Sublime Text 3 装了Anaconda 写Python代码出现框框的解决办法
  16. 中职计算机应用专业(云计算方向)建设实践
  17. 获取枚举常量的描述值Description
  18. 强大的pdf压缩工具——Smallpdf
  19. 鲁大师2022上半年手机报告:vivo斩获两个冠军,天玑9000超越骁龙8!
  20. 滴滴出行开具行程发票用于企业报销

热门文章

  1. 语音分类入门案例: 英文数字音频分类
  2. 测绘测量所有计算公式
  3. ZString-unity下的string低gc实现
  4. SpringBoot项目通过HotswapAgent实现热部署(JDK1.8)---亲测有效
  5. CAN总线规范 11898-1
  6. COMSOL有限元仿真深度指南:如何设置材料的各向异性属性?
  7. linux终端背景图片,ubuntu开关机背景颜色grub登录背景图片的修改
  8. vue3使用vant4-showToast背景色被覆盖解决方法
  9. c 语言switch语句举例,C switch 语句 | 菜鸟教程
  10. 如何成为一位 hacker?