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中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
关于jquery中全局函数each使用介绍
Dec 10 Javascript
jQuery瀑布流插件Wookmark使用实例
Apr 02 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
Aug 04 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
Feb 25 Javascript
手机图片预览插件photoswipe.js使用总结
Aug 25 Javascript
canvas实现钟表效果
Feb 13 Javascript
vue构建单页面应用实战
Apr 10 Javascript
使用vux实现上拉刷新功能遇到的坑
Feb 08 Javascript
微信小程序实现登录遮罩效果
Nov 01 Javascript
浅谈vue-props的default写不写有什么区别
Aug 09 Javascript
js实现随机点名
Jan 19 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
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
基于jQuery实现可编辑的表格
2019/12/11 jQuery
Vue 实现登录界面验证码功能
2020/01/03 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
python线程中同步锁详解
2018/04/27 Python
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
简单了解python PEP的一些知识
2019/07/13 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
大学生党员自我评价
2015/03/04 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
高中生物教学反思
2016/02/20 职场文书
python自动化测试之Selenium详解
2022/03/13 Python