3D✨ Premium

Folding Panel

Un panneau de 200 × 120 px coupé en deux : la moitié haute, comme un rabat, bascule vers vous autour de la ligne centrale en 0,6 s et s'efface à mi-course, découvrant une moitié magenta cachée dessous ; la moitié basse ne bouge pas. Survol, Tab ou toucher le soulèvent, sans JavaScript ; sans rotation (le rabat s'efface en fondu) si l'utilisateur réduit les animations.

CSS3DFold

Mis à jour le

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

3 exemples d'usage

Code du boîtier à clés sous le rabat — page d'arrivée autonome d'un gîte rural — Folding Panel exemple 1

① Code du boîtier à clés sous le rabat — page d'arrivée autonome d'un gîte rural

QuandPage « Bienvenue au Gîte des Tilleuls ! » ouverte par le voyageur à son arrivée : à gauche le boîtier dessiné, au centre le panneau (« Boîtier à gauche de la porte » en bas, « Survolez pour voir le code » sur le rabat), à droite le Wi-Fi, le parking et l'heure de départ. Sous le rabat : « Code : 4 7 1 9 ».
PourquoiLe code reste couvert tant qu'on ne le demande pas, comme une enveloppe qu'on soulève ; la consigne utile (où est le boîtier) reste visible dessous.
RéglagesPanneau gardé à 200 × 120 px ; rabat papier crème #fdfbf4 → #efe9d8, moitié cachée vert sombre #3f5a2e avec le code en 24 px espacé, moitié basse beige. Le panneau est hors de la trajectoire de la capture : la scène soulève le rabat d'elle-même en boucle (même transformation que le survol) et s'arrête au premier clic ou focus réel.
Numéro du vestiaire sous le rabat du ticket — appli d'une salle de spectacle — Folding Panel exemple 2

② Numéro du vestiaire sous le rabat du ticket — appli d'une salle de spectacle

QuandTicket de vestiaire numérique, ce soir à 20 h 30 : en bas « Manteau déposé à 20 h 12 · Vestiaire B », sur le rabat « Afficher mon numéro ». Le rabat se lève et découvre « N° 238 » en grand, à montrer à la sortie.
PourquoiLe geste de soulever un rabat reprend celui du ticket papier plié ; le numéro apparaît sans ouvrir une autre page.
RéglagesPanneau agrandi à 330 × 200 px, coins de 16 px ; rabat bordeaux #8e1f35 → #6f1628, moitié cachée dorée #f4d58d → #e2b75c avec le numéro en 46 px, moitié basse ivoire bordée d'un pointillé de ticket ; transition-delay: .35s sur la règle de survol, pour ne pas lever le rabat au simple passage de la souris.
Conseils d'entretien sous le rabat de l'étiquette — fiche produit d'une marque de linge en lin — Folding Panel exemple 3

③ Conseils d'entretien sous le rabat de l'étiquette — fiche produit d'une marque de linge en lin

QuandFiche du torchon en lin lavé : le linge plié à gauche, le prix et le bouton d'ajout au panier à droite, et au centre l'étiquette cousue « 100 % lin lavé — fabriqué en Normandie ». Son rabat « Entretien » se lève sur « 40 °C · séchage à plat · repassage humide ».
PourquoiC'est le geste réel de l'étiquette cousue qu'on retourne : une moitié reste fixe, l'autre se soulève.
RéglagesPanneau de 180 × 120 px, coins de 6 px ; texture de lin en repeating-linear-gradient et couture dessinée par une ombre intérieure (box-shadow: inset) ; moitié cachée indigo #2f4d73. Hors de la trajectoire de la capture : la scène soulève le rabat d'elle-même en boucle.

Comment ça marche

La racine .fx-0005-root (fond #0a0a0f, 300 px de haut au minimum) centre un cadre .fold-container de 200 × 120 px, avec perspective: 800px et tabindex="0". Dedans, .fold-panel (transform-style: preserve-3d) empile trois blocs en position: absolute. Dans l'ordre du HTML : .fold-reveal, la moitié haute cachée (dégradé #d946ef → #a855f7) ; .fold-top, le rabat qui la couvre (dégradé #6366f1 → #4f46e5), peint par-dessus parce qu'il vient après ; .fold-bottom, la moitié basse fixe (dégradé #4f46e5 → #3730a3).

Le rabat tourne autour de son bord bas (transform-origin: center bottom), c'est-à-dire la ligne centrale du panneau. Au survol du cadre, ou quand il a le focus (:focus-within), il reçoit rotateX(-180deg) en 0,6 s : son bord haut vient vers vous et descend. Il a backface-visibility: hidden ; il disparaît donc dès qu'il dépasse la verticale, vers 0,18 s (181 ms mesurés dans Chromium 151), et finit sa course invisible, couché sur la moitié basse. On voit le rabat se lever vers soi puis s'effacer, et la moitié cachée apparaître à sa place.

Pourquoi l'envers est masqué : sans backface-visibility: hidden, le dos du rabat resterait affiché une fois retourné, couché sur la moitié basse, avec son texte à l'envers par-dessus le texte fixe. Pourquoi le survol est sur le cadre : le rabat change de forme pendant qu'il tourne (il n'est plus qu'un trait à 90°) ; le cadre, lui, garde une zone fixe de 200 × 120 px et le panneau ne se referme pas tant que le pointeur reste dessus.

Accessibilité

  • Clavier et toucher : le cadre a tabindex="0" et la règle :hover est doublée par :focus-within. Tab soulève le rabat, Tab suivant le referme ; un anneau de 2 px #a5b4fc (:focus-visible) marque le focus au clavier. Au doigt, un toucher le soulève, un toucher ailleurs le referme. Mesuré dans Chromium 151, Firefox 153 et WebKit 26. Un clic à la souris donne aussi le focus : le rabat reste levé jusqu'au clic suivant ailleurs.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, un bloc limité à .fx-0005-root retire la bascule (transform calculé : none) ; le rabat s'efface en fondu de 0,3 s (opacité 0) et laisse lire la moitié cachée.
  • Ce que le rabat cache : il cache à l'écran, pas dans la page. Le texte de .fold-reveal est dans le HTML, lu en premier par les lecteurs d'écran (il vient avant le rabat) et visible dans le code source. Parfait pour un numéro ou un code qui appartient déjà à la personne qui regarde ; jamais pour une donnée qu'il faut vraiment protéger.
  • Contraste : texte blanc de 16 px en demi-gras. Rabat : 4,47:1 à 6,29:1 ; moitié basse : 6,29:1 à 9,93:1 ; moitié cachée : 3,46:1 à 3,96:1, sous le seuil de 4,5:1. Foncez la moitié cachée (par exemple #c026d3 → #7c3aed, 4,71:1 et 5,70:1) si elle porte une information.

Compatibilité navigateur

CSS seul (perspective, transform-style: preserve-3d, backface-visibility, :focus-within, :focus-visible), aucun JavaScript, aucune dépendance. Mesuré dans Chromium 151 et Firefox 153 : même bascule, même disparition à mi-course, deux copies indépendantes sur une page, fondu sans bascule sous mouvement réduit. Le WebKit de Playwright (26.5) aplatit toute 3D CSS, même un cube de référence : focus et toucher y sont mesurés, le rendu 3D n'a pas été vérifié sur un vrai Safari.

Chrome 86+✓ Complet
Firefox 85+✓ Complet
Safari 15.4+✓ Focus et toucher mesurés sur WebKit ; rendu 3D non vérifié sur un vrai Safari
Edge 86+✓ Complet
Mobile iOS 15.4+✓ Non vérifié sur un vrai iPhone
Android Chrome✓ Complet, au toucher

Sans transformations 3D, le rabat ne bouge pas et couvre toujours la moitié cachée. Dans Safari avant 15.4, ajoutez -webkit-backface-visibility: hidden au rabat, sinon son dos reste affiché à l'envers sur la moitié basse. Sans :focus-visible, c'est le contour de focus par défaut qui s'affiche.

Le code

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

index.html — structure
<div class="fx-0005-root">
  <div class="demo-3d">
    <div class="fold-container" tabindex="0">
      <div class="fold-panel">
        <div class="fold-reveal">… caché sous le rabat …</div>
        <div class="fold-top">… rabat …</div>
        <div class="fold-bottom">… moitié fixe …</div>
      </div>
    </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
Taille (CSS — width et height de .fold-container) 200 × 120 px Les trois blocs font 100 % de large et 50 % de haut : ils suivent le cadre. Au-delà de 300 px de haut, montez aussi la perspective (1 200 px) pour garder une bascule naturelle.
Perspective (CSS — perspective de .fold-container) 800px Plus petite, le bord du rabat grossit davantage en venant vers vous (500px : effet marqué) ; plus grande, la bascule s'aplatit.
Durée (CSS — transition de .fold-top) .6s (courbe ease) Le rabat disparaît vers 30 % de la durée, quand il passe la verticale. 1s laisse le temps de voir le geste ; .4s fait un dévoilement sec.
Sens de la bascule (CSS — rotateX(-180deg) de la règle de survol) −180° : le rabat vient vers vous rotateX(180deg) le fait partir vers l'arrière, dans l'écran : un couvercle qui s'ouvre plutôt qu'une étiquette qu'on soulève.
Hauteur du rabat (CSS — height de .fold-top, .fold-reveal et .fold-bottom) 50 % chacun Pour un rabat d'un tiers, mettez 33 % au rabat et à la moitié cachée, 67 % à la partie fixe : le rabat tourne toujours sur son bord bas.
Couleurs et anneau de focus (CSS — dégradés des trois blocs, :focus-visible) #6366f1 → #4f46e5, #d946ef → #a855f7, #4f46e5 → #3730a3, anneau #a5b4fc Changez librement les dégradés ; gardez la moitié cachée nettement différente du rabat, c'est elle qu'on découvre. Sur une page blanche, prenez un anneau foncé.

FAQ

Il a backface-visibility: hidden : passé la verticale, c'est son dos qui ferait face à l'écran, et ce dos n'est pas affiché. Sans cette règle, on verrait le rabat couché sur la moitié basse avec son texte à l'envers. Pour un rabat qui se pose visiblement, ajoutez-lui un enfant en position: absolute; inset: 0 tourné de 180° (transform: rotateX(180deg)), avec son propre fond et backface-visibility: hidden, donnez transform-style: preserve-3d au rabat et arrêtez sa course à rotateX(-178deg) : à −180° pile, son dos serait dans le même plan que la moitié basse et passerait dessous (mesuré dans Chromium et Firefox). Son dos vient alors couvrir la moitié basse.
Seulement à l'écran. Il est dans le HTML, les lecteurs d'écran le lisent (en premier, puisqu'il vient avant le rabat dans le code) et n'importe qui peut l'afficher en regardant le code de la page. Utilisez le rabat pour présenter une information à la personne qui en a besoin (son numéro, son code d'accès), pas pour la protéger.
Folding Panel soulève une moitié et découvre ce qu'elle cachait. Fold Effect Card ne cache rien : ses deux moitiés se plient de 30° autour de la ligne centrale, comme une carte qu'on marque d'un pli. Card Flip 3D retourne la carte entière pour montrer son verso. Le rabat convient à un détail sous une étiquette, le pli à un objet en papier, le retournement à deux faces de même importance.