js实现雪花效果(超简单)

打个广告,最底下的公众号,可以每天领外卖红包、打车优惠券还有96折充值电费等,需要的可以关注一下哦

使用js实现雪花飘落效果,话不多说直接上代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>snow</title>
    <style>
        body,html{
            margin: 0;
            padding: 0;
            overflow: hidden;
            height: 100%;
            background: black;
        }
        .snow{
            background: white;
            position: absolute;
            width: 20px;
            height: 20px;
            border-radius: 50%;
        }
    </style>

</head>
<body>
    <script>
        //获取屏幕宽高
        var windowWidth = window.screen.width;
        var windowHeight = window.screen.height;

        //创建雪花
        function createSnow(){
            var left = 0;
            var top = 0;

            //定义一个初始化随机数,使雪花在屏幕中
            var left_random = Math.random() * windowWidth;
            var top_random = Math.random()* windowHeight;
            var div = document.createElement('div');
            div.className = 'snow';
            div.style.transform = 'scale('+(Math.random())+')'

            document.body.appendChild(div);

            //雪花飘落
            setInterval(function () {

                div.style.left = left_random + left +'px';
                div.style.top = top_random + top +'px'
                left += 0.2;
                top += 0.2;

                //如果雪花跑到屏幕外面了,让雪花重新返回屏幕顶部
                if(left_random + left >= windowWidth){
                    left_random = Math.random();
                    left = 0;
                }

                if(top_random + top >= windowHeight){
                    top_random = Math.random();
                    top = 0;
                }
            },10)

        }
        for(var i = 0 ; i < 200 ; i++){
            createSnow()
        }
    </script>
</body>
</html>

实现逻辑其实很简单,动态创建若干个div设置其样式变成雪花,通过setInterval定时器控制雪花移动,当雪花跑到屏幕外面重新让雪花的left或者top为0,使雪花重新回到最左或者最上面的位置,从而实现。

效果预览:

代码优化:

看了一年前写的博客发现这个雪花效果还有优化的地方,由于left和top都会导致布局repaint,建议用translate代替,可以很明显的提高性能

然后就是关注一下我的公众号呀,就是底下这玩意,每天能领外卖红包、打车红包,还有96折充值电费等

  • 22
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
你可以使用Python的Pygame库来实现雪花飘落效果。下面是一个简单的示例代码```python import pygame import random # 初始化Pygame pygame.init() # 设置窗口大小和标题 width, height = 800, 600 screen = pygame.display.set_mode((width, height)) pygame.display.set_caption("雪花飘落效果") # 定义雪花对象 class Snowflake: def __init__(self): self.x = random.randint(0, width) self.y = random.randint(0, height) self.radius = random.randint(1, 3) self.speed = random.randint(1, 3) def move(self): self.y += self.speed if self.y > height: self.y = random.randint(-50, -10) self.x = random.randint(0, width) def draw(self): pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), self.radius) # 创建雪花列表 snowflakes = [] for _ in range(100): snowflakes.append(Snowflake()) # 游戏循环 running = True while running: # 处理退出事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 设置背景色 screen.fill((0, 0, 0)) # 更新雪花位置 for snowflake in snowflakes: snowflake.move() snowflake.draw() # 刷新画面 pygame.display.flip() # 退出游戏 pygame.quit() ``` 这段代码使用了Pygame库来创建一个窗口,并在窗口中实现雪花飘落的效果。首先定义了一个Snowflake类,用于表示雪花对象,包括雪花的坐标、半径和速度等属性。然后创建了一个包含100个雪花对象的列表。在游戏循环中,每次循环都更新雪花的位置,并在窗口中绘制出来,最后刷新画面。按下关闭按钮时,退出游戏。 你可以根据需要调整代码中的参数,如窗口大小、雪花数量、速度范围等,以达到你想要的效果。希望对你有帮助!
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhzzcc_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值