Cartes✨ Premium

Shape-Aware Shadows

box-shadow, bordure et outline épousent les polygones clip-path grâce à border-shape — étiquette, ticket, bulle — repli drop-shadow universel.

CSSborder-shapeCutting-edge

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

🎈

① Badge promotionnel sur une carte de tarification SaaS

QuandUne grille de pricing affiche un badge « -40% » ou « Nouveau » sur un plan tarifaire — flottant dans le coin de la carte ou attaché au bord.
PourquoiL'étiquette pointée exige une ombre cohérente avec sa flèche : clip-path seul laisse l'ombre rectangulaire dépasser de la forme. border-shape aligne l'ombre et la bordure sur le polygone exact, sans hack ni SVG supplémentaire.
Réglagesclip-path: polygon(22px 0, 100% 0, 100% 100%, 22px 100%, 0 50%), hover box-shadow: 0 24px 44px rgba(124,58,237,.5), border: 1.5px solid rgba(255,255,255,.35).
🎊

② Bulles de témoignages sur une page de vente

QuandUne section d'avis clients affiche des bulles de chat avec queue directionnelle — le contenu et le rendu visuel doivent tenir aussi bien sur fond sombre que clair.
PourquoiLa queue de bulle est taillée par clip-path ; sans border-shape, l'ombre rectangulaire trahit la forme. Avec border-shape, l'ombre épouse la queue et la carte ressemble à une vraie bulle de messagerie.
Réglagesclip-path: polygon(0 0, 100% 0, 100% 78%, 34% 78%, 18% 100%, 22% 78%, 0 78%), background: linear-gradient(160deg, #14b8a6, #0e7490), box-shadow: 0 10px 26px rgba(0,0,0,.55).

③ Ticket VIP en hero d'un site d'événements

QuandLa page d'accueil d'un concert, festival ou conférence présente le ticket stylisé en grand format — l'encoche latérale marque la séparation souche / corps du billet.
PourquoiLes encoches sont créées par clip-path ; border-shape fait suivre bordure et box-shadow les demi-cercles d'encoche, rendant le ticket visuellement fidèle à un vrai billet et propre au survol.
Réglagesclip-path: polygon(0 0, 100% 0, 100% 38%, 96% 50%, 100% 62%, 100% 100%, 0 100%, 0 62%, 4% 50%, 0 38%), box-shadow: 0 12px 36px rgba(43,58,143,.6), border: 1.5px solid rgba(255,255,255,.22).

Comment ça marche

Problème classique de clip-path : la découpe visuellement parfaite, mais box-shadow et border restent rectangulaires — l'ombre dépasse les bords découpés ou reste invisible dans les zones retirées. border-shape corrige cela en redéfinissant le modèle de boîte CSS : la bordure, l'ombre et l'outline suivent le polygone déclaré comme si la forme taillée était la boîte elle-même.

L'effet définit trois formes via clip-path: polygon(…) sur les variantes .bsc-card--tag, .bsc-card--ticket et .bsc-card--bubble. Dans les navigateurs qui supportent la propriété — détectés par @supports (border-shape: polygon(…))clip-path est annulé et remplacé par border-shape avec le même polygone. border et box-shadow suivent alors la géométrie exacte : liseré sur la flèche de l'étiquette, ombre épousant les encoches du ticket, shadow sous la queue de la bulle.

Le repli est traité en base sur .bsc-card : filter: drop-shadow() suit déjà la découpe clip-path nativement dans tous les navigateurs. Dans le bloc @supports, filter est annulé (filter: none) pour laisser place au box-shadow natif — transition propre, sans double ombre. Aucune erreur JS, aucune dégradation visuelle notable sur Firefox ou Safari.

Le JS câblé sur #bscTag démontre la mécanique en temps réel : un clic alterne entre trois polygones dans le tableau shapes[] (pointe gauche, pointe droite, rectangle) et met à jour soit clipPath soit borderShape selon le support détecté. L'ombre et la bordure recalculent leur géométrie immédiatement — ce qui est impossible à obtenir avec clip-path seul.

Accessibilité

  • prefers-reduced-motion : présent dans le CSS — transition: none et transform: none au hover annulent toute animation quand l'OS signale une préférence réduite.
  • Le bouton #bscTag est un <button> natif avec aria-label="Carte étiquette — cliquer pour changer de forme" — activable au clavier (Entrée/Espace), dans le flux de tabulation normal.
  • :focus-visible applique un outline violet 2px solid #a78bfa avec outline-offset: 4px sur tous les éléments .bsc-card focusables.
  • Contraste texte : blanc sur le dégradé violet de l'étiquette (#7c3aed → #db2777) atteint un ratio ≥ 5,5:1 — conforme WCAG AA.
  • Les variantes ticket et bulle sont des <div> non interactifs — aucun role ni tabindex supplémentaire n'est nécessaire : seule l'étiquette (bouton natif) est interactive.

Compatibilité navigateur

border-shape est une propriété CSS cutting-edge détectée par @supports. Le repli drop-shadow + clip-path couvre tous les navigateurs modernes sans erreur.

Chrome 135+✓ Complet (border-shape)
Firefox 130+✓ Repli drop-shadow
Safari 18+✓ Repli drop-shadow
Edge 135+✓ Complet (border-shape)
Mobile iOS✓ Repli drop-shadow
Android Chrome✓ Complet (border-shape)

filter: drop-shadow() sur .bsc-card suit déjà le contour clip-path nativement. Annulé uniquement dans le bloc @supportsbox-shadow prend le relais — les formes restent visuellement propres sur tout navigateur sans border-shape.

Le code

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

index.html — structure
<div class="demo-preview">
  <div class="bsc-scene">

    <!-- Étiquette pointée — clic → cycle de formes (bscTag requis) -->
    <button class="bsc-card bsc-card--tag" id="bscTag" type="button"
            aria-label="Carte étiquette — cliquer pour changer de forme">
      <span class="bsc-price">-40%</span>
      <span class="bsc-label">Offre d'été</span>
    </button>

    <!-- Ticket à encoches latérales -->
    <div class="bsc-card bsc-card--ticket">
      <div class="bsc-ticket-main">
        CONCERT
        <span>Rangée F · Siège 12</span>
      </div>
      <div class="bsc-ticket-stub">A-12</div>
    </div>

    <!-- Bulle de chat avec queue en bas -->
    <div class="bsc-card bsc-card--bubble">
      <p>Votre texte ici.</p>
    </div>

  </div>
</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
clip-path / border-shape (polygone) polygon spécifique à chaque variante Définissez votre forme dans clip-path (repli) et copiez la même valeur dans border-shape (@supports). Les deux doivent rester synchronisés pour un rendu cohérent.
background: linear-gradient(…) violet/rose — bleu/marine — teal Chaque variante a son propre gradient. Remplacez les stops de couleur pour votre palette brand sans toucher à la géométrie.
filter: drop-shadow(…) (base) 0 10px 22px rgba(0,0,0,.55) Ombre du repli sur .bsc-card (navigateurs sans border-shape). Ajustez offset, flou et couleur librement.
box-shadow (@supports) 0 10px 26px rgba(0,0,0,.55) + glow hover violet Ombre native dans les navigateurs avec border-shape. Indépendant de filter ; peut prendre une couleur teintée pour un glow brand au hover.
border (@supports) 1.5px solid rgba(255,255,255,.22–.35) Bordure visible uniquement avec border-shape (sinon clip-path la coupe). L'opacité diffère par variante : 0,35 étiquette, 0,22 ticket, 0,30 bulle.
shapes[] (JS, tableau ~ligne 7) 3 polygones : pointe gauche, pointe droite, rectangle Formes cyclées au clic sur #bscTag. Ajoutez ou retirez des polygones pour enrichir la démo ou réduire à une seule forme fixe.
transition (hover) .35s cubic-bezier(.2,.9,.3,1.4) Durée et easing du translateY(-6px) et du changement d'ombre. Mettez à 0 dans les contextes où l'animation n'est pas souhaitée.

FAQ

Avec clip-path, filter: drop-shadow suit déjà la découpe — c'est la solution de repli. Mais border et outline restent rectangulaires (clip-path les coupe simplement), et box-shadow n'est pas disponible. border-shape redéfinit le modèle de boîte : border, outline et box-shadow (avec support multi-couche, inset et couleur) suivent tous la géométrie du polygone.
Définissez votre géométrie dans clip-path: polygon(…) sur la variante de carte, puis copiez exactement la même valeur dans border-shape à l'intérieur du bloc @supports. Le JS démo synchronise aussi ce polygone dans le tableau shapes[]. Pour dessiner visuellement les coordonnées, utilisez Firefox DevTools (éditeur clip-path intégré) ou bennettfeely.com/clippy/.
Oui. Le CSS de base applique filter: drop-shadow() sur .bsc-card et clip-path sur chaque variante — combinaison supportée dans tous les navigateurs modernes. Le bloc @supports améliore progressivement l'expérience (bordure native + box-shadow) sans jamais casser la version de repli. L'effet reste visuellement propre dans Firefox et Safari.