polygon() CSS-Funktion
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.
Die polygon()-Funktion in CSS ist eines der <basic-shape>-Datentypen. Sie wird verwendet, um ein Polygon zu zeichnen, indem ein oder mehrere Koordinatenpaare angegeben werden, von denen jedes einen Scheitelpunkt der Form darstellt.
Probieren Sie es aus
clip-path: polygon(
0% 20%,
60% 20%,
60% 0%,
100% 50%,
60% 100%,
60% 80%,
0% 80%
);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element"></div>
</section>
#default-example {
background: #ffee99;
}
#example-element {
background: linear-gradient(to bottom right, #ff5522, #0055ff);
width: 100%;
height: 100%;
}
Syntax
/* Specified as coordinate list */
/* polygon(<length-percentage> <length-percentage>, ... )*/
polygon(50% 2.4%, 34.5% 33.8%, 0% 38.8%, 25% 63.1%, 19.1% 97.6%)
polygon(0px 0px, 200px 100px, 0px 200px)
polygon(0% 0px, 100% 100px, 0px 100%)
polygon(0 0, 50% 1rem, 100% 2vw, calc(100% - 20px) 100%, 0 100%)
/* Specified as coordinate list and fill rule*/
/* polygon(<fill-rule> <length-percentage> <length-percentage>, ... )*/
polygon(nonzero, 0% 0%, 50% 50%, 0% 100%)
polygon(evenodd, 0% 0%, 50% 50%, 0% 100%)
Die polygon()-Parameter sind durch ein Komma und optionalen Leerraum getrennt. Der erste Parameter ist ein optionaler <fill-rule>-Wert. Zusätzliche Parameter sind Punkte, die das Polygon definieren. Jeder Punkt ist ein Paar von x/y-Koordinaten-<length-percentage>-Werten, getrennt durch ein Leerzeichen, z. B. "0 0" und "100% 100%" für die linken/oberen und unteren rechten Ecken.
Note: Das SVG-Element <polygon> hat separate Attribute für fill-rule und points, und points ist flexibel in Bezug auf die Verwendung von Leerzeichen und Komma-Trennzeichen. Die CSS-polygon()-Regeln für Trennzeichen werden streng durchgesetzt.
Parameter
<fill-rule>Optional-
Ein optionaler Wert von
nonzero(Standard, wenn nicht angegeben) oderevenodd, der die Füllregel spezifiziert. <length-percentage>-
Jeder Scheitelpunkt des Polygons wird durch ein Paar von
<length-percentage>-Werten repräsentiert, die die x/y-Koordinaten des Scheitelpunkts relativ zur Referenzbox der Form angeben.
Rückgabewert
Gibt einen <basic-shape>-Wert zurück.
Beschreibung
Sie können nahezu jede Form mit der polygon()-Funktion erstellen, indem Sie die Koordinaten ihrer Punkte angeben. Die Reihenfolge, in der Sie die Punkte definieren, ist wichtig und kann zu unterschiedlichen Formen führen. Die polygon()-Funktion erfordert mindestens 3 Punkte, die ein Dreieck bilden, es gibt jedoch keine obere Grenze.
Die polygon()-Funktion akzeptiert kommagetrennte Koordinaten oder Punkte als ihre Werte. Jeder Punkt wird durch ein Paar von leerzeichengetrennten x- und y-Werten repräsentiert, die die Koordinaten der Punkte innerhalb des Polygons angeben.
polygon(x1 y1, x2 y2, x3 y3, x4 y4, xn yn)
Unter Berücksichtigung dessen kann die Abbildung der Koordinaten des Containers visualisiert werden als:
| Achse | Punkt 1 | Punkt 2 | Punkt 3 | Punkt 4 | Punkt n |
|---|---|---|---|---|---|
| x | 0% | 100% | 100% | 0% | xn |
| y | 0% | 0% | 100% | 100% | yn |
Anwendung dieser Koordinaten auf die CSS-clip-path-Eigenschaft unter Verwendung der polygon()-Funktion:
clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
Dies würde eine rechteckige Form in der Größe ihres übergeordneten Inhalts erstellen, indem die Koordinaten ihrer vier Ecken angegeben werden: oben links (0% 0%), oben rechts (100% 0%), unten rechts (100% 100%) und unten links (0% 100%).
Formale Syntax
<polygon()> =
polygon( <'fill-rule'>? [ round <length> ]? , [ <length-percentage> <length-percentage> ]# )
<fill-rule> =
nonzero |
evenodd
<length-percentage> =
<length> |
<percentage>
Beispiele
>Erstellen eines Dreiecks
In diesem Beispiel wird ein Dreieck gebildet, indem die Koordinaten seiner drei Punkte definiert werden.
HTML
<div class="triangle"></div>
CSS
.triangle {
width: 400px;
height: 400px;
background-color: magenta;
clip-path: polygon(100% 0%, 50% 50%, 100% 100%);
}
Ergebnis
Die Koordinaten für das Dreieck sind die obere rechte Ecke (100% 0%), der Mittelpunkt (50% 50%) und die untere rechte Ecke (100% 100%) des Containers.
Ein Polygon für shape-outside festlegen
In diesem Beispiel wird eine Form erstellt, der Text mit der shape-outside-Eigenschaft folgen soll.
<div class="box">
<div class="shape"></div>
<p>
One November night in the year 1782, so the story runs, two brothers sat
over their winter fire in the little French town of Annonay, watching the
grey smoke-wreaths from the hearth curl up the wide chimney. Their names
were Stephen and Joseph Montgolfier, they were papermakers by trade, and
were noted as possessing thoughtful minds and a deep interest in all
scientific knowledge and new discovery. Before that night—a memorable night,
as it was to prove—hundreds of millions of people had watched the rising
smoke-wreaths of their fires without drawing any special inspiration from
the fact.
</p>
</div>
.box {
width: 250px;
}
.shape {
float: left;
shape-outside: polygon(
0 5%,
15% 12%,
30% 15%,
40% 26%,
45% 35%,
45% 45%,
40% 55%,
10% 90%,
10% 98%,
8% 100%,
0 100%
);
width: 300px;
height: 320px;
}
p {
font-size: 0.9rem;
}
Spezifikationen
| Spezifikation |
|---|
| CSS Shapes Module Level 1> # funcdef-basic-shape-polygon> |
Browser-Kompatibilität
Siehe auch
- Eigenschaften, die diesen Datentyp verwenden:
border-shape,clip-path,shape-outside - Leitfaden zu Basisformen