Générateur de clip-path CSS

Suivant

Avec clip-path, vous pouvez découper n’importe quel élément en forme de polygone pour créer des images découpées, des sections asymétriques ou des bulles de dialogue sans superposition SVG. Écrire les coordonnées de polygon() à la main est une invitation aux erreurs de calcul. Ce générateur produit la déclaration clip-path correcte pour quatre formes prédéfinies : triangle, losange, trapèze et hexagone. Choisissez une forme, générez et copiez le CSS.

Comment créer un clip-path

  1. 1

    Choisissez la forme

    Choisissez une des quatre formes prédéfinies : triangle, losange, trapèze ou hexagone.

  2. 2

    Générez le CSS

    Cliquez sur le bouton et l'outil construit la règle `clip-path: polygon(...)` pour la forme sélectionnée.

  3. 3

    Copiez la règle

    Copiez le résultat et collez-le dans votre feuille de style. Les pourcentages gardent la forme adaptative à la taille de l'élément.

  4. 4

    Lisez les coordonnées

    Chaque paire de nombres est un sommet : la position x et y de ce coin en pourcentage de la boîte de l'élément.

  5. 5

    Appliquez-la

    `clip-path` fonctionne sur n'importe quel élément dans tous les navigateurs modernes, et la forme s'adapte à la taille de l'élément.

Les cinq fonctions de forme

Fonction Syntaxe Utilisation
inset() inset(10% 20% 10% 20% round 8px) Clip rectangulaire avec insets et coins arrondis optionnels
circle() circle(50% at 50% 50%) Cercle
ellipse() ellipse(40% 25% at 50% 50%) Ellipse
polygon() polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%) Tout polygone
path() path("M0 0 L100 0 L50 100 Z") Données de chemin SVG (support limité)

Clips polygonaux courants

/* Hexagone */
clip-path: polygon(25% 0, 75% 0, 100% 50%, 75% 100%, 25% 100%, 0 50%);

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

/* Chevron / flèche pointant à droite */
clip-path: polygon(0 0, 75% 0, 100% 50%, 75% 100%, 0 100%, 25% 50%);

/* Parallélogramme */
clip-path: polygon(20% 0, 100% 0, 80% 100%, 0 100%);

/* Tranche diagonale (section héroïque moderne) */
clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%);

La diagonale de la section héroïque est probablement la plus utilisée de toutes, elle donne à une section cet aspect moderne angulaire sans aucun SVG.

Animer le clip-path

Le clip-path s’anime tant que les deux états ont la même fonction de forme avec le même nombre de points. Un polygone à 4 sommets s’anime en douceur vers un autre polygone à 4 sommets ; ajouter ou supprimer des sommets casse l’interpolation.

.card { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }
.card:hover { clip-path: polygon(0 5%, 100% 0, 100% 95%, 0 100%); }

Utilisez cela pour des effets de révélation, des distorsions subtiles au survol, ou des transitions de page.

Clip-path vs. overflow: hidden

overflow: hidden découpe au rectangle de la border-box (qui peut être arrondi avec border-radius). clip-path découpe à toute forme que vous définissez et découpe tout, y compris les ombres et les contours. Si vous avez besoin que les ombres restent visibles en dehors de la forme, clip-path n’est pas ce que vous voulez.

filter: drop-shadow() peut réajouter une ombre suivant la forme sur les éléments clip-path, mais c’est plus lent.

Performances

Le clip-path est accéléré par le GPU dans les navigateurs modernes, donc les clip-paths animés sont fluides. L’exception est path() et les polygones très complexes (40+ sommets) qui reviennent au rendu CPU sur certains navigateurs.

Accessibilité

Le clip-path ne change que ce qui est visible. Les lecteurs d’écran, le focus au clavier et les événements de pointeur suivent la boîte complète de l’élément, pas la forme découpée. Si une image est découpée en étoile, le texte alternatif est lu normalement. Si un bouton est découpé en chevron, sa cible de clic est le rectangle complet, pas le chevron visible, ce qui peut provoquer des clics accidentels sur un espace apparemment vide.

Pour les boutons avec des formes découpées inhabituelles, définissez la largeur/hauteur de l’élément de manière serrée afin que la zone de clic corresponde raisonnablement bien à la zone visible.

Questions fréquentes

Tous les navigateurs modernes (Chrome, Firefox, Safari, Edge) prennent en charge polygon(), circle(), ellipse() et inset(). path() est pris en charge dans Chrome 88+, Firefox 97+ et Safari 13.1+. IE ne prend en charge aucun d’eux mais son utilisation est en dessous du seuil pour la plupart des sites maintenant.

Parce que clip-path découpe les ombres avec tout le reste. Utilisez filter: drop-shadow() à la place, cela suit la forme découpée et garde l’ombre visible.

Seulement entre la même fonction de forme avec le même nombre de points. Un polygone avec 4 points s’anime vers un autre polygone avec 4 points. Ajouter ou supprimer des points, ou changer entre les fonctions (polygone à cercle), casse l’interpolation.

Non, les événements de pointeur vont toujours vers le rectangle complet de l’élément. Un bouton en forme d’étoile a une zone de clic rectangulaire, y compris les coins transparents. Envisagez pointer-events: none sur un ::before ou utilisez des éléments de taille serrée si cela compte.

Outils similaires