500字范文,内容丰富有趣,生活中的好帮手!
500字范文 > js实现雪花飘落效果

js实现雪花飘落效果

时间:2021-12-26 10:16:50

相关推荐

js实现雪花飘落效果

js实现雪花飘落效果

我们可以先看看效果

点这里 雪花

其实总的代码都不到 100 行,代码很少,因此 css 样式 和 js 代码我都放在一个 HTML 文件里面了

我们先看看主体的 HTML 代码

<body><div id="xh"></div></body>

html 的代码就只有一行

我们再看看 css 的样式

body {background-color: black;}#xh {position: relative;}.xue {position: absolute;display: inline-block;/* opacity: .7; */outline: none;border: none;animation: xuehua 5s infinite linear;}.xue:hover {cursor: pointer;animation-play-state: paused;opacity: 1;}@keyframes xuehua{from{opacity: 1;transform: translate(0, 0) rotate(0deg);}to{opacity: 0;transform: translate(0, 700px) rotateZ(720deg) rotateY(720deg) scale(1.5);}}

HTML 中唯一的 div#xh 给它设为 相对定位 relative ,便于它的子元素雪花定位。.xue 这个类设置为 绝对定位 absolute,便于改变它的 top 值,这个就不用多讲了吧。最主要的是xuehua这个动画,刚开始它的透明度设置为 1,慢慢地过渡到 0 ,位置也是从初始位置慢慢地往下移动,rotate表示变换,边下落边变换。

现在我们来看看最主要的 js 代码

<script type="text/javascript">var xh = document.getElementById("xh");/// 屏幕宽度var dWidth = document.body.scrollWidth;var dHeight = window.innerHeight;var setXH = setInterval(function(){production();}, 100);xh.style.height = dHeight;function production(){var t1 = document.createElement("div");/// left 和 top 最大值/// left 减掉 100 是为了不产生横行的滑动条var t1Left = Math.floor(Math.random() * dWidth) - 100;var t1Top = Math.floor(Math.random() * 10);t1.style.left = t1Left + "px";t1.style.top = t1Top + "px";t1.style.display = "inline-block";t1.innerText = "❉";t1.style.color = "white";t1.classList.add("xue");/// 将生成的雪花加入到 div 下面去xh.appendChild(t1);setInterval(function(){t1.remove();}, 5000);}</script>

在这里我大概的思路是这样的

1. 获取到一个容器(也就是HTML中的唯一一个div),保存到 xh 变量中

2. 获取屏幕的宽度(用于让雪花随机从不同的位置下落)

3. 设置一个计时器(用于产生雪花),我这里是每 100 毫秒产生一个 雪花

4. production 这个函数主要是产生雪花,里面的各种设置雪花的参数我就不一一介绍了。里面我用到了随机函数 random(),其作用就是让雪花下落的位置不同。然后参数设置好的雪花加入到div下面去(appendChild)

5. 最后我又设置了一个计时器,作用是每过 5000 毫秒(也就是 5s)就让移除一个雪花

雪花飘落的大致实现过程就是这样啦,要是哪位大佬有什么指导可以直接留言哦,很感谢你们提出的意见呢。大家有什么创意也可以留言哦,这也是提升的一种方法呢

哪个朋友想要源码可以留下邮箱,我直接发给你哦

最后祝大家身体健康~~~~

个人博客 http://www.sharekong.xyz 欢迎访问

QQ群 - 前端学习小组-578418670

不要人数,只要氛围

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。