Einführung der CSS-Clip-Path-Eigenschaft
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS Clip-Path: Shaping Web Elements</title> <style> body { font-family: sans-serif; } .container { display: flex; justify-content: center; align-items: center; min-height: 100vh; } .intro-image { width: 500px; height: auto; } .section-title { font-size: 1.5em; font-weight: bold; margin-bottom: 1em; } .code-example { background-color: #f0f0f0; padding: 1em; border-radius: 5px; margin-bottom: 1em; overflow-x: auto; /* Add horizontal scroll if needed */ } .code-example pre { margin: 0; } .image-example { display: flex; justify-content: center; align-items: center; margin-bottom: 2em; } .image-example img { max-width: 100%; height: auto; } .key-takeaway { margin-bottom: 2em; } .key-takeaway ul { list-style-type: disc; padding-left: 20px; } .faq-section { margin-top: 3em; } .faq-section h2 { font-size: 1.8em; font-weight: bold; margin-bottom: 1em; } .faq-section .faq-item { margin-bottom: 1em; } .faq-section .faq-item h3 { font-weight: bold; margin-bottom: 0.5em; } </style> </head> <body> <div class="container"> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174009775169997.jpg" class="lazy" alt="Introducing the CSS clip-path Property " /> </div> <p>The web's predominantly rectangular layout contrasts with print media's diverse shapes. This difference stems partly from a lack of suitable tools. This tutorial introduces <code>clip-path</code>, a CSS property offering the design flexibility of print.</p> <div class="key-takeaway"> <h2 id="Key-Takeaways">Key Takeaways</h2> <ul> <li><code>clip-path</code> masks parts of an element, exceeding the limitations of the deprecated <code>clip</code> property (rectangular clipping only).</li> <li>It supports basic shapes, geometry boxes, or SVG <code><clippath></code> URLs for complex shapes and animations.</li> <li>Animating <code>clip-path</code> requires matching vertex counts in initial and final shapes for smooth transitions.</li> <li>While not universally supported, major modern browsers (Chrome, Safari, Opera) support <code>clip-path</code> (often with prefixes). Firefox support is partial.</li> </ul> </div> <h2 id="The-Basics">The Basics</h2> <p>Clipping trims parts of an element, partially or fully hiding it. The <i>clipping path</i> defines the visible region, whether a simple shape or a complex polygon. The <i>clipping region</i> is the area within this path. Anything outside is hidden, including backgrounds, borders, shadows, and events.</p> <p>Even with non-rectangular elements, surrounding content flows naturally. For shape-aware content flow, use the <code>shape-outside</code> property (see related SitePoint tutorial).</p> <p>Remember: <code>clip-path</code> differs from the limited, deprecated <code>clip</code> property.</p> <h2 id="Syntax-and-Usage">Syntax and Usage</h2> <p>The syntax is: <code>clip-path: <clip-source> | [<basic-shape> || <geometry-box>] | none</code></p> <ul> <li><code><clip-source></code>: An SVG <code><clippath></code> URL.</li> <li><code><basic-shape></code>: Basic shape functions (CSS Shapes spec).</li> <li><code><geometry-box></code>: (Optional) Reference box for <code><basic-shape></code>, or defines the clipping shape itself (e.g., <code>margin-box</code>).</li> </ul> <div class="code-example"> <pre class="brush:php;toolbar:false"><code>img { clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); }
Dies schafft einen Rhombus. Vertex -Koordinaten (x, y) sind im Uhrzeigersinn relativ zum Feld des Elements.

mit geometry-box
ausschneiden
<code>.clip-me { clip-path: polygon(10% 20%, 20% 30%, 50% 80%) margin-box; margin: 10%; } </code>
Hier ist margin-box
die Referenz. SVG -Elemente verwenden fill-box
, stroke-box
oder view-box
.
Verwendungen von clip-path
clip-path
verbessert Text und Bilder. Komplexe Formen sind leicht zu erreichen.

<code>.p-msg { clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 75% 85%, 75% 100%, 50% 80%, 0% 75%); } </code>
Bildgalerien und Avatare profitieren von nicht respektulären Formen.
<code>.right { clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); position: relative; top: -352px; left: 256px; } </code>
Animation
hinzufügen Animate clip-path
, aber konsistente Scheitelpunktzahlen für reibungslose Übergänge beibehalten.
<code>@keyframes polygons { 25% { clip-path: polygon(20% 0%, 100% 38%, 70% 90%, 0% 100%); } 50% { clip-path: polygon(0 46%, 100% 15%, 55% 74%, 0 100%); } 70% { clip-path: polygon(100% 38%, 100% 38%, 66% 100%, 0 53%); } } </code>
Browserunterstützung
dh und Kante fehlt Unterstützung. Firefox hat eine teilweise Unterstützung (url()
Syntax, möglicherweise über ein Flag aktiviert). Chrome, Safari und Opera erfordern -webkit-
Präfixe. Überprüfen Sie kann ich für die neuesten Informationen verwenden.
Schlussfolgerung
clip-path
bietet erhebliche Designmöglichkeiten. Werkzeuge wie Clippy und CSS Plant's Clip Path Generator vereinfachen die komplexe Polygonerstellung.
häufig gestellte Fragen (FAQs)
Was ist die CSS-Clip-Pfad-Eigenschaft und wie funktioniert es?
clip-path
schneidet Teile eines Elements ab und definiert einen Anzeigebereich. Es akzeptiert grundlegende Formen, Geometrieboxen oder SVG -Pfade, die komplexe Formen und Animationen ermöglichen.
Wie kann ich die Polygonfunktion im CSS-Clip-Pfad verwenden?
Die polygon()
-Funktion verwendet (x, y) Koordinatenpaare, um die Scheitelpunkte eines Polygons zu definieren. Zum Beispiel erstellt clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)
einen Diamanten.
Kann ich die CSS-Clip-Path-Eigenschaft für reaktionsschnelles Design verwenden?
Ja, verwenden Sie Prozentsätze in Formparametern zur Skalierung mit der Größe des Elements.
Ist es möglich, die CSS-Clip-Path-Eigenschaft zu animieren?
Ja, verwenden Sie Keyframes und die animation
Eigenschaft. Halten Sie die Scheitelpunktzahlen für reibungslose Übergänge konsistent.
Welche Browser unterstützen die CSS-Clip-Path-Eigenschaft?
Die meisten modernen Browser unterstützen es (überprüfen Sie es für Updates).
Wie kann ich die Kreisfunktion im CSS-Clip-Pfad verwenden?
circle(radius at position)
erstellt einen Kreis. Zum Beispiel zentriert clip-path: circle(50% at 50% 50%)
einen Kreis innerhalb des Elements.
Kann ich ein SVG als Clip-Pfad in CSS verwenden?
Ja, mit der Funktion url()
, um ein SVG <clippath>
-Element zu verweisen.
Was ist der Unterschied zwischen Clip und Clip-Pfad in CSS?
clip
ist veraltet und unterstützt nur rechteckige Ausschnitte. clip-path
ist weitaus vielseitiger.
Wie kann ich die Einschubfunktion im CSS-Clip-Pfad verwenden?
inset(top right bottom left [round border-radius])
erstellt ein Rechteck mit optionalen abgerundeten Ecken.
Kann ich mehrere Formen in einem einzelnen CSS-Clip-Pfad verwenden?
Ja, Verwenden Sie die Funktion path()
mit SVG -Pfadsyntax.