Transitions✨ Premium

Flip Transition

Carte à deux faces : l'intérieur tourne de 180° autour de l'axe vertical en 0,8 s, en vraie 3D (preserve-3d, perspective de 800 px), et le verso apparaît au même endroit, à la même taille que le recto. CSS + 0,9 Ko de JavaScript, clic, Entrée ou Espace, face d'arrivée directe si l'utilisateur réduit les animations.

CSS3DFlip

Mis à jour le

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

3 exemples d'usage

Recto puis verso d'une carte de visite — configurateur d'une imprimerie en ligne — Flip Transition exemple 1

① Recto puis verso d'une carte de visite — configurateur d'une imprimerie en ligne

QuandClaire Dumoulin, ébéniste, relit ses cartes avant d'en commander 250 : elle touche « Verso » et la carte se retourne, du recto avec son nom et son logo au verso avec le QR code et l'adresse de l'atelier.
PourquoiLa carte pivote sur elle-même : le client voit le dos du même carton, à la même taille, comme s'il le retournait entre ses doigts.
RéglagesCarte aux proportions 85 × 55 (330 × 213 px), perspective portée à 1 000 px pour une rotation moins déformée, coins de 6 px et ombre portée sur un fond de bureau ; boutons Recto / Verso sous la carte qui demandent la face voulue et suivent l'état.
Carte d'embarquement vers consignes bagages — appli d'une compagnie aérienne régionale — Flip Transition exemple 2

② Carte d'embarquement vers consignes bagages — appli d'une compagnie aérienne régionale

QuandÀ l'aéroport de Caen, L. Garnier fait la queue avec sa valise cabine et touche « Porte et bagages » : la carte d'embarquement se retourne sur la porte 4, la fermeture à 7 h 40 et la taille de bagage autorisée.
PourquoiLe verso reste à un geste du QR code : on retourne la carte, on ne quitte pas l'écran.
RéglagesCarte de 330 × 208 px, recto blanc avec talon détachable en pointillés et QR code, verso bleu de la compagnie avec porte et heure de fermeture en grand ; boutons « Carte » et « Porte et bagages ».
Photo du monument vers énigme au dos — jeu de piste d'un office de tourisme — Flip Transition exemple 3

③ Photo du monument vers énigme au dos — jeu de piste d'un office de tourisme

QuandArrivée au pied du beffroi, une famille touche « Retourner » sur la carte de l'étape 3 : la photo du monument cède la place à l'énigme qui donne le numéro de la rue suivante.
PourquoiLe retournement en 3D reproduit les cartes papier du jeu de piste : la photo cache la question.
RéglagesCarte presque carrée (236 × 222 px) à bord blanc de 6 px comme un tirage photo ; recto illustré avec légende, verso en papier crème avec l'énigme en serif ; bouton « Retourner » et champ de réponse sous la carte.

Comment ça marche

La carte .flpt-card (200 × 200 px) porte la perspective (perspective: 800px) : c'est elle qui décide de la profondeur vue par l'œil. Dedans, .flpt-inner garde ses enfants dans l'espace 3D (transform-style: preserve-3d) et porte la transition transform .8s cubic-bezier(.4, 0, .2, 1). Les deux faces .flpt-face sont superposées en inset: 0 avec backface-visibility: hidden (et sa forme -webkit-) : une face tournée dos à l'écran n'est pas dessinée. Le verso .flpt-back part déjà retourné (rotateY(180deg)) : au repos, on voit le recto.

Au basculement de .active, .flpt-inner tourne à rotateY(180deg) : le recto passe de dos et disparaît, le verso se retrouve face à l'écran. Mesuré dans Chromium 151 : 250 ms après le clic, la carte ne fait plus que 79 px de large à l'écran (95 px dans Firefox 153), presque de profil ; à 1,1 s elle a fait son demi-tour. Contrôle par capture d'écran au centre de la carte, dans Chromium, Firefox et WebKit 26.5 : couleur du recto au repos, couleur du verso après le clic, de nouveau le recto après le second clic — la face cachée n'apparaît jamais en miroir. L'état B tient tant qu'on ne rappuie pas ; le second appui retourne la carte dans l'autre sens.

Le script pose ou retire .active au clic, à Entrée ou à Espace sur chaque .flpt-card de la page, tient aria-pressed à jour et passe aria-hidden à la face tournée vers l'arrière. Les faces portent aussi une bascule de visibility retardée de 0,27 s, l'instant mesuré où la carte passe de profil (90°) : chaque face n'est dessinée que pendant sa moitié du demi-tour. C'est une ceinture de sécurité pour les moteurs qui n'appliquent pas backface-visibility à l'intérieur d'un preserve-3d — c'est le cas du WebKit de test de Playwright, qui sans elle montre le verso en miroir au repos. Tout est préfixé flpt-, rien n'est exposé sur window. La perspective est sur la carte et non sur la page : chaque carte garde son propre point de fuite, au centre d'elle-même, même alignée avec d'autres. Une variante qui retourne plusieurs cartes en cascade existe aussi dans la catégorie.

Accessibilité

  • Mouvement réduit : sous prefers-reduced-motion: reduce, la rotation est retirée et la face d'arrivée s'affiche aussitôt (mesuré à 60 ms dans Chromium et Firefox : rotation déjà à 180°). Une rotation 3D est un mouvement ample, souvent mal supporté par les personnes sujettes au vertige.
  • Clavier et lecteurs d'écran : la carte porte role="button", tabindex="0" et aria-pressed ; Entrée et Espace la retournent comme un clic (mesuré). La face arrière reçoit aria-hidden="true" : le lecteur d'écran lit la face visible seulement. Contour de 2 px au focus clavier.
  • Indiquer qu'il y a un verso : rien ne dit qu'une carte se retourne. Gardez une mention (« Voir le verso », une icône de retournement) ou des boutons Recto / Verso à côté.
  • Ne pas mettre de lien dans la face cachée sans le retirer du parcours clavier : ajoutez inert à la face arrière tant qu'elle est de dos, sinon Tab peut s'y arrêter sur un élément invisible.

Compatibilité navigateur

CSS 3D (perspective, transform-style: preserve-3d, backface-visibility avec préfixe -webkit-, rotateY) + 0,9 Ko de JavaScript, aucune dépendance. Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : rotation, bonne face vérifiée par capture d'écran au repos, après le clic et après le retour, état B tenu ; clavier et mouvement réduit mesurés dans Chromium et Firefox. Le WebKit de test n'applique pas backface-visibility sous preserve-3d : c'est la bascule de visibility du code qui y garde le recto propre. Safari réel n'a pas été mesuré ; vérifiez sur un iPhone avant une mise en ligne qui compte.

Chrome 87+✓ Complet
Firefox 66+✓ Complet
Safari 14.1+✓ Complet (moteur WebKit mesuré, Safari réel non testé)
Edge 87+✓ Complet
Mobile iOS 14.5+✓ Complet (moteur WebKit mesuré, Safari réel non testé)
Android Chrome 87+✓ Complet

Sans JavaScript, le recto reste affiché. Sans prise en charge de la 3D, la carte bascule d'une face à l'autre sans rotation visible, grâce à la bascule de visibility. Sans inset, écrivez top: 0; right: 0; bottom: 0; left: 0 sur .flpt-face.

Le code

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

index.html — structure
<div class="flpt-stage">
  <div class="flpt-card" role="button" tabindex="0" aria-pressed="false">
    <div class="flpt-inner">
      <div class="flpt-face flpt-front">…</div>
      <div class="flpt-face flpt-back" aria-hidden="true">…</div>
    </div>
  </div>
  <span class="flpt-hint">…</span>
</div>
Débloquer le code complet — 9,90 € TTC/mois

Le code complet HTML + CSS + JS de Flip Transition, 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 (CSS — perspective de .flpt-card) 800 px Plus la valeur est petite, plus la carte semble venir vers vous en tournant : 500 px donne un effet marqué, 1 200 px une rotation presque plate. Prenez environ 3 à 4 fois la largeur de la carte.
Axe (CSS — rotateY) axe vertical rotateX(180deg) sur .flpt-inner et sur .flpt-back pour retourner la carte de haut en bas, comme un calendrier de bureau.
Durée et courbe (CSS — transition de .flpt-inner) 0,8 s, cubic-bezier(.4, 0, .2, 1) 0,6 s pour un geste vif ; cubic-bezier(.3, 1.4, .5, 1) ajoute un léger dépassement à l'arrivée. Changez aussi le délai de visibility (0,27 s, règle .flpt-front, .flpt-back), calé sur l'instant où la carte passe de profil : 0,2 s pour 0,6 s, 0,1 s avec la courbe à rebond ; sinon une face apparaît de dos pendant 50 à 150 ms.
Taille de la carte (CSS — .flpt-card) 200 × 200 px Donnez-lui les proportions de l'objet réel : 340 × 214 px pour une carte bancaire ou de visite. Les deux faces suivent, elles sont en inset: 0.
Faces (CSS — .flpt-front, .flpt-back) dégradé indigo et dégradé brique Gardez des fonds opaques sur les deux faces ; un fond transparent laisserait voir l'autre face pendant la rotation.

FAQ

perspective sur le parent fixe un point de vue commun à tout ce qu'il contient : la carte tourne devant un œil immobile, et ses deux faces, dans le même espace 3D grâce à preserve-3d, se déforment ensemble. Mettre perspective() dans le transform de l'élément qui tourne marche aussi pour un seul élément, mais change le point de vue à chaque image de l'animation.
Oui, en CSS seul, avec trois règles : .flpt-card:hover .flpt-inner { transform: rotateY(180deg) }, .flpt-card:hover .flpt-front { visibility: hidden } et .flpt-card:hover .flpt-back { visibility: visible }. Les deux dernières reprennent pour le survol la bascule de visibility que le code applique à .active : sans elles, la carte paraît vide dans Chromium et montre son recto en miroir dans Firefox et WebKit (avec elles, verso correct dans les trois, mesuré). Mais au doigt, le survol n'existe pas et un appui laisse souvent la carte bloquée de dos ; gardez le clic (ou les deux) dès que le verso contient une information utile.
Oui : les deux faces sont dans le HTML, seule leur orientation change. Le texte du verso est indexé et reste lisible si le CSS ne charge pas (les faces s'affichent alors l'une sous l'autre).