Design

Maîtriser CSS clip-path : guide complet du Générateur Clip-Path

Apprenez à utiliser la propriété CSS clip-path pour créer des formes non-rectangulaires, des masques d'image, des séparateurs de sections et des transitions au survol. Polygon, circle, ellipse, inset et path() — expliqués avec des exemples pratiques et des conseils de performance.

13 min de lectureEguth

Les rectangles dominent le web. Chaque div, chaque image, chaque carte — tout se rend sous forme de boîte. C'est la géométrie par défaut du CSS, et la plupart des interfaces n'en sortent jamais.

La propriété CSS clip-path brise cette contrainte. Elle permet de définir des formes arbitraires qui découpent la zone visible d'un élément, ne révélant que la portion à l'intérieur de la forme. Triangles, pentagones, étoiles, courbes organiques — tout est réalisable avec une seule propriété CSS, sans wrappers SVG, sans hacks canvas, sans masques d'image préparés dans Photoshop.

Pourtant, clip-path reste l'une des propriétés les plus sous-utilisées en développement front-end. Les développeurs savent qu'elle existe, l'utilisent peut-être une fois pour un séparateur de section diagonal, puis passent à autre chose. Cet article va plus loin. Nous couvrirons chaque fonction clip-path, explorerons des applications créatives, aborderons la performance, et montrerons comment utiliser notre Générateur Clip-Path gratuit pour concevoir des formes visuellement et exporter du CSS prêt pour la production.

Comprendre la propriété clip-path

La propriété clip-path définit une région de découpe pour un élément. Tout ce qui se trouve à l'intérieur de la région est visible ; tout ce qui se trouve à l'extérieur est masqué — non seulement visuellement, mais aussi pour les tests de clic. Les clics et les survols ne sont détectés que sur la portion visible.

clip-path: polygon(50% 0%, 100% 100%, 0% 100%);

Cela crée un triangle. Le contenu de l'élément, son fond, ses bordures — tout est découpé pour s'inscrire dans le polygone à trois points. Le système de coordonnées est basé sur des pourcentages relatifs à la boîte englobante de l'élément, où 0% 0% est le coin supérieur gauche et 100% 100% est le coin inférieur droit.

Quand aucune découpe n'est appliquée, la propriété doit être définie sur none — ou simplement omise. Notre Générateur Clip-Path produit du CSS propre contenant uniquement la forme que vous avez conçue, prêt à être intégré dans votre feuille de style.

Les cinq fonctions clip-path

polygon()

Polygon est la fonction la plus polyvalente. Elle accepte une liste de paires de coordonnées séparées par des virgules, chacune définissant un sommet de la forme.

clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);

Cela crée un losange. Trois points font un triangle, quatre un quadrilatère, cinq un pentagone — il n'y a pas de limite supérieure. Vous pouvez définir des étoiles complexes, des flèches, des chevrons ou toute géométrie irrégulière imaginable.

Système de coordonnées : chaque paire est x% y%, relative à la largeur et la hauteur de l'élément. Vous pouvez aussi utiliser des unités absolues comme px ou rem, mais les pourcentages s'adaptent de manière responsive.

Cas d'usage courant : créer des mises en page de cartes non-rectangulaires, des séparateurs de sections angulaires ou des formes décoratives qui s'adaptent à n'importe quelle taille de conteneur. Le Générateur Clip-Path permet de déplacer visuellement les points du polygone et de voir le résultat en temps réel.

circle()

Circle découpe l'élément en un cercle parfait défini par un rayon et une position centrale optionnelle.

clip-path: circle(50% at 50% 50%);

La première valeur est le rayon — 50% crée un cercle qui remplit l'élément. Le mot-clé at spécifie le point central. Omettre la position centre par défaut l'élément.

clip-path: circle(40% at 30% 70%);

Cela décale le cercle vers le bas-gauche, créant un recadrage décentré qui peut produire des compositions dynamiques et éditoriales à partir d'images rectangulaires standard.

Cas d'usage courant : images d'avatar, photos de profil, et tout élément nécessitant un masque circulaire sans recourir à border-radius: 50%. La différence compte : border-radius arrondit les coins d'une boîte, tandis que clip-path: circle() supprime réellement tout ce qui se trouve hors du cercle du pipeline de rendu et de test de clic.

ellipse()

Ellipse est la cousine étirée de circle(). Elle accepte deux rayons — horizontal et vertical — plus un centre optionnel.

clip-path: ellipse(60% 40% at 50% 50%);

Cela crée un ovale orienté horizontalement. Le premier rayon contrôle l'étendue horizontale, le second l'étendue verticale.

clip-path: ellipse(35% 50% at 50% 50%);

Inversez les proportions et vous obtenez un ovale orienté verticalement. Les ellipses sont particulièrement efficaces pour créer des masques de viewport souples et organiques qui paraissent moins rigides que les polygones.

Cas d'usage courant : masques d'images hero, formes de fond décoratives et transitions visuelles entre sections de contenu. Des produits comme Guthly et WePlanify tirent parti du découpage elliptique pour créer des transitions fluides et brandées entre les régions d'interface.

inset()

Inset crée un rectangle (optionnellement avec des coins arrondis) en spécifiant la distance de découpe depuis chaque bord.

clip-path: inset(10% 20% 10% 20% round 16px);

Les quatre valeurs suivent l'ordre standard CSS : haut, droite, bas, gauche. Le mot-clé optionnel round ajoute un arrondi de type border-radius au rectangle découpé.

Cela peut sembler redondant avec le padding et l'overflow — mais inset() découpe le rendu lui-même, y compris les fonds et les bordures. C'est un clip géométrique véritable, pas un ajustement de mise en page.

clip-path: inset(5% 5% 5% 5% round 50%);

Avec round 50%, un rectangle inset devient un "squircle" ou une forme pilule, selon le ratio d'aspect de l'élément. C'est une technique populaire pour créer des formes arrondies lisses, à la manière d'Apple.

Cas d'usage courant : créer des conteneurs encochés ou biseautés, révéler du contenu progressivement avec des valeurs inset animées, et construire des éléments d'interface complexes sans wrappers supplémentaires.

path()

Path accepte une chaîne de chemin SVG, débloquant toute la puissance des courbes de Bézier et des arcs.

clip-path: path('M 0 0 L 100 0 L 100 80 Q 50 100 0 80 Z');

Cela crée un rectangle avec un bord inférieur courbé. La syntaxe est identique à l'attribut d du SVG, supportant toutes les commandes de chemin : M (déplacer), L (ligne), C (Bézier cubique), Q (Bézier quadratique), A (arc) et Z (fermer).

Limitation importante : path() utilise des coordonnées en pixels absolus, pas des pourcentages. Cela signifie que les clip-paths basés sur path ne s'adaptent pas de manière responsive avec l'élément. Pour les designs responsives, polygon() avec des coordonnées en pourcentage est généralement le meilleur choix.

Cas d'usage courant : formes décoratives complexes comme des vagues, des blobs et des courbes organiques qui ne peuvent pas être approximées par des sommets de polygone. Le compromis est la responsivité contre la complexité géométrique.

Applications créatives

Séparateurs de sections angulaires

L'omniprésent séparateur de section en ligne droite est sûr mais oubliable. clip-path permet de créer des transitions angulaires entre les sections qui ajoutent de l'énergie visuelle :

.hero-section {
  clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%);
}
.content-section {
  clip-path: polygon(0 15%, 100% 0, 100% 100%, 0 100%);
  margin-top: -10vh;
}

La section hero se découpe en angle sur le bas, et la section de contenu se découpe selon un angle correspondant sur le haut. La marge négative crée un chevauchement, faisant s'enchaîner les sections de manière fluide.

C'est la technique qu'utilisent les pages marketing modernes et les landing pages produit — y compris celles de GuthSearch et Dropee — pour obtenir leurs mises en page diagonales distinctives sans images ni fonds SVG.

Masquage d'images pour l'identité visuelle

Les images rectangulaires standard se fondent dans le décor de n'importe quelle interface. Les images aux formes personnalisées différencient immédiatement un produit :

.feature-image {
  clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
}

Ce recadrage en parallélogramme transforme une photographie standard en élément visuel distinctif. Appliqué de manière cohérente à travers une interface, le masquage d'images crée un langage visuel reconnaissable qui sépare votre produit des concurrents qui livrent encore des rectangles.

Considérez l'impact à travers un écosystème de produits. Quand Guthly, WePlanify, GuthSearch, Dropee et GutHub utilisent tous la même famille de formes clip-path, les utilisateurs reconnaissent la marque avant même de lire un seul mot.

Transitions interactives au survol

clip-path est animable. Cela ouvre une catégorie d'effets de survol impossibles à réaliser avec d'autres propriétés CSS :

.card {
  clip-path: circle(0% at 50% 50%);
  transition: clip-path 0.5s ease-out;
}
.card:hover {
  clip-path: circle(75% at 50% 50%);
}

La carte démarre complètement masquée (un cercle de rayon zéro) et s'étend vers l'extérieur au survol, révélant le contenu dans un balayage radial. C'est considérablement plus engageant qu'un simple fondu d'opacité.

Vous pouvez aussi transformer une forme en une autre :

.element {
  clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
  transition: clip-path 0.4s ease;
}
.element:hover {
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
}

La forme passe d'un losange à un rectangle. Le navigateur interpole chaque position de sommet de manière fluide. Règle critique : les polygones avant et après doivent avoir le même nombre de sommets. S'ils diffèrent, la transition saute au lieu de s'animer.

Animations de révélation au scroll

Combiné avec IntersectionObserver ou du CSS déclenché par le scroll, clip-path crée des animations d'entrée captivantes :

.reveal {
  clip-path: inset(0 100% 0 0);
  transition: clip-path 0.8s cubic-bezier(0.77, 0, 0.175, 1);
}
.reveal.visible {
  clip-path: inset(0 0 0 0);
}

L'élément démarre entièrement découpé depuis la droite et s'ouvre en balayage lorsque l'utilisateur le fait défiler dans la vue. Le timing cubic-bezier crée un mouvement ease-in-out satisfaisant qui paraît intentionnel et soigné.

Formes de fond décoratives

clip-path sur un div de couleur unie crée des décorations géométriques sans aucune image :

.blob-decoration {
  width: 400px;
  height: 400px;
  background: linear-gradient(135deg, #667eea, #764ba2);
  clip-path: ellipse(50% 45% at 55% 50%);
  position: absolute;
  z-index: -1;
}

Cela crée un blob gradient flottant qui se positionne derrière le contenu. Plusieurs blobs avec des tailles, couleurs et positions différentes créent les fonds abstraits et organiques populaires dans les interfaces SaaS modernes — le tout sans aucun asset image.

Considérations de performance

clip-path est accéléré par le GPU dans tous les navigateurs modernes, ce qui le rend plus performant que beaucoup de développeurs ne le pensent. Mais comme toute propriété de rendu, le contexte compte.

Ce qui est peu coûteux

Les clip-paths statiques — définis une fois et jamais modifiés — ne coûtent presque rien après la passe de composition initiale. Le navigateur calcule la forme découpée, la rend et met le résultat en cache. Un polygon() sur une carte ou un circle() sur un avatar est essentiellement gratuit.

Les transitions CSS sur clip-path sont bien optimisées. Le navigateur interpole les valeurs de coordonnées sur le GPU, de la même façon qu'il gère les transitions transform.

Ce qui est coûteux

Les polygones complexes avec de nombreux sommets augmentent le coût de calcul de la région de découpe. Un polygone de 4-8 points est trivial. Un polygone de 50+ points (approximant une courbe lisse) commence à avoir un coût mesurable, surtout s'il est animé.

path() avec des courbes de Bézier complexes est plus coûteux que polygon() car le navigateur doit rastériser le chemin à la résolution de l'élément. Pour les formes statiques, c'est un coût unique ; pour les chemins animés, il se répète à chaque frame.

Les grands éléments avec des clip-paths animés amplifient le coût par frame. Animer un clip-path sur une image hero plein écran coûte plus que l'animer sur une vignette de 200px.

Stratégies d'optimisation

Préférez les transitions CSS aux mises à jour de clip-path pilotées par JavaScript :

.element {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  transition: clip-path 0.3s ease;
}

Gardez le nombre de sommets des polygones en dessous de 12 pour les formes animées. Pour les formes statiques complexes, le nombre de sommets importe moins.

Utilisez will-change: clip-path sur les éléments dont le clip-path va être animé. Cela promeut l'élément sur sa propre couche de composition en avance, éliminant le coût de promotion de couche pendant l'animation.

Pour les révélations au scroll, limitez les mises à jour du clip-path à la cadence de requestAnimationFrame plutôt qu'à chaque événement de scroll.

clip-path vs overflow: hidden

Les développeurs optent parfois pour overflow: hidden quand ils veulent contraindre les limites visuelles d'un élément. Les deux propriétés servent des objectifs différents :

overflow: hidden découpe selon la boîte de padding rectangulaire de l'élément. Il ne peut pas créer de formes non-rectangulaires, et il affecte le contenu scrollable et le positionnement des éléments enfants.

clip-path découpe selon une forme géométrique arbitraire. Il n'affecte pas la mise en page, ne crée pas de conteneur scrollable, et s'applique uniquement au rendu visuel de l'élément et aux tests de clic.

Si vous avez besoin d'un rectangle, overflow: hidden est plus simple et plus prévisible. Pour tout le reste, clip-path est le bon outil.

Concevoir avec le Générateur Clip-Path

Écrire des coordonnées de polygone à la main est fastidieux et propice aux erreurs. Une forme à six sommets représente douze nombres à ajuster, et la relation entre ces nombres et le résultat visuel n'est pas intuitive.

Le Générateur Clip-Path résout ce problème en fournissant un canevas visuel où vous pouvez :

  • Choisir parmi des presets : triangles, pentagones, hexagones, étoiles, flèches et plus encore — chacun étant un point de départ personnalisable.
  • Déplacer les points directement : saisissez n'importe quel sommet et déplacez-le. Le CSS se met à jour en temps réel.
  • Changer de type de forme : basculez entre polygon, circle, ellipse et inset pour trouver la géométrie adaptée à votre cas d'usage.
  • Exporter du CSS propre : copiez la valeur clip-path générée et collez-la directement dans votre feuille de style.

Ce workflow transforme la conception de clip-path d'un exercice mathématique en un exercice visuel. Vous concevez la forme que vous voyez, pas les coordonnées que vous calculez.

Cohérence à travers un écosystème produit

Les formes non-rectangulaires sont un puissant différenciateur de marque — mais seulement si elles sont cohérentes. Un masque d'image hexagonal sur un produit et un losange sur un autre ne crée pas d'unité visuelle ; cela crée de la confusion visuelle.

Quand on maintient plusieurs produits — comme c'est le cas chez Eguth avec Guthly, WePlanify, GuthSearch, Dropee et GutHub — la solution est de définir des tokens de clip-path partagés : un ensemble de formes nommées que chaque produit utilise de manière identique. Une forme "feature-image", un angle "section-divider", un polygone "card-mask" — chacun défini une seule fois dans un design system partagé et réutilisé partout.

Le Générateur Clip-Path facilite cette standardisation. Concevez vos formes visuellement, copiez les valeurs CSS exactes et encodez-les comme tokens de design dans votre configuration partagée. Chaque produit rend la même géométrie, et la marque reste cohésive.

Conclusion

Le web n'a pas à être rectangulaire. La propriété CSS clip-path vous donne des polygones, des cercles, des ellipses, des insets et des chemins SVG complets — une boîte à outils géométrique complète pour s'affranchir des contraintes visuelles du modèle de boîte.

La vraie puissance de clip-path réside dans la façon dont elle transforme des éléments ordinaires en composants visuels distinctifs. Une image découpée en hexagone, une section divisée par une diagonale, une carte qui se révèle dans un balayage radial — ces détails s'accumulent pour créer une interface qui semble artisanale plutôt qu'assemblée.

La clé, comme toujours, est l'expérimentation. Des coordonnées sur une page ne signifient pas grand-chose tant qu'on ne voit pas la forme qu'elles produisent. C'est exactement pour cela que nous avons créé le Générateur Clip-Path — un outil où chaque point est déplaçable, chaque forme est visible instantanément, et chaque résultat est du CSS prêt pour la production, attendant d'être copié dans votre code.

#css#clip-path#design#outils#formes