Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 im CSS ist einer der <basic-shape> Datentypen. Sie wird verwendet, um ein Polygon zu zeichnen, indem ein oder mehrere Koordinatenpaare angegeben werden, von denen jedes einen Eckpunkt 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

css
/* 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 Parameter von polygon() werden durch ein Komma und optionalen Leerraum getrennt. Der erste Parameter ist ein optionaler <fill-rule>-Wert. Weitere Parameter sind Punkte, die das Polygon definieren. Jeder Punkt ist ein Paar von x/y-Koordinatenwerten als <length-percentage>, getrennt durch ein Leerzeichen, z.B. "0 0" und "100% 100%" für die linken/oberen und unteren rechten Ecken.

Hinweis: Das SVG-Element <polygon> hat separate Attribute für fill-rule und points, und points ist flexibel bezüglich der Nutzung von Leerraum und Komma als Trenner. Die CSS-polygon()-Regeln für Trenner werden strikt durchgesetzt.

Parameter

<fill-rule> Optional

Ein optionaler Wert von nonzero (der Standardwert, wenn nicht angegeben) oder evenodd, der die Füllregel angibt.

<length-percentage>

Jeder Eckpunkt des Polygons wird durch ein Paar von <length-percentage>-Werten dargestellt, die die x/y-Koordinaten des Eckpunkts relativ zur Referenzbox der Form angeben.

Rückgabewert

Gibt einen Wert des Typs <basic-shape> zurück.

Beschreibung

Mit der polygon()-Funktion kann nahezu jede Form erstellt werden, indem die Koordinaten ihrer Punkte spezifiziert werden. Die Reihenfolge, in der Sie die Punkte definieren, ist wichtig und kann zu unterschiedlichen Formen führen. Die polygon()-Funktion erfordert mindestens 3 Punkte, was ein Dreieck bildet, es gibt jedoch keine Obergrenze.

Die polygon()-Funktion akzeptiert durch Kommas getrennte Koordinaten oder Punkte. Jeder Punkt wird durch ein Paar von Leerzeichen getrennten x- und y-Werten dargestellt, die die Koordinaten der Punkte innerhalb des Polygons angeben.

polygon(x1 y1, x2 y2, x3 y3, x4 y4, xn yn)

Ausgehend von oben, lässt sich die Abbildung der Koordinaten des Containers wie folgt visualisieren:

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-Eigenschaft clip-path mit der polygon()-Funktion:

css
clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);

Dies würde eine rechteckige Form in der Größe des Elterninhalts erzeugen, indem die Koordinaten ihrer vier Ecken: oben links (0% 0%), oben rechts (100% 0%), unten rechts (100% 100%) und unten links (0% 100%) angegeben werden.

Formale Syntax

<polygon()> = 
polygon( <'fill-rule'>? [ round <length> ]? , [ <length-percentage> <length-percentage> ]# )

<fill-rule> =
nonzero |
evenodd

<length-percentage> =
<length> |
<percentage>

Beispiele

Ein Dreieck erstellen

In diesem Beispiel wird ein Dreieck gebildet, indem die Koordinaten seiner drei Punkte definiert werden.

HTML

html
<div class="triangle"></div>

CSS

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 Eigenschaft shape-outside folgt.

html
<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>
css
.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