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脚本
Aug 04 Javascript
jquery DOM操作 基于命令改变页面
May 06 Javascript
简单实用的js调试logger组件实现代码
Nov 20 Javascript
angularjs中的e2e测试实例
Dec 06 Javascript
javascript实现标签切换代码示例
May 22 Javascript
微信小程序前端源码逻辑和工作流
Sep 25 Javascript
vue中将网页打印成pdf实例代码
Jun 15 Javascript
angularjs下拉框空白的解决办法
Jun 20 Javascript
JavaScript实现的浏览器下载文件的方法
Aug 09 Javascript
解决vue项目,npm run build后,报路径错的问题
Aug 13 Javascript
vue中使用router全局守卫实现页面拦截的示例
Oct 23 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
Oct 27 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
来自PHP.NET的入门教程
2006/10/09 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
Bootstrap表单布局
2016/07/19 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
python之PyMongo使用总结
2017/05/26 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
大学毕业生通用求职信
2013/09/28 职场文书
入党申请人的自我鉴定
2013/12/01 职场文书
消防安全员岗位职责
2014/03/10 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
学用政策心得体会
2014/09/10 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
会计试用期自我评价
2015/03/10 职场文书
文艺节目主持词
2015/07/06 职场文书
校园广播稿范文
2015/08/19 职场文书
公司管理建议书
2015/09/14 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL