IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript实现雪花飘落效果 -> 正文阅读

[JavaScript知识库]JavaScript实现雪花飘落效果

首先上效果

Document - Google Chrome 2021-11-21 20-35-49

我们第一步就是把上次的代码给它Ctrl+c / Ctrl+v (这里严重声明一下,我们能当裁缝就当裁缝,不像某些牛天天卷)然后把里面的星星图案给他换成雪花
这里我们用了一个函数来执行这个效果,使参数为元素数量,通过改变x的值就可以直接改变元素数量。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @import url(https://at.alicdn.com/t/font_2949316_52on5r8j54b.css);
        body{
            background: #1ec7c7;
        }
    </style>
</head>
<body>
    <script>
        function getRandom(x,y){
            return Math.random() * (y-x) + x;
        }

        function snowFlake(x){
            for(var i=0; i<x; i++){
                var Snowflake = document.createElement('Snowflake');
                Snowflake.className = 'iconfont icon-012-snowflake';
                Snowflake.style.fontSize = getRandom(10,30) + 'px';
                Snowflake.style.color = 'rgb('+ 255 +',' + 255 + ',' + 255 +')';
                Snowflake.style.position = 'absolute';
                Snowflake.style.top = getRandom(0,window.innerHeight) + 'px';
                Snowflake.style.left = getRandom(0,window.innerWidth) + 'px';
                Snowflake.style.opacity = getRandom(0.2,0.8);

                document.body.appendChild(Snowflake);
            }           
        }

(童靴们可以对比下星星的代码就可以详细知道有什么变化了)就像这样,但是还缺点什么,音乐吗?并不是 是落下的效果,这才是雪花的灵魂
那么我们先声明一个运动函数,

function snowRun(){
}

让一片雪花动起来,那么所有雪花就都可以动起来了
首先获取我们的每一个雪花(这里的每一个雪花都是我们上面的SnowFlake元素)

var SnowFlakeS = document.getElementsByTagName('SnowFlake');

这里通过定义一个数组SnowFlakeS来获取元素
然后对每个元素进行遍历(说到这个又想到那个被各种树的遍历支配的恐惧)

for(var i=0; i<SnowFlakeS.length; i++){
                    var SnowFlake = SnowFlakeS[i];
                    }

然后使元素的top属性每次加一实现移动

 for(var i=0; i<SnowFlakeS.length; i++){
                    var SnowFlake = SnowFlakeS[i];
                    var top = parseInt(getComputedStyle(SnowFlake).top);    
                    top++;  
                    SnowFlake.style.top = top + 'px';
					}

但是这样会出现一个问题-------雪花不会再次生成
移动的雪花下去就消失了,所以我们要让元素下去以后重新从网页最顶端出现

                    if(top>=window.innerHeight){
                        SnowFlake.style.top = 0;
                    }

当元素的top属性大于网页的高度(也就是离开网页之后)使top的值为0,让雪花再次从顶端落下,

    			   if(top>=window.innerHeight){
                        SnowFlake.style.top = 0;
                        SnowFlake.style.fontSize = getRandom(10,30);
                        SnowFlake.style.left = 	getRandom(0,window.innerWidth) + 'px';
                        SnowFlake.style.opacity = getRandom(0.2,0.8);
                    }

并且我们重新使元素的大小、移动轨迹以及透明度发生变化
这个全部操作我们把它放在一个定时器中实现

setInterval(function(){},x);

这里的 x 可以设置时间的快慢,在这里也就是我们元素下落的速度快慢

最后我们执行这两个函数

        snowFlake(300);
        snowRun();
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:15:09  更:2021-11-22 12:17:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 23:37:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码