CSS clip-path-generator

Nästa

Med clip-path kan du klippa vilket element som helst i en polygonform och skapa formade bilder, asymmetriska hero-sektioner eller pratbubblor utan SVG-lager. Att skriva polygon()-koordinater för hand är en inbjudan till räknefel. Den här generatorn skapar korrekt clip-path-deklaration för fyra färdiga former: triangel, romb, parallelltrapets och hexagon. Välj en form, generera och kopiera CSS-koden.

Så här bygger du ett clip-path

  1. 1

    Välj form

    Välj en av de fyra förinställningarna: triangel, romb, parallelltrapets eller hexagon.

  2. 2

    Generera CSS

    Klicka på knappen så bygger verktyget regeln `clip-path: polygon(...)` för den valda formen.

  3. 3

    Kopiera regeln

    Kopiera resultatet och klistra in det i din stilmall. Procenttal håller formen responsiv till elementets storlek.

  4. 4

    Läs koordinaterna

    Varje talpar är en hörnpunkt: x- och y-positionen för det hörnet i procent av elementets ruta.

  5. 5

    Applicera

    `clip-path` fungerar på alla element i alla moderna webbläsare och formen skalar med elementet.

De fem formfunktionerna

Funktion Syntax Användning
inset() inset(10% 20% 10% 20% round 8px) Rektangulär beskärning med indrag och valfritt rundade hörn
circle() circle(50% at 50% 50%) Cirkel
ellipse() ellipse(40% 25% at 50% 50%) Ellips
polygon() polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%) Valfri polygon
path() path("M0 0 L100 0 L50 100 Z") SVG-banadata (begränsat stöd)

Vanliga polygonklipp

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

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

/* Chevron / arrow pointing right */
clip-path: polygon(0 0, 75% 0, 100% 50%, 75% 100%, 0 100%, 25% 50%);

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

/* Diagonal slice (modern hero section) */
clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%);

Diagonalen i en hero-sektion är förmodligen den mest använda av alla – den ger sektionen ett snett, modernt uttryck helt utan SVG.

Animera clip-path

clip-path animeras så länge båda tillstånden har samma formfunktion med samma antal punkter. En polygon med 4 hörn animeras smidigt till en annan polygon med 4 hörn; att lägga till eller ta bort hörn bryter interpoleringen.

.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%); }

Använd detta för uppenbarelseeffekter, subtila förvrängningar vid hovring eller sidövergångar.

clip-path jämfört med overflow: hidden

overflow: hidden beskär till rektangeln för border-box (som kan rundas av med border-radius). clip-path beskär till vilken form du än definierar och beskär allt – inklusive skuggor och konturer. Om du vill att skuggor ska förbli synliga utanför formen är clip-path inte rätt val.

filter: drop-shadow() kan lägga tillbaka en formföljande skugga på element med clip-path, men är långsammare.

Prestanda

clip-path är GPU-accelererad i moderna webbläsare, så animerade clip-path är smidiga. Undantaget är path() och mycket komplexa polygoner (över 40 hörn), som i vissa webbläsare faller tillbaka på CPU-rendering.

Tillgänglighet

clip-path ändrar bara det som syns. Skärmläsare, tangentbordsfokus och pekarhändelser följer elementets hela box, inte den beskurna formen. Om en bild beskärs till en stjärna läses alt-texten upp som vanligt. Om en knapp beskärs till en chevron är klickmålet hela rektangeln, inte den synliga chevronen – vilket kan leda till oavsiktliga klick på till synes tom yta.

För knappar med ovanliga beskurna former bör du ställa in elementets bredd och höjd snävt så att träffytan stämmer hyfsat väl med det synliga området.

Vanliga frågor

Alla moderna webbläsare (Chrome, Firefox, Safari och Edge) stöder polygon(), circle(), ellipse() och inset(). path() stöds i Chrome 88+, Firefox 97+ och Safari 13.1+. IE stöder ingen av dem, men dess användning ligger i dag under tröskeln för de flesta webbplatser.

Eftersom clip-path beskär skuggorna tillsammans med allt annat. Använd filter: drop-shadow() i stället – den följer den beskurna formen och håller skuggan synlig.

Endast mellan samma formfunktion med samma antal punkter. En polygon med 4 punkter animeras till en annan polygon med 4 punkter. Att lägga till eller ta bort punkter, eller byta funktion (från polygon till cirkel), bryter interpoleringen.

Nej – pekarhändelser går fortfarande till elementets hela rektangel. En stjärnformad knapp har en rektangulär klickyta, inklusive de genomskinliga hörnen. Överväg pointer-events: none på ett ::before eller använd snävt tilltagna element om detta spelar roll.

Relaterade verktyg