Cartes✨ Premium

Holographic Card 3D

Carte holographique CSS pur : tilt 3D au survol, irisation arc-en-ciel via conic-gradient et mix-blend-mode — quatre couleurs réglables, zéro JavaScript.

CSS pur3DHolographic

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. Cartes comprend 41 effets, dont 6 gratuits. Découvrir la catégorie →

3 exemples d'usage

🎈

① Espace membre — La carte au centre du dashboard

QuandL'utilisateur connecté arrive sur son espace personnel : sa carte membre holographique occupe le bloc central, interactive à la souris.
PourquoiLa grande surface de la carte (300 × 420 px) et l'irisation au survol valorisent le statut premium sans aucun texte marketing supplémentaire — l'effet parle de lui-même.
Réglages--holo-c1: #7c3aed, --holo-c2: #06b6d4, --holo-c3: #f59e0b, --holo-c4: #10b981 pour une palette brand SaaS ; --holo-tilt: 10deg pour un basculement plus doux ; width 220 px pour s'intégrer dans un bloc de dashboard compact.
🎊

② Galerie de cartes — Marketplace de cartes à collectionner

QuandUne grille de cartes (NFT, jeu de cartes, Panini) présente ses items rares. La carte holographique signale les éditions limitées dans la liste.
PourquoiLe conic-gradient irisé reproduit visuellement le feuil holographique des vraies cartes Pokémon ou Topps Chrome — l'effet est immédiatement reconnu par les collectionneurs sans explication.
Réglages--holo-c1: #ff6b35, --holo-c2: #f72585, --holo-c3: #7209b7, --holo-c4: #4361ee (palette feu intense) ; --holo-intensity: 0.72 pour maximiser l'éclat ; width 180 px pour une vignette dans une grille 3 colonnes.

③ Landing premium — La carte-offre en vitrine

QuandLa section hero d'une landing page SaaS ou membership affiche physiquement la carte comme objet-symbole, flottant au centre de l'écran.
PourquoiLa carte holographique agit comme un artefact de désirabilité : l'internaute survole, la carte s'incline et brille — le geste crée une impression tactile de rareté avant même la lecture des avantages.
RéglagesCouleurs brand sur les 4 variables --holo-c* ; --holo-tilt: 16deg pour un effet plus dramatique ; width 260 px pour une présence forte sur grand écran.

Comment ça marche

L'irisation repose entièrement sur le pseudo-élément ::after. Il superpose deux couches : un repeating-linear-gradient(0deg, …) trace des lignes de balayage horizontales (1 px blanc à 7 % d'opacité tous les 3 px, imitant le grain du feuil holographique) et un conic-gradient(from 0deg at 50% 50%, c1, c2, c3, c4, c1) cycling les quatre couleurs configurables (--holo-c1 à --holo-c4). Les deux couches s'appliquent en mix-blend-mode: overlay sur le fond sombre de la carte — opacité 0 au repos, elle monte à calc(--holo-intensity * 0.9) sur :hover.

Le tilt 3D est géré en CSS seul. .holo-stage établit une perspective: 1100px. Sur :hover, la carte applique rotateX(calc(var(--holo-tilt)*-1)) rotateY(var(--holo-tilt)) — un basculement symétrique de ±--holo-tilt (12° par défaut) en avant et sur le côté. La transition cubic-bezier(.2, .8, .2, 1) donne un rebond léger. will-change: transform délègue le compositing au GPU.

Le contenu (.holo-content) utilise translateZ(40px) avec transform-style: preserve-3d sur la carte parente : il paraît visuellement levé devant la surface irisée, amplifiant l'impression de profondeur et de relief.

La puce EMV dorée (.holo-chip) est un linear-gradient(135deg, #f4d98b, #b9882f 60%, #f4d98b) avec des ombres intérieure et extérieure simulant le métal brossé. Note : le CSS référence animation: holo-shift et mix-blend-mode: color-dodge sur ::before, mais les @keyframes holo-shift et l'image de fond correspondante ne figurent pas dans le code exporté — l'animation de déplacement est inactive ; le rendu holographique complet repose sur la transition :hover de ::after.

Accessibilité

  • prefers-reduced-motion absent : aucune media query ne désactive le tilt ou la transition. Pour les utilisateurs sensibles au mouvement, ajouter @media (prefers-reduced-motion: reduce) { .holo-card { transition: none } .holo-card::after { transition: none } }.
  • .holo-card porte tabindex="0" — la carte est focusable au clavier. Aucun style :focus-visible n'est défini : ajouter .holo-card:focus-visible { outline: 2px solid var(--holo-c3); outline-offset: 4px; } pour la conformité clavier.
  • Aucun role ni aria-label sur la carte. Pour un usage sémantique, ajouter role="img" et aria-label décrivant le contenu (ex. « Carte membre holographique Effect.Labs »).
  • Contraste du texte : blanc (#fff) et gris clair (rgba(255,255,255,0.6)) sur fond sombre (#12121f) — ratio texte principal ≥ 15:1, WCAG AAA.
  • Aucun JavaScript actif — pas de piège de clavier, pas de comportement interactif au-delà du survol CSS.

Compatibilité navigateur

Le facteur limitant est la conjonction de conic-gradient (Chrome 69+, Firefox 83+, Safari 12.1+) et de aspect-ratio (Chrome 88+, Firefox 89+, Safari 15+).

Chrome 88+✓ Complet
Firefox 89+✓ Complet
Safari 15+✓ Complet
Edge 88+✓ Complet
Mobile iOS 15+✓ Hover CSS absent, carte statique
Android Chrome✓ Hover CSS absent, carte statique

Si conic-gradient n'est pas supporté, ::after n'affiche rien (fond transparent) ; la carte reste fonctionnelle avec son fond sombre et la puce dorée. Sur mobile, l'absence de :hover fige la carte dans son état de repos — les couches irisées restent invisibles.

Le code

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

index.html — structure
<div class="holo-stage">
  <article class="holo-card" tabindex="0">
    <div class="holo-content">
      <div class="holo-chip"></div>
      <div>
        <h3>VOTRE TITRE</h3>
        <p class="holo-sub">Sous-titre édition</p>
      </div>
      <div class="holo-num">0000 · 0000 · LABEL</div>
    </div>
  </article>
</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
--holo-c1 à --holo-c4 #ff2d75, #2de2ff, #b06bff, #ffe14d Les quatre couleurs du conic-gradient irisé (rose, cyan, violet, jaune). Redéfinissez-les sur .holo-card ou en style inline pour personnaliser chaque carte indépendamment.
--holo-intensity 0.55 Opacité maximale des couches irisées (::before et ::after). De 0.3 (subtil) à 0.85 (très prononcé). Dépasse 0.8 uniquement sur fond foncé.
--holo-tilt 12deg Angle de rotation 3D au survol (rotateX et rotateY). De 6deg (délicat) à 22deg (effet trading card exagéré).
--holo-speed 6s Durée du cycle d'animation holo-shift sur ::before. Sans effet dans le code exporté (keyframes manquants) — utile si vous ajoutez les @keyframes manuellement.
width sur .holo-card 300px Largeur de la carte. La hauteur suit automatiquement via aspect-ratio: 5/7 (420 px à 300 px). Réduisez à 160-220 px pour les vignettes de catalogue.
transition sur .holo-card .55s cubic-bezier(.2,.8,.2,1) Durée et courbe du tilt. Raccourcissez à .25s ease pour une réponse vive ; allongez à .9s pour un basculement cinématique.

FAQ

Oui, chaque .holo-card est autonome via ses propriétés CSS custom. Redéfinissez les variables en style inline ou via une classe : <article class="holo-card" style="--holo-c1:#7c3aed;--holo-c2:#06b6d4">. Aucun JavaScript ni identifiant unique requis — les instances ne se partagent aucun état.
Sur appareils tactiles, :hover CSS ne se déclenche pas de façon persistante. La carte reste dans son état de repos (fond sombre, puce dorée, texte). Pour activer l'effet au toucher, ajoutez un écouteur JS : card.addEventListener('touchstart', () => card.classList.toggle('is-active')) et définissez .holo-card.is-active avec les mêmes règles CSS que .holo-card:hover.
Le CSS prévoit animation: holo-shift var(--holo-speed) linear infinite sur ::before, mais les @keyframes holo-shift et le background-image de ::before ne figurent pas dans le JSON exporté. Pour l'activer, ajoutez à votre feuille de style : un background-image: conic-gradient(...) sur .holo-card::before et @keyframes holo-shift { from { background-position: 0% 50% } to { background-position: 100% 50% } }.