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 相关文章推荐
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
Jun 19 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 Javascript
基于React实现表单数据的添加和删除详解
Mar 14 Javascript
bootstrap轮播图示例代码分享
May 17 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
JS实现的邮箱提示补全效果示例
Jan 30 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
区别JavaScript函数声明与变量声明
Sep 12 Javascript
总结javascript三元运算符知识点
Sep 28 Javascript
在vue-cli中引入lodash.js并使用详解
Nov 13 Javascript
Vue使用Element实现增删改查+打包的步骤
Nov 25 Vue.js
javascript函数式编程基础
Sep 15 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
解析php中反射的应用
2013/06/18 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
js获取页面description的方法
2015/05/21 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
解决Python对齐文本字符串问题
2019/08/28 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
Python连接Impala实现步骤解析
2020/08/04 Python
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
2014年团总支工作总结
2014/11/21 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
监察建议书
2015/02/04 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
Python如何导出导入所有依赖包详解
2021/06/08 Python