首页 > 其他分享 >使用css3制作雪花效果

使用css3制作雪花效果

时间:2024-12-10 09:35:54浏览次数:4  
标签:css3 random snowflakes JavaScript 雪花 snowflake animation 制作 Random

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Snowfall Effect</title>
    <style>
        body {
            background-color: #1e1e1e; /* Dark background for better visibility */
            overflow: hidden; /* Prevent scrollbars */
        }

        .snow {
            position: absolute;
            width: 10px;
            height: 10px;
            background-color: white;
            border-radius: 50%; /* Make it round */
            animation: snowfall linear infinite; /* Animate the fall */
            pointer-events: none; /* Prevent clicking on snowflakes */
        }

        /* Randomize snowflake animation properties */
        @for $i from 1 through 50 {
            .snow:nth-child(#{$i}) {
                left: random(100vw); /* Random horizontal position */
                animation-duration: random(5) + 5s; /* Random fall duration (5-10s) */
                animation-delay: random(5)s; /* Random delay before starting */
                font-size: random(10) + 5px;  /* Random size */
                opacity: random(70) / 100 + 0.3; /* Random opacity */
            }
        }


        @keyframes snowfall {
            0% {
                transform: translateY(-10vh); /* Start above the viewport */
            }
            100% {
                transform: translateY(110vh); /* End below the viewport */
            }
        }
    </style>
</head>
<body>
    <script>
        // JavaScript to create the specified number of snowflakes
        const numberOfSnowflakes = 50;

        for (let i = 0; i < numberOfSnowflakes; i++) {
            const snowflake = document.createElement('div');
            snowflake.classList.add('snow');
            document.body.appendChild(snowflake);
        }
    </script>
</body>
</html>

Explanation and Improvements:

  • Dark Background: A dark background (#1e1e1e) makes the white snowflakes more visible.
  • overflow: hidden;: Prevents scrollbars from appearing as snowflakes move.
  • Randomization: The SCSS-like syntax (using @for and random()) isn't directly supported in CSS. The provided JavaScript dynamically creates snowflakes and applies random styles. This randomizes the horizontal position, animation duration, delay, size, and opacity of each snowflake, creating a more natural look.
  • Animation: The snowfall animation moves the snowflakes from above the viewport (-10vh) to below it (110vh). linear timing ensures a constant falling speed. infinite makes the animation loop continuously.
  • pointer-events: none;: This is crucial. It prevents the snowflakes from interfering with clicking on other elements on the page.
  • JavaScript Dynamic Generation: The JavaScript code now dynamically generates the snowflakes and applies random styles, effectively replacing the SCSS-like syntax with a working solution.

Key Improvements over simpler solutions:

  • Performance: Creating elements with JavaScript is generally more performant than manipulating a large number of elements solely with CSS animations. This is especially true for a large number of snowflakes.
  • Flexibility: Using JavaScript allows for more complex animations and interactions if needed in the future.
  • Maintainability: The code is cleaner and easier to understand and modify.

This improved version provides a realistic and performant snowfall effect using CSS and a small amount of JavaScript for dynamic generation. You can adjust the numberOfSnowflakes variable to control the density of the snowfall.

标签:css3,random,snowflakes,JavaScript,雪花,snowflake,animation,制作,Random
From: https://www.cnblogs.com/ai888/p/18596593

相关文章

  • MSI安装包制作工具 Advanced Installer v21.9 便携版
    这款PC端的软件集成了打包、配置和部署功能,界面简洁,功能全面。即使你是安装脚本的新手,也能轻松上手,快速制作符合WindowsInstaller标准的MSI和MSP安装包。该版本已注册,可以使用全部功能。使用说明:1、将压缩文件解压到固定位置,不要随意移动。2、解压后,双击start_AInstaller......
  • 大一学生《Web前端网课作业》基于HTML+CSS自我介绍网页设计与制作
    ......
  • HTML5网页设计制作基础大二dreamweaver作业、使用HTML+CSS技术制作博客网站(5个页面) (1
    ......
  • jQuery和css3全屏弹出式导航菜单特效插件
    这是一款效果非常酷的jQuery和css3全屏弹出式导航菜单特效插件。 在线预览 下载HTML结构html结构使用一个<header>作为wrapper。里面放logo、登录/注册按钮和用于触发全屏导航菜单的触发按钮。全屏导航菜单放置在header外面,为它使用easier的CSStransformation效果。<......
  • 第8章 利用CSS制作导航菜单
    8.1水平顶部导航栏水平莱单导航栏是网站设计中应用范围最广的导航设计,一般放置在页面的顶部。水平导航适用性强,几乎所有类型的网站都可以使用,设计难度较低。如果导航过于普通,无法容纳复杂的信息结构,就需要在内容模块较多的情况下,结合下拉子导航使用。8.1.1简单水平导航......
  • php 网站修改制作,全面更新PHP网站内容和设计
    修改PHP网站的内容和设计是一个综合性的任务,涉及多个方面的内容更新。以下是详细的步骤:登录后台管理系统:使用管理员账户登录网站的后台管理系统。导航到内容管理:找到“内容管理”、“文章管理”或类似的选项。这些地方通常包含网站上的所有静态和动态内容。编辑具体页面:根据需......
  • 从零开始:PySide6制作启动动画
    使用PySide6创建启动窗口动画请看下面演示效果引言在现代软件开发中,一个精美的启动动画可以提升用户体验,增加软件的专业感。本文将详细介绍如何使用PySide6库创建一个简单的启动窗口动画,包括旋转的LOGO图像。环境准备Python3.13PySide6库依赖项为了确保代码能够正......
  • NUBIGONPro 6.2点云渲染视频制作软件
    NUBIGONPro6.2是实景三维应用领域打造的点云视觉表现与场景动画制作应用系统,着力于协助专业的行业用户实现大批量点云数据高质量视觉效果渲染,轻松为点云叠加工程/工业领域三维矢量设计数据,以及高效炫酷的点云三维场景动画制作等专业级应用。 NUBIGON功能介绍:项目上采集了......
  • 使用css3画个旋转的立方体
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>RotatingCube</title><style>body{background-color:#333;display:flex;justify-content:center;align-items:center;min-height:......
  • 133. 大学生HTML5期末大作业 ―【迪士尼影视网页】 Web前端网页制作 html5+css3+js
    目录一、更多推荐二、网页简介三、网页文件四、网页效果五、代码展示1.html2.CSS3.JS六、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强七、更多推荐一、更多推荐欢迎来到我的CSDN主页!Web前端网页制作、大学生期末大作业、课程设计、毕业设计、......