Snowfall Animation Effect using CSS


We can create an animation using HTML and CSS. When we add animation to the webpage, it improves the UX of the application. We can create various animations using the CSS keyframes property and use it using the ‘animation’ CSS property.

In this tutorial, we will learn to create a snowfall animation effect using CSS.

Syntax

Users can follow the syntax below to create a snowfall animation effect using CSS.

<div class = "snow"> </div>
.snow{
   animation: snow 7s linear infinite;
}
.snow:nth-child(2) {
   left: 20%;
   animation-delay: 1s;
}

In the above syntax, we have created the div element with the ‘snow’ class name and added the ‘snow’ keyframes as a value of the animation. Also, we can set the animation delay and left position for every ‘snow’ div using the nth-child CSS property.

Example 1

In the example below, we have created multiple div elements with the ‘snow’ class name in the HTML. In the CSS, we initially set fixed width and height for the snow element. Also, we have set the background and position for every snow element.

We have added the snow animation to move the div element and create a snowfall effect. Furthermore, we have customized every snow element and changed the dimensions, opacity, and left position of every snow element.

Also, we have set the animation delay for every snow element. So, we can see snow elements falling on the screen at different times.

<html>
<head>
   <style>
      * {background-color: darkblue; color: white;}
      /* add snowfall animation */
      .snow {
         position: absolute;
         top: -50px;
         left: -50px;
         width: 15px;
         height: 15px;
         border-radius: 50%;
         background: white;
         animation: snow 7s linear infinite;
      }
      .snow:nth-child(1) {
         left: 10%;
         opacity: 0.3;
         height: 10px;
         width: 10px;
         animation-delay: 0s;
      }
      .snow:nth-child(2) {
         left: 20%;
         opacity: 0.5;
         animation-delay: 1s;
      }
      .snow:nth-child(3) {
         left: 30%;
         height: 5px;
         width: 10px;
         animation-delay: 2s;
      }
      .snow:nth-child(4) {
         left: 40%;
         height: 8px;
         width: 13px;
         animation-delay: 1s;
      }
      .snow:nth-child(5) {
         left: 50%;
         opacity: 0.7;
         animation-delay: 4s;
      }
      .snow:nth-child(6) {
         left: 60%;
         opacity: 0.3;
         height: 20px;
         width: 13px;
         animation-delay: 8s;
      }
      .snow:nth-child(7) {
         left: 70%;
         opacity: 0.9;
         height: 17px;
         width: 10px;
         animation-delay: 6s;
      }
      .snow:nth-child(8) {
         left: 80%;
         opacity: 0.6;
         animation-delay: 7s;
      }
      .snow:nth-child(9) {
         left: 90%;
         height: 12px;
         width: 12px;
         animation-delay: 5s;
      }
      .snow:nth-child(10) {
         left: 80%;
         height: 22px;
         width: 16px;
         animation-delay: 9s;
      }
      @keyframes snow {
         0% {
            transform: translateX(0) translateY(0);
         }
         100% {
            transform: translateX(80px) translateY(1000px);
         }
      }
   </style>
</head>
<body>
   <h2> Adding the <i> Snowfall animation </i> using HTML and CSS. </h2>
   <div class = "snow"> </div>
   <div class = "snow"> </div>
   <div class = "snow"> </div>
   <div class = "snow"> </div>
   <div class = "snow"> </div>
   <div class = "snow"> </div>
   <div class = "snow"> </div>
   <div class = "snow"> </div>
   <div class = "snow"> </div>
   <div class = "snow"> </div>
</body>
</html>

Example 2

In the example below, we have used the ‘Jquery-snowfall’ library to create a snowfall effect using the Jquery. We have added the library in the <head> section using the CDN.

In jQuery, we invoked the snowfall() method to create a snowfall effect. Also, we have passed some parameters to the snowfall() method.

In the output, users can observe the snowfall effect, which is better than the above example.

<html>
<head>
   <style>
      * {
         color: blue;
      }
      .snow-fall {
         height: 600px;
         width: 600px;
         background-color: blue;
      }
   </style>
   <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
   <script src = "https://cdnjs.cloudflare.com/ajax/libs/JQuery-Snowfall/1.7.4/snowfall.jquery.min.js"> </script>
</head>
<body>
   <h2> Adding the <i> Snowfall animation </i> using HTML and JQuery. </h2>
   <div class = "snow-fall"> </div>
   <script>
      $('.snow-fall').snowfall({ flakeCount: 500, maxSpeed: 2, maxSize: 10 });
   </script>
</body>
</html>

Users learned two different approaches to create a snowfall effect. In the first approach, we have used only HTML and CSS. Developers can observe that code is very complex and unreadable as it requires creating every snow element and manipulating it using CSS. In the second approach, we used jQuery’s external third party library to create a snowfall effect.

Updated on: 21-Apr-2023

218 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements