JavaScript实现雪花飘落效果


Posted in Javascript onDecember 27, 2020

本文实例为大家分享了JavaScript实现雪花飘落效果的具体代码,供大家参考,具体内容如下

一、实现功能

(1)添加一个背景图片;
(2)用js语言实现雪花飘落效果;
(3)使用setInterval定时器每800毫秒创建一个雪花;
(4)把每一个雪花作为参数传进动态下落的方法中即可。

二、展示

1.代码展示

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <style>
 body {
  background-color: #000;
  /*防止出现向下滚动条*/
  overflow: hidden;
 }
 </style>
</head>

<body>
 <img src="1.jpg" style="height: 800px; width:1500px;">
 <script>
 function snow() {
  // 1、定义一片雪花模板
  var flake = document.createElement('div');
  // 雪花字符 ❄❉❅❆✻✼❇❈❊✥✺
  flake.innerHTML = '❅';
  flake.style.cssText = 'position:absolute;color:#fff;';

  //获取页面的高度 相当于雪花下落结束时Y轴的位置
  var documentHieght = window.innerHeight;
  //获取页面的宽度,利用这个数来算出,雪花开始时left的值
  var documentWidth = window.innerWidth;

  //定义生成一片雪花的毫秒数
  var millisec =10;
  //2、设置第一个定时器,周期性定时器,每隔一段时间(millisec)生成一片雪花;
  setInterval(function() { //页面加载之后,定时器就开始工作
  //随机生成雪花下落 开始 时left的值,相当于开始时X轴的位置
  var startLeft = Math.random() * documentWidth;

  //随机生成雪花下落 结束 时left的值,相当于结束时X轴的位置
  var endLeft = Math.random() * documentWidth;

  //随机生成雪花大小
  var flakeSize = 3 + 20 * Math.random();

  //随机生成雪花下落持续时间
  var durationTime = 4000 + 7000 * Math.random();

  //随机生成雪花下落 开始 时的透明度
  var startOpacity = 0.7 + 0.3 * Math.random();

  //随机生成雪花下落 结束 时的透明度
  var endOpacity = 0.2 + 0.2 * Math.random();

  //克隆一个雪花模板
  var cloneFlake = flake.cloneNode(true);

  //第一次修改样式,定义克隆出来的雪花的样式
  cloneFlake.style.cssText += `
   left: ${startLeft}px;
   opacity: ${startOpacity};
   font-size:${flakeSize}px;
   top:-25px;
    transition:${durationTime}ms;`;

  //拼接到页面中
  document.body.appendChild(cloneFlake);

  //设置第二个定时器,一次性定时器,
  //当第一个定时器生成雪花,并在页面上渲染出来后,修改雪花的样式,让雪花动起来;
  setTimeout(function() {
   //第二次修改样式
   cloneFlake.style.cssText += `
    left: ${endLeft}px;
    top:${documentHieght}px;
    opacity:${endOpacity};`;

   //4、设置第三个定时器,当雪花落下后,删除雪花。
   setTimeout(function() {
   cloneFlake.remove();
   }, durationTime);
  }, 0);

  }, millisec);
 }
 snow();
 </script>
</body>
</html>

2.效果展示

代码如下(示例):

JavaScript实现雪花飘落效果

总结

学会了使用JS语言实现雪花飘落特效效果;运用了定时器控制雪花出现的速度;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用JavaScript修改浏览器URL地址栏的实现代码
Oct 21 Javascript
node.js中的events.emitter.listeners方法使用说明
Dec 10 Javascript
jquery实现炫酷的叠加层自动切换特效
Feb 01 Javascript
HTML5 js实现拖拉上传文件功能
Nov 20 Javascript
js实现时间轴自动排列效果
Mar 09 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
Mac系统下Webstorm快捷键整理大全
May 28 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
Jan 05 Javascript
Vue入门之数据绑定(小结)
Jan 08 Javascript
JS使用Dijkstra算法求解最短路径
Jan 17 Javascript
原生JS实现逼真的图片3D旋转效果详解
Feb 16 Javascript
JS中的防抖与节流及作用详解
Apr 01 Javascript
微信小程序自定义胶囊样式
Dec 27 #Javascript
JS实现鼠标移动拖尾
Dec 27 #Javascript
JavaScript实现滚动加载更多
Dec 27 #Javascript
jQuery实现简单轮播图效果
Dec 27 #jQuery
JavaScript实现瀑布流布局的3种方式
Dec 27 #Javascript
Vue实现省市区三级联动
Dec 27 #Vue.js
JavaScript实现通讯录功能
Dec 27 #Javascript
You might like
Session的工作方式
2006/10/09 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
2015/07/01 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
js仿360开机效果
2019/12/26 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
[55:04]海涛DOTA2死魂复燃6.82版本介绍
2014/09/28 DOTA
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
python实现3D地图可视化
2020/03/25 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
音乐学个人的自荐书范文
2013/11/26 职场文书
计算机专业学生求职信分享
2013/12/15 职场文书
打架检讨书100字
2014/01/08 职场文书
公务员个人总结
2015/02/12 职场文书
天鹅湖观后感
2015/06/09 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers