效果展示:

源码展示:

<!doctype html>
<html>
<head><meta charset="utf-8"><title>canvas下雪效果(原生js)</title><style>* {margin: 0;padding: 0}html, body {width: 100%;height: 100%;overflow: hidden;background-color: #222;}#canvas {position: absolute;top: 0;left: 0;}</style>
</head>
<body>
<canvas id="canvas"></canvas>
<img id="imgSnow" width="0" height="0" src="xh.png" alt="雪花">
<img id="bgSnow" width="100%" height="100%" src="bj.jpg" alt="背景"><script>window.onload = function () {var canvas = document.getElementById("canvas");var imgSnow = document.getElementById("imgSnow");var bgSnow = document.getElementById("bgSnow");var ctx = canvas.getContext('2d');var mbody = document.querySelector("body");canvas.width =mbody.offsetWidth;canvas.height = mbody.offsetHeight;var GetRandomNum = function (Min, Max) {var Range = Max - Min;var Rand = Math.random();return (Min + Math.round(Rand * Range));}// console.log(GetRandomNum(0, canvas.width))var snowArray = {}; //雪花对象var snowIndex = 0; //标识符var setting = {num: 30, //数量snowSize: 20, //大小startX: Math.random() * canvas.width, //起始横坐标startY: 0, //起始纵坐标vy: 0.01}function snow() {// 起始横坐标this.x = Math.random() * canvas.width;// 起始纵坐标this.y = setting.startY;this.size = setting.snowSize + Math.random() * 10 - 10;//横坐标偏移量this.vx = Math.random() * 3 - 2; //偏移量//纵坐标偏移量this.vy = Math.random() * 10;this.life = 0;this.maxLife = 100;this.id = snowIndex;//当前信息保存至对象snowArraysnowArray[snowIndex] = this;snowIndex++;}snow.prototype.draw = function () {this.x += this.vx;this.y += this.vy;this.vy += setting.vy;this.life++;//删除if (this.y > canvas.height * 0.9 - 20) {snowArray[this.id]} else if (this.life >= this.maxLife) {snowArray[this.id]}ctx.drawImage(imgSnow, this.x, this.y, this.size, this.size)}setInterval(function () {ctx.drawImage(bgSnow, 0, 0, canvas.width, canvas.height);//数for (var i = 0; i < setting.num; i++) {if (Math.random() > 0.97) {new snow();}}for (var i in snowArray) {snowArray[i].draw();}}, 100)}
</script></body>
</html>

图片:

背景图链接:https://img-blog.csdnimg.cn/20190301150524864.jpg

雪花图链接:https://img-blog.csdnimg.cn/20190301150602275.png

canvas下雪效果(原生js)相关推荐

  1. html js 动画效果,原生js html5 canvas 3D云动画效果

    特效描述:原生js html5canvas 3D云动画效果.3D云效果,叼炸天!可用鼠标控制方向!本地要localhost才能正常演示 代码结构 1. 引入JS 2. HTML代码 varying v ...

  2. 圆盘时钟效果 原生JS

    圆盘时钟 旋转时钟 数字时钟 写在前面 仿荣耀手机时钟,设计的同款时钟效果 实现效果 实现原理 数字时钟 利用Date内置对象获取当下的时间,通过处理呈现在页面上 这一步获取时间是非常简单的,通过Da ...

  3. 手风琴效果——原生JS

    写在前面 作为一只前端小汪,以自己一个初学者的视角,在这里记录自己在学习过程中遇到的问题,解决的方法,也算是成长的历程吧!过程中难免会有疏忽和自己没有发现的错误,如果你碰巧看到了我的博客,欢迎和我一起 ...

  4. php侧边栏导航效果,原生js实现电商侧边导航效果

    知识要点 实现原理: 1.点击楼层跳相应楼层,用的是锚点定位 电梯:2F 个护家清 列表title: 这个没什么好说的 2.当点击楼层跳到相应楼层时,该楼层高亮显示 我们的脚本主要就是实现这个功能. ...

  5. Canvas星空效果(JS面向对象)

    概述 更多Canvas实例可以看GitHub,不定时更新:https://github.com/xiangshuo1992/canvas-demo 这个Demo主要有以下几点可以讨论: 1.HTML5 ...

  6. js实现html图片翻页效果,原生JS实现图片翻书效果

    JS实现图片翻书效果-懒人图库 #center { LEFT: 50%; POSITION: absolute; TOP: 50% } #DHTMLBOOK { BACKGROUND: #000; L ...

  7. html5做出百叶窗效果,原生js实现百叶窗效果及原理介绍

    百叶窗大家都见过吧!如图: 原理: 如图所示,空心格子就好比是每个li,给它设定相对定位属性,设置overflow:hidden:黑块为li子元素,高度为li的2倍,设置absolute属性,我们正是 ...

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

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

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

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

最新文章

  1. 聊一个不常见的面试题:为什么数据库连接池不采用 IO 多路复用?
  2. CF1006E Military Problem
  3. R语言使用ggpubr包的ggarrange函数组合多张结论图(垂直堆叠组合)、并为组合后的图像添加图形的注释信息(标题,副标题,坐标轴,字体,颜色等)
  4. 用c语言编写通讯录程序,学C三个月了,学了文件,用C语言写了个通讯录程序
  5. 项目管理过程组(5)与知识领域(10)
  6. 通俗易懂设计模式解析——代理模式
  7. 很感人的爱情故事——世界上最遥远的距离
  8. java中的基本小程序_12个用Java编写基础小程序经典案例(收藏篇)
  9. ASP .Net C# ---Excel导入导出方法
  10. 【软件工程】第一章 软件工程概述 考试重点 复习记录
  11. 学校图书借阅管理系统(MySQL)
  12. 基础篇——树莓派通用引脚定义
  13. 批处理FOR 中的Delims和Tokens总结
  14. 最新王通《搜索排名引爆点》课值得学习吗
  15. windows打印机共享给linux,linux使用windows共享打印机
  16. 水滴模式能否解惑10亿人口下沉市场?
  17. 聚合搜索V3.0泛解析泛目录站群源码 MIP自动推送 SEO功能SEO源码
  18. python 3d绘图立方体_Python3使用turtle绘制超立方体图形示例
  19. [经典之作]vml经典之作
  20. 语音合成(TTS)论文优选:Forward Attention in Sequence- To-Sequence Acoustic Modeling for Speech Synthesis

热门文章

  1. SV绿皮书笔记(九)暂时完结
  2. NIUSHOP wap端分类显示
  3. 5个实力超群的手机APP,有这几个足够用了(系统类、阅读类)
  4. framework7 入门知识
  5. 文本文档打开来是写字板怎么办
  6. JavaWeb之JavaScript及应用
  7. iOS 防止截屏、录屏技术
  8. 华为鸿蒙的科技话题作文800字,关于科技的话题作文3篇
  9. PostgreSQL 技术内幕(二) Greenplum-AO表
  10. 蓝桥杯嵌入式CT117E硬件开发平台经验分享11 | 第九届蓝桥杯国赛题