Atmosphère✨ Premium

Snow Fall

Flocons Unicode animés en CSS pur tombent dans un ciel de nuit ; le JS recycle chaque floc via animationend pour un flux continu sans canvas.

JSWinter

Vous aurez accès à la démo interactive avec un compte gratuit.

Cet effet fait partie d'Effect.Labs — 811 effets vanilla, une partie gratuite, une partie premium. Atmosphère comprend 57 effets, dont 10 gratuits. Découvrir la catégorie →

3 exemples d'usage

Hero / Landing — Bannière soldes d'hiver e-commerce — Snow Fall exemple 1

① Hero / Landing — Bannière soldes d'hiver e-commerce

QuandUne boutique en ligne active sa page d'accueil thème hivernal : soldes de janvier, campagne Noël ou Black Friday enneigé.
PourquoiLes animations CSS tournent sur le compositor thread et n'affectent pas le LCP du hero — la neige s'affiche sans bloquer le thread principal ni peser sur le budget CPU du rendu critique.
Réglages20 flocons initiaux, animation-duration 6–10 s pour une chute lente et romantique, font-size max 20 px, translateY(100%) calé sur la hauteur réelle du hero, fond remplacé par une image de paysage enneigé en background-image.
Section saisonnière — Page d'accueil station de ski — Snow Fall exemple 2

② Section saisonnière — Page d'accueil station de ski

QuandUne page de réservation hivernale, un site de station de ski ou une boutique outdoor veut habiller sa section hero avec une ambiance neige immersive pleine largeur.
PourquoiLa neige couvre l'intégralité du fond (dégradé bleu nuit ou <code>background-image</code> montagne) : l'effet révèle toute son ampleur sur grande surface. Les flocons tombent sur la hauteur complète du bloc — aucun n'est tronqué dans un widget réduit.
Réglages25 flocons, animation-duration 6–10 s pour une chute lente et romantique, translateY calé sur la hauteur du bloc (360 px ou 100 vh), background remplacé par un dégradé montagne (#0e2038 → #06101a) ou une image paysage.
Calendrier de l'Avent — Écran de révélation quotidienne — Snow Fall exemple 3

③ Calendrier de l'Avent — Écran de révélation quotidienne

QuandUn e-commerce ou un éditorial lance un calendrier de l'Avent interactif : chaque jour, un écran plein cadre s'ouvre avec la neige en fond pour révéler l'offre ou la surprise du moment.
PourquoiLa neige en fond de plein cadre crée une atmosphère festive et immersive — c'est là que l'effet est à son impact maximum. Les flocons décoratifs et semi-transparents ne masquent pas le contenu central, et l'animation CSS ne tire pas sur la batterie des mobiles.
Réglages30 flocons pour une densité festive, animation-duration 4–7 s (chute légèrement rapide = excitation de la découverte), font-size 12–26 px, opacity plafonnée à 0,7 pour que le contenu central reste lisible.

Comment ça marche

Chaque flocon est un div.snow2-flake contenant un caractère Unicode snowflake (❅, ✼, ❆…). La chute est entièrement portée par @keyframes snow2Fall : translateY(-20px) rotate(0deg)translateY(300px) rotate(360deg) en linear infinite. Aucun requestAnimationFrame, aucun canvas — le moteur CSS du navigateur gère les frames sur le compositor thread.

createSnowflake() génère un élément avec des valeurs aléatoires : position left 0–100 %, font-size 10–24 px, opacity 0,4–1,0, animation-duration 4–8 s, animation-delay 0–2 s. Un listener animationend supprime le flocon terminé et en crée immédiatement un nouveau — flux continu, mémoire stable (un floc sort, un floc entre).

Le conteneur .snow2-container est positionné en position: absolute; inset: 0 avec un dégradé linéaire bleu nuit (#1e3a5f → #0f1c2e) et overflow: hidden qui coupe les flocons au bord. Un text-shadow rgba(255,255,255,.5) 0 0 5px sur chaque floc ajoute un halo lumineux adapté au fond sombre.

L'HTML embarque deux flocons pré-positionnés via style inline (durées et délais précalculés) pour éviter un écran vide au premier rendu, avant que le script ne prenne la main et ne remplisse le pool.

Accessibilité

  • prefers-reduced-motion non géré : le code source ne contient aucune vérification de cette media query — l'animation CSS tourne inconditionnellement, y compris sur les systèmes réglés sur « réduire le mouvement ». À compenser manuellement : @media (prefers-reduced-motion: reduce) { .snow2-flake { animation: none; } }.
  • Les div.snow2-flake contiennent du texte Unicode (❅, ✼…) sans aria-hidden="true" : un lecteur d'écran peut les vocaliser au fil des créations dynamiques. Ajouter aria-hidden="true" sur .snow2-container est fortement recommandé.
  • Le conteneur ne porte ni role ni aria-label — son rôle purement décoratif est opaque pour les technologies d'assistance.
  • Les flocons portent pointer-events: none : ils ne bloquent ni les clics ni la navigation clavier des éléments placés en overlay.
  • Contraste : le fond gradient bleu nuit offre un ratio > 7:1 pour du texte blanc (#ffffff sur #0f1c2e) — les flocons eux-mêmes sont décoratifs et ne transportent aucune information.

Compatibilité navigateur

Repose sur les animations CSS3 (@keyframes, animation) et l'événement animationend — disponibles dans tous les navigateurs modernes depuis 2014.

Chrome 43+✓ Complet
Firefox 16+✓ Complet
Safari 9+✓ Complet
Edge 12+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Si les animations CSS sont désactivées (mode économie d'énergie sur certains appareils), les deux flocons pré-seédés dans l'HTML restent visibles en position statique — le fond gradient bleu nuit s'affiche, aucune erreur JS n'est levée.

Le code

Structure HTML à coller dans votre page (CSS + JS disponibles avec un compte premium) :

index.html — structure
<div class="snow2-container" id="snowContainer" aria-hidden="true">
  <span class="snow-text">Flocons de neige</span>
  <!-- Les div.snow2-flake sont injectés dynamiquement par le JS -->
</div>
🔒 Débloquer le code complet — à partir de 2,99 € le 1er mois

HTML + CSS + JS complet, prêt à coller — avec des centaines d'effets premium.

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
tableau snowflakes (JS) ['❅','✼','❆','❄'] Jeu de caractères Unicode utilisés pour les flocons dans createSnowflake() — remplacez par n'importe quel caractère ou emoji hiver pour changer l'esthétique.
10 + 14 * Math.random() (JS) 10–24 px Plage de taille des flocons dans createSnowflake() — réduisez à 8 + 8 * Math.random() pour une neige fine, montez à 14 + 20 * Math.random() pour de gros flocons.
4 + 4 * Math.random() + "s" (JS) 4–8 s Durée d'animation dans createSnowflake() — augmentez pour une chute lente et romantique (7 + 5 * Math.random()), diminuez pour un blizzard nerveux (2 + 2 * Math.random()).
.4 + .6 * Math.random() (JS) 0,4–1,0 Plage d'opacité dans createSnowflake() — réduisez le max à .3 + .3 * Math.random() pour une neige semi-transparente discrète sur un fond image.
translateY(300px) — @keyframes snow2Fall (CSS) 300 px Distance de chute — à aligner sur la hauteur réelle du conteneur pour que les flocons sortent complètement par le bas avant d'être recyclés.
background — .snow2-container (CSS) linear-gradient(#1e3a5f, #0f1c2e) Dégradé du ciel — remplacez par transparent ou une image de paysage en background-image pour superposer l'effet à un hero existant.
color — .snow2-flake (CSS) #fff Couleur des flocons — essayez #b3d9f7 (bleu glacier) ou #e8f4ff (blanc cassé) pour un rendu plus naturel sur fond clair.

FAQ

Oui — l'effet est 100 % vanilla : animations CSS natives et un micro-script (~600 octets) sans dépendance npm. Copiez le HTML, le CSS et le JS dans n'importe quel projet (React, Vue, Svelte, Angular) en ciblant le bon conteneur ; l'effet ne touche pas le DOM en dehors de son .snow2-container.
Modifiez translateY(300px) dans @keyframes snow2Fall pour correspondre à la hauteur de votre conteneur. Si celui-ci fait 500 px, utilisez translateY(520px) pour que les flocons sortent complètement par le bas avant d'être recyclés.
Non — le code source livré ne vérifie pas cette media query. Ajoutez @media (prefers-reduced-motion: reduce) { .snow2-flake { animation-play-state: paused; } } et en tête de createSnowflake() un guard if (matchMedia('(prefers-reduced-motion: reduce)').matches) return; pour couper la création dynamique.