<!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>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>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>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.
geometry-box
<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
.
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>
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>
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.
clip-path
bietet erhebliche Designmöglichkeiten. Werkzeuge wie Clippy und CSS Plant's Clip Path Generator vereinfachen die komplexe Polygonerstellung.
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.
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.
Ja, verwenden Sie Prozentsätze in Formparametern zur Skalierung mit der Größe des Elements.
Ja, verwenden Sie Keyframes und die animation
Eigenschaft. Halten Sie die Scheitelpunktzahlen für reibungslose Übergänge konsistent.
Die meisten modernen Browser unterstützen es (überprüfen Sie es für Updates).
circle(radius at position)
erstellt einen Kreis. Zum Beispiel zentriert clip-path: circle(50% at 50% 50%)
einen Kreis innerhalb des Elements.
Ja, mit der Funktion url()
, um ein SVG <clippath>
-Element zu verweisen.
clip
ist veraltet und unterstützt nur rechteckige Ausschnitte. clip-path
ist weitaus vielseitiger.
inset(top right bottom left [round border-radius])
erstellt ein Rechteck mit optionalen abgerundeten Ecken.
Ja, Verwenden Sie die Funktion path()
mit SVG -Pfadsyntax.