Atmosphère✨ Premium

Starfield

Champ d'étoiles en CSS 3D pur — chaque étoile jaillit du centre grâce à la perspective et une durée d'animation aléatoire, simulant un voyage à vitesse lumière.

JSSpace

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 — Page d'accueil produit spatial ou tech — Starfield exemple 1

① Hero / Landing — Page d'accueil produit spatial ou tech

QuandLa landing page d'une app d'astronomie, d'un jeu spatial ou d'un SaaS à univers futuriste, affichée dès l'arrivée du visiteur.
PourquoiLe champ d'étoiles pose l'atmosphère en une fraction de seconde sans image réseau — CSS pur, zéro requête. Le flux radial infini donne de la profondeur sans distraire du titre principal.
Réglages150-200 étoiles, durées 1,5 s–4 s, perspective: 500px. Titre centré avec un scrim semi-transparent pour garantir le contraste WCAG AA.
Écran de chargement — App ou jeu spatial plein écran — Starfield exemple 2

② Écran de chargement — App ou jeu spatial plein écran

QuandL'utilisateur lance un jeu spatial, une app d'astronomie ou une expérience immersive — l'écran de chargement occupe tout le viewport pendant 2 à 5 secondes.
PourquoiÀ pleine superficie, le flux radial est spectaculaire : les étoiles jaillissent du centre vers tous les bords, simulant la traversée à vitesse lumière. C'est exactement le format où le champ d'étoiles est le plus impressionnant.
Réglages160 étoiles, durées 1,2 s–3,0 s, perspective: 500px. Titre de jeu et barre de progression centrés — le starfield occupe 100 % de la surface, sans card qui le bride.
Micro-interaction de conversion — Confirmation d'accès premium — Starfield exemple 3

③ Micro-interaction de conversion — Confirmation d'accès premium

QuandL'utilisateur vient de confirmer un plan payant — l'écran de succès s'affiche 3 à 5 secondes avant la redirection vers le dashboard.
PourquoiL'immersion spatiale renforce la sensation d'accéder à un « niveau supérieur ». Le thème sidéral associe l'abonnement à l'infini et au possible, ancrant positivement la décision.
Réglages120 étoiles, durées 1,2 s–2,5 s (vitesse perçue plus élevée = sentiment d'élan), perspective: 600px. Badge « Premium activé » centré + bouton CTA en pointer-events: auto.

Comment ça marche

L'effet repose entièrement sur les transformations CSS 3D. Le conteneur .starfield-container porte perspective: 500px, ce qui crée un point de fuite au centre. Chaque étoile est un <div class="star"> de 2×2 px — un cercle blanc en position: absolute — positionné par des valeurs left et top proches du centre via l'attribut style inline.

L'animation @keyframes starMove propulse chaque étoile de translateZ(0) scale(0.1) à translateZ(500px) scale(2) en boucle infinie linear. Avec la perspective du parent, ce déplacement en Z crée l'illusion d'un astre qui surgit du lointain, grossit et disparaît hors-champ. L'opacité monte de 0 à 1 entre 0 % et 10 % du cycle, puis redescend de 1 à 0 entre 90 % et 100 % — évitant tout saut brusque au recommencement de la boucle.

Chaque étoile reçoit une animation-duration différente via son style inline (de ~1,7 s à ~3,5 s dans l'implémentation de référence). Ce décalage de durée, combiné à des positions légèrement différentes autour du centre, génère un flux radial asynchrone sans aucun calcul JavaScript côté animation. Un décalage de phase négatif (animation-delay) permet de démarrer les étoiles à des instants différents du cycle, évitant l'effet de démarrage synchronisé.

L'effet est 100 % CSS pour le mouvement ; les étoiles doivent toutefois être présentes dans le DOM à l'initialisation. Dans l'implémentation de référence, elles sont soit codées en dur dans le HTML, soit générées par un court script d'initialisation qui crée les <div class="star"> avec positions et durées aléatoires via style inline. Aucun requestAnimationFrame ni canvas n'est utilisé.

Accessibilité

  • prefers-reduced-motion : le code ne contient aucune vérification de prefers-reduced-motion — les animations CSS CSS s'exécutent même si l'utilisateur a demandé la réduction de mouvement. Correction : envelopper les règles d'animation .star dans @media (prefers-reduced-motion: no-preference) { ... }.
  • Le conteneur .starfield-container ne porte ni role, ni aria-label, ni aria-hidden dans le code source. Pour les lecteurs d'écran, ajouter role="img" aria-label="Champ d'étoiles animé" sur le conteneur et aria-hidden="true" sur les .star individuels.
  • Le texte .starfield-text utilise rgba(255,255,255,0.5) sur fond noir (#000), soit un ratio de contraste ≈ 3,2:1 — en dessous du seuil WCAG AA (4,5:1) pour du texte normal. Augmenter l'opacité à 0,85 ou plus si le texte est porteur d'information.
  • L'effet est purement décoratif et n'a aucune interaction clavier. Si le champ d'étoiles sert de fond à un CTA, s'assurer que le CTA est focusable et que son contraste est conforme.
  • Les <div class="star"> sont vides et sans sémantique — les lecteurs d'écran les ignorent naturellement, ce qui est le comportement attendu.

Compatibilité navigateur

Nécessite les transformations CSS 3D (perspective, translateZ, scale) et @keyframes — supportés dans tous les navigateurs modernes. Zéro dépendance JavaScript pour l'animation.

Chrome 88+✓ Complet
Firefox 87+✓ Complet
Safari 15+✓ Complet
Edge 88+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Sans support des transformations 3D (navigateurs très anciens), les étoiles restent visibles et statiques à leur position initiale — aucune erreur bloquante, la page reste fonctionnelle.

Le code

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

index.html — structure
<div class="starfield-container" id="starfieldContainer" role="img" aria-label="Champ d'étoiles animé — voyage spatial">
  <!-- Étoiles : chaque div.star reçoit left, top et animation-duration en inline style.
       Générer 80–200 éléments pour un résultat dense. -->
  <div class="star" style="left: 268px; top: 178px; animation-duration: 2.4s;"></div>
  <!-- … répéter pour chaque étoile … -->

  <!-- Overlay texte optionnel -->
  <span class="starfield-text">Texte optionnel</span>
</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
Nombre de div.star ~4 dans l'exemple minimal Ajouter des <div class="star"> dans le HTML (ou via JS à l'init) augmente la densité. 80–200 étoiles donnent un résultat dense et réaliste ; en dessous de 30, l'espace paraît vide.
animation-duration (inline) 1,7 s – 3,5 s (aléatoire par étoile) Durées courtes (1–2 s) = sensation vitesse lumière ; durées longues (4–6 s) = dérive lente. Plus la variance est grande, plus le champ semble tridimensionnel et naturel.
perspective sur .starfield-container 500px Réduire (300 px) accentue la distorsion et la vitesse perçue ; augmenter (800 px) donne un mouvement plus doux. Modifier dans le CSS, ligne perspective: 500px.
translateZ dans @keyframes starMove 0 → 500px Augmenter la valeur finale (ex. 800 px) prolonge la trajectoire visible — combiner avec une perspective plus haute pour maintenir la vitesse perçue.
width / height sur .star 2px × 2px 3–4 px pour des étoiles plus visibles ; 1 px pour un effet poussière cosmique. Ajouter box-shadow: 0 0 4px #fff crée un halo lumineux sans modifier la taille de l'élément.
background de .starfield-container #000 (noir pur) Un dégradé radial (radial-gradient(ellipse at center, #0d1b2a 0%, #000 70%)) donne une profondeur plus réaliste et évite le fond « trop plat ».
left / top des div.star Groupés près du centre (~W/2, ~H/2) Le point de fuite de la perspective est au centre du conteneur. Les étoiles distribuées dans un rayon de 0 à ~20 % de la diagonale autour du centre produisent un flux radial équilibré. Les concentrer davantage crée un tunnel étroit ; les disperser produit des traînées presque parallèles.

FAQ

L'animation est 100 % CSS (@keyframes, perspective, translateZ) — aucun JS n'est requis pour le mouvement. En revanche, les étoiles doivent exister dans le DOM. Elles sont soit codées en dur dans le HTML, soit générées par un court script d'initialisation qui crée des <div class="star"> avec des valeurs left, top et animation-duration aléatoires en style inline — une dizaine de lignes suffisent.
C'est l'effet de la perspective CSS : le point de fuite est par défaut au centre du conteneur (perspective-origin: 50% 50%). Les étoiles positionnées légèrement autour de ce centre paraissent se propulser vers les bords au fur et à mesure qu'elles avancent en Z, reproduisant exactement le warp speed d'un vaisseau spatial. Pour décaler le point de fuite, modifier perspective-origin sur .starfield-container.
Surcharger le style inline de chaque <div class="star"> : background: #a0d8ef pour une teinte bleue-froide, width: 3px; height: 3px pour agrandir, ou box-shadow: 0 0 3px 1px rgba(200,220,255,0.8) pour un halo. Des classes utilitaires (ex. star star--blue star--lg) permettent de définir des variantes dans la feuille CSS sans multiplier les attributs inline.