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 new一个对象的实质
Jan 07 Javascript
jquery将一个表单序列化为一个对象的方法
Jan 03 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
JavaScript原生对象之String对象的属性和方法详解
Mar 13 Javascript
javascript实现简单的页面右下角提示信息框
Jul 31 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
理解javascript中的Function.prototype.bind的方法
Feb 03 Javascript
vue底部加载更多的实例代码
Jun 29 Javascript
微信小程序系列之自定义顶部导航功能
May 21 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 Javascript
JavaScript数组常用的增删改查与其他属性详解
Oct 13 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
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
python求解水仙花数的方法
2015/05/11 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
python在非root权限下的安装方法
2018/01/23 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
毕业生自荐书
2014/02/02 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
自我检讨报告
2015/01/28 职场文书
培训师岗位职责
2015/02/14 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android