Distorsion✨ Premium

Hologram Projection

Un panneau cyan translucide qui flotte et bascule doucement, parcouru de fines lignes de balayage, avec un halo projeté dessous : un hologramme en CSS pur.

CSSSci-FiFloat

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Distorsion comprend 31 effets, dont 5 gratuits. Découvrir la catégorie →

3 exemples d'usage

Schéma du cœur en hologramme dans un atlas d'anatomie (Vesquiral) — Hologram Projection exemple 1

① Schéma du cœur en hologramme dans un atlas d'anatomie (Vesquiral)

QuandSur la fiche « Le cœur », le texte et la légende numérotée occupent la gauche ; à droite, le schéma tracé en traits cyan flotte dans le panneau, avec les mêmes numéros.
PourquoiLe panneau transforme une illustration plate en objet d'étude qui semble projeté devant l'élève, sans 3D réelle ni bibliothèque.
Réglages--hlp-w: 190px, --hlp-h: 214px, coins de 14 px, montée réduite à 8 px, schéma SVG en currentColor placé dans .hlp-panel, racine sans fond ni hauteur minimale.
Message d'une alliée dans un jeu de stratégie spatiale (Kessarion) — Hologram Projection exemple 2

② Message d'une alliée dans un jeu de stratégie spatiale (Kessarion)

QuandSur la carte stellaire, quelques instants après l'ordre de mouvement, un petit message « Renforts en route — 2 tours » s'affiche en hologramme vert dans le coin.
PourquoiLe message semble transmis par l'appareil du joueur ; il reste à l'écart de la carte et se remarque grâce à son flottement.
RéglagesPanneau de 228×72 px, couleur #7dffb0 et teintes vertes assorties, montée de 4 px, coins de 8 px. L'apparition après un délai est gérée par la page, pas par l'effet.
Lien « Entrer dans l'exposition » sur l'accueil d'un planétarium (Valmorgue) — Hologram Projection exemple 3

③ Lien « Entrer dans l'exposition » sur l'accueil d'un planétarium (Valmorgue)

QuandSous le titre de l'exposition, au centre d'un ciel étoilé, le lien principal est un hologramme en pilule qui flotte au-dessus de son halo.
PourquoiLe seul élément animé de la page indique où cliquer, dans le ton du lieu.
RéglagesClasse .hlp-panel sur un <a>, 250×58 px, coins de 29 px, bascule portée à 8°, montée de 6 px.

Comment ça marche

Le panneau .hlp-panel (200×200 px, coins de 10 px) est rempli d'un dégradé cyan qui passe de 10 % d'opacité en haut à 30 % en bas, bordé d'un trait cyan à 50 %. Son contenu est centré, en gras, couleur #0ff, avec une double lueur (text-shadow de 10 et 20 px).

L'animation hlpFloat le soulève de 10 px en 3 secondes tout en le faisant basculer de 5° vers l'arrière puis de 5° vers l'avant (rotateX). La perspective de 1 000 px posée sur .hlp-stage rend cette bascule visible.

Deux pseudo-éléments complètent l'illusion. ::before couvre le panneau de lignes horizontales d'1 px tous les 2 px, qui défilent en continu (cycle de 0,1 s). ::after dessine 50 px plus bas un halo ovale flou, comme la lumière du projecteur au sol ; il suit le panneau dans son mouvement.

Accessibilité

  • Texte réel : le contenu du panneau (« HOLO » par défaut) est du texte HTML, lu normalement. Une image ou un schéma placé dedans garde son propre texte alternatif.
  • Mouvement réduit : avec prefers-reduced-motion: reduce, le panneau reste à plat et immobile et les lignes de balayage s'arrêtent ; tout reste affiché (mesuré : 4 animations en boucle → 0 pour deux copies).
  • Pas de clignotement : les lignes de balayage sont très pâles (cyan à 10 %) ; leur défilement rapide produit un frémissement, pas un flash.
  • Lien ou bouton : la classe peut être posée sur un <a> ; il reçoit alors un contour de focus de la couleur de l'hologramme. Pour un message qui apparaît, ajoutez vous-même role="status".
  • Lisibilité : la lueur du texte élargit les lettres ; au-dessous de 13 px, réduisez-la dans votre CSS.

Compatibilité navigateur

CSS seul, aucun JavaScript. Mesuré dans Chromium 151 et Firefox 153 : 0 erreur, bascule 3D visible, deux copies indépendantes, rien qui déborde à 390 px. Dans le WebKit 26.5 de Playwright, le panneau flotte et les lignes défilent ; cet outil n'étant pas une référence fiable pour la 3D CSS, la bascule reste non vérifiée pour Safari.

Chrome 87+✓ Complet (mesuré)
Firefox 66+✓ Complet (mesuré)
Safari 14.1+✓ Non vérifié pour la bascule 3D (flottement et lignes mesurés dans WebKit)
Edge 87+✓ Complet (moteur Chromium)
Safari iOS 14.5+✓ Non vérifié pour la bascule 3D
Chrome Android 87+✓ Complet (moteur Chromium)

Sans transformations 3D, le panneau monte et descend sans basculer ; les lignes et le halo restent.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0266-root">
  <div class="hlp-stage">
    <div class="hlp-panel">HOLO</div>
  </div>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

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

Option / propriétéDéfautEffet
--hlp-w et --hlp-h 200px et 200px Taille du panneau ; 100% pour suivre le conteneur (jamais plus large que lui).
--hlp-color #0ff Couleur du texte, de sa lueur et du contour de focus.
--hlp-fill-top, --hlp-fill-bottom, --hlp-edge cyan à 10 %, 30 % et 50 % Dégradé du panneau et couleur de sa bordure : changez-les avec --hlp-color pour un hologramme vert ou ambre.
--hlp-lines et --hlp-floor cyan à 10 % et 30 % Couleur des lignes de balayage et du halo au sol.
--hlp-lift et --hlp-tilt 10px et 5deg Hauteur du flottement et angle de bascule.
--hlp-speed 3s Durée d'un flottement complet.
--hlp-radius 10px Arrondi des coins (la moitié de la hauteur pour une pilule).
--hlp-bg et --hlp-min-h #0a0a0f et 300px Fond et hauteur minimale de la racine ; transparent et 0 pour l'intégrer. Laissez environ 60 px sous le panneau pour le halo.

FAQ

Oui, tout contenu placé dans .hlp-panel est centré et flotte avec lui. Un SVG tracé en currentColor prend directement la couleur de l'hologramme.
Il est dessiné 50 px sous le panneau. Si le conteneur parent masque ce qui dépasse ou est trop court, le halo disparaît : gardez de la place sous le panneau ou retirez overflow: hidden du parent.
Oui, par les variables : --hlp-color pour le texte, puis les variantes transparentes de la même teinte pour le remplissage, la bordure, les lignes et le halo.