Cartes✨ Premium

Flip Card

Retournement 3D au survol en CSS pur — deux faces s'échangent avec un effet spring et zéro ligne de JavaScript.

CSS3DFlip

Mis à jour le

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

3 exemples d'usage

Carte membre d'équipe — page About ou portfolio — Flip Card exemple 1

① Carte membre d'équipe — page About ou portfolio

QuandSur une page /team ou /about, chaque carte passe de photo + nom + titre professionnel en face avant à biographie courte + liens réseaux sociaux en face arrière.
PourquoiLe retournement révèle les informations secondaires sans ouvrir de modale ni charger de nouvelle page — interaction mémorable et économe en espace vertical.
RéglagesDimensions 200×280 px (portrait), perspective: 900px, transition 0,7 s, border-radius: 16px, face avant fond de marque foncé, face arrière fond légèrement contrasté.
Flashcard d'apprentissage — app vocabulaire ou quiz — Flip Card exemple 2

② Flashcard d'apprentissage — app vocabulaire ou quiz

QuandDans une interface d'apprentissage, le terme ou la question s'affiche en face avant ; la définition ou la réponse se dévoile au survol (ou au clic avec une classe JS).
PourquoiLa métaphore de la flashcard papier rend l'interaction intuitive sans icône ni instruction — les utilisateurs retournent naturellement la carte pour vérifier leur réponse.
RéglagesFormat carré 260×260 px, typographie large (2rem front, 1rem back), perspective: 1200px, transition 0,6 s, cubic-bezier(.4,0,.2,1) pour un flip plus direct sans rebond.
Carte tarif interactive — section pricing d'une landing page — Flip Card exemple 3

③ Carte tarif interactive — section pricing d'une landing page

QuandChaque offre ou carte fonctionnalité de la section pricing révèle ses détails et son CTA en face arrière au survol, sans surcharger la face avant.
PourquoiLe retournement attire l'attention sur la carte explorée et signale qu'il y a plus à découvrir — meilleur engagement qu'une carte statique avec accordéon.
Réglagesperspective: 800px pour un effet dramatique, transition 0,9 s, largeur 260 px, face avant sobre (icône + nom du plan + prix), face arrière condensée (3 bullets + bouton CTA).

Comment ça marche

L'effet repose sur un contexte de projection 3D CSS : perspective: 1000px est posé sur le conteneur .card-flip-container, et transform-style: preserve-3d est appliqué à .card-flip. Cela crée un espace tridimensionnel dans lequel les faces enfants existent chacune sur leur propre plan Z, sans s'écraser l'une l'autre à l'écran.

La face arrière est pré-retournée à 180° dès le départ avec transform: rotateY(180deg), dos contre dos avec la face avant. La propriété backface-visibility: hidden sur les deux faces garantit que la face tournée loin de l'observateur reste invisible — c'est ce qui produit l'illusion d'une carte opaque à double face plutôt que d'une superposition transparente.

Au survol, .card-flip-container:hover .card-flip applique transform: rotateY(180deg) à l'assemblage — la face avant tourne et disparaît tandis que la face arrière, déjà pré-tournée, revient face à l'observateur. La transition cubic-bezier (.175, .885, .32, 1.275) produit un léger rebond (overshoot) au-delà de 180° avant de se stabiliser, ce qui donne le ressenti spring caractéristique.

L'effet est 100 % CSS, sans JavaScript. Aucun requestAnimationFrame, aucun écouteur d'événement, aucune dépendance externe — le navigateur délègue l'interpolation au moteur de compositing GPU. La durée de 0,8 s est un bon équilibre entre fluidité et réactivité perçue.

Accessibilité

  • prefers-reduced-motion : ABSENT du code — la transition tourne toujours, même si l'OS préfère réduire le mouvement. Correctif minimal : @media (prefers-reduced-motion: reduce) { .card-flip { transition: none; } }.
  • Déclencheur hover uniquement : la carte ne répond pas à la touche Tab ni à la navigation clavier dans l'état du code fourni. Ajouter .card-flip-container:focus-within .card-flip { transform: rotateY(180deg); } corrige ce point sans modifier le HTML.
  • Les faces .card-flip-front et .card-flip-back ne portent ni role ni aria-label dans le code de base — à enrichir selon le contenu (ex. role="group" aria-label="Carte équipe : face avant").
  • backface-visibility: hidden masque correctement la face tournée loin de l'observateur — aucun contenu fantôme n'est visible ni lu par les technologies d'assistance.
  • Le contraste du texte dépend du contenu ajouté : les gradients de fond fournis (indigo et rose) sont purement décoratifs ; les couleurs de texte superposées doivent respecter WCAG AA (ratio ≥ 4,5:1).

Compatibilité navigateur

Repose sur transform-style: preserve-3d et backface-visibility: hidden — supportés nativement dans tous les navigateurs modernes sans préfixe.

Chrome 80+✓ Complet
Firefox 80+✓ Complet
Safari 15+✓ Complet
Edge 80+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Sans support des transformations 3D CSS, la carte affiche uniquement la face avant à plat — aucune erreur, le contenu reste lisible.

Le code

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

index.html — structure
<div class="card-flip-container">
  <div class="card-flip">
    <div class="card-flip-front">Face avant</div>
    <div class="card-flip-back">Face arrière</div>
  </div>
</div>
Débloquer le code complet — 9,90 € TTC/mois

Le code complet HTML + CSS + JS de Flip Card, prêt à coller — et les 840 effets. Ou 299 € TTC une fois, accès à vie.

Personnaliser

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

Option / propriétéDéfautEffet
perspective (sur .card-flip-container) 1000px Profondeur du contexte 3D. 600 px = vue rapprochée dramatique, 2000 px = retournement quasi-plan. Réduire pour accentuer l'effet de profondeur.
transition-duration (sur .card-flip) 0.8s Durée du flip. 0,4 s = réactif et net, 1,2 s = cinématique et lent.
cubic-bezier (sur .card-flip) (.175,.885,.32,1.275) Courbe d'accélération. La valeur par défaut produit un rebond spring. Remplacez par ease-in-out pour un flip fluide sans overshoot.
rotateY / rotateX (sur :hover .card-flip et .card-flip-back) rotateY(180deg) Axe du retournement. rotateX(180deg) donne un flip vertical (haut vers bas). Modifiez les deux occurrences (hover et pre-rotation back) simultanément.
--radius-xl (variable CSS :root) 1rem Arrondi des coins des deux faces. 0 = carte rectangulaire nette, 50% = carte circulaire (portrait uniquement).
width / height (sur .card-flip-container) 280px / 180px Dimensions de la carte. Toute proportion fonctionne — portrait (200×280 px), carré (240×240 px) ou paysage (320×180 px).
background (sur .card-flip-front) linear-gradient(135deg,#6366f1,#8b5cf6) Couleur ou gradient de la face avant. Remplacez par votre palette brand ou une image avec background-image.
background (sur .card-flip-back) linear-gradient(135deg,#d946ef,#f43f5e) Couleur ou gradient de la face arrière. Différenciez clairement les deux faces pour que le retournement soit immédiatement lisible.

FAQ

Le code fourni déclenche uniquement sur :hover. Ajoutez au CSS : .card-flip-container:focus-within .card-flip { transform: rotateY(180deg); }. Un élément focusable (lien ou bouton) dans chaque face suffit à activer ce sélecteur — aucune modification du HTML de l'effet n'est nécessaire.
Ajoutez une classe utilitaire dans votre CSS : .card-flip-container.is-flipped .card-flip { transform: rotateY(180deg); }. Depuis votre script, basculez-la avec container.classList.toggle('is-flipped'). Le hover CSS peut coexister ou être supprimé. La transition joue dans les deux sens automatiquement.
Oui depuis Safari 15+. transform-style: preserve-3d et backface-visibility: hidden sont supportés nativement sans -webkit-. Si votre audience inclut Safari 14 ou antérieur, ajoutez -webkit-transform-style: preserve-3d et -webkit-backface-visibility: hidden en doublons.