<basic-shape>

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

* Some parts of this feature may have varying levels of support.

Der <basic-shape> CSS Datentyp repräsentiert eine Form, die in den Eigenschaften clip-path, shape-outside und offset-path verwendet wird.

Probieren Sie es aus

Syntax

Der <basic-shape>-Datentyp wird verwendet, um grundlegende Formen zu erstellen, darunter Rechtecke durch Container-Inset, durch Koordinatenabstände oder durch festgelegte Dimensionen, Kreise, Ellipsen, Polygone, Pfade und vom Autor erstellte Formen. Diese grundlegenden Formen werden mithilfe einer <basic_shape>-CSS-Funktion definiert, wobei jeder Wert ein Parameter ist, der der funktionsspezifischen Syntax der Form folgt.

Allgemeine Parameter

Die Parameter, die in der Syntax einiger grundlegender Formfunktionen gemeinsam genutzt werden, umfassen:

round <'border-radius'>

Definiert abgerundete Ecken für Rechtecke durch Container-Inset, Rechtecke durch Abstände und Rechtecke mit Dimensionen unter Verwendung derselben Syntax wie die CSS-Kurzform-Eigenschaft border-radius.

<shape-radius>

Definiert den Radius für einen Kreis oder eine Ellipse. Gültige Werte umfassen <length>, <percentage>, closest-side (Standardwert) und farthest-side. Negative Werte sind ungültig.

Der closest-side-Schlüsselwortwert verwendet die Länge vom Zentrum der Form zur nächsten Seite der Referenzbox, um die Radiuslänge zu bestimmen. Der farthest-side-Schlüsselwortwert verwendet die Länge vom Zentrum der Form zur am weitesten entfernten Seite der Referenzbox.

<position>

Definiert das Zentrum <position> eines Kreises oder einer Ellipse. Standardmäßig wird center verwendet, wenn es ausgelassen wird.

<fill-rule>

Legt die fill-rule fest, die bestimmt, wie das Innere der Form, die durch die grundlegenden Formen Polygon, Pfad und Form definiert wird, gefüllt werden soll. Mögliche Werte sind nonzero (Standardwert) und evenodd.

Hinweis: <fill-rule> wird in offset-path nicht unterstützt, und seine Verwendung macht die Eigenschaft ungültig.

Syntax für Rechtecke durch Container-Insets

Die Funktion inset() erstellt ein inset-Rechteck, dessen Größe durch den Versatzabstand jeder der vier Seiten seines Containers und optional abgerundete Ecken definiert wird.

inset( <length-percentage>{1,4} [ round <'border-radius'> ]? )

Wenn alle der ersten vier Argumente angegeben sind, stellen sie die Versätze von oben, rechts, unten und links von der Referenzbox nach innen dar, die die Position der Kanten des inset-Rechtecks definieren. Diese Argumente folgen der Syntax der Kurzform-Eigenschaft margin, die es ermöglicht, alle vier Insets mit einem, zwei, drei oder vier Werten festzulegen.

Wenn ein Paar von Insets für eine Dimension mehr als 100 % dieser Dimension ergibt, werden beide Werte proportional reduziert, sodass ihre Summe 100 % beträgt. Zum Beispiel wird der Wert inset(90% 10% 60% 10%) mit einem oberen Inset von 90% und einem unteren Inset von 60% proportional auf inset(60% 10% 40% 10%) reduziert. Solche Formen, die keinen Bereich umschließen und keinen shape-margin haben, beeinflussen das Umfließen nicht.

Syntax für Rechtecke durch Abstände

Die Funktion rect() definiert ein Rechteck mithilfe der angegebenen Abstände von den oberen und linken Kanten der Referenzbox mit optional abgerundeten Ecken.

rect( [ <length-percentage> | auto ]{4} [ round <'border-radius'> ]? )

Bei der Verwendung der rect()-Funktion wird die Breite und Höhe des Rechtecks nicht definiert. Stattdessen geben Sie vier Werte an, um das Rechteck zu erstellen, dessen Dimensionen durch die Größe der Referenzbox und die vier Offsetwerte bestimmt werden. Jeder Wert kann entweder eine <length>, ein <percentage> oder das Schlüsselwort auto sein. Das Schlüsselwort auto wird als 0% für die oberen und linken Werte und als 100% für die unteren und rechten Werte interpretiert.

Syntax für Rechtecke mit Dimensionen

Die Funktion xywh() definiert ein Rechteck, das sich an den angegebenen Abständen von den linken (x) und oberen (y) Kanten der Referenzbox befindet und durch die angegebene Breite (w) und Höhe (h) des Rechtecks in dieser Reihenfolge dimensioniert ist, mit optional abgerundeten Ecken.

xywh( <length-percentage>{2} <length-percentage [0,∞]>{2} [ round <'border-radius'> ]? )

Syntax für Kreise

Die Funktion circle() definiert einen Kreis mithilfe eines Radius und einer Position.

circle( <shape-radius>? [ at <position> ]? )

Das Argument <shape-radius> repräsentiert den Radius des Kreises, definiert entweder als <length> oder <percentage>. Ein Prozentwert hier wird aus der genutzten Breite und Höhe der Referenzbox als sqrt(width^2+height^2)/sqrt(2) berechnet. Wenn es ausgelassen wird, wird der Radius durch closest-side definiert.

Syntax für Ellipsen

Die Funktion ellipse() definiert eine Ellipse mithilfe von zwei Radien und einer Position.

ellipse( [ <shape-radius>{2} ]? [ at <position> ]? )

Syntax für Polygone

Die Funktion polygon() definiert ein Polygon mithilfe einer SVG-fill-rule und einer Reihe von Koordinaten.

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

Syntax für Pfade

Die Funktion path() definiert eine Form mithilfe einer SVG-fill-rule und einer SVG-Pfaddefinition.

path( <'fill-rule'>? , <string> )

Syntax für Formen

Die Funktion shape() definiert eine Form mithilfe eines initialen Startpunkts und einer Reihe von Formbefehlen.

shape( <'fill-rule'>? from <coordinate-pair> , <shape-command># )

Beschreibung

Bei der Erstellung einer Form wird die Referenzbox durch die Eigenschaft definiert, die <basic-shape>-Werte verwendet. Das Koordinatensystem für die Form hat seinen Ursprung standardmäßig in der oberen linken Ecke des Randrahmens (margin-box) des Elements, wobei sich die x-Achse nach rechts und die y-Achse nach unten erstreckt. Alle Längen, die in Prozentsätzen ausgedrückt sind, werden aus den Dimensionen der Referenzbox berechnet.

Die Standardreferenzbox ist die margin-box, wie im Bild unten gezeigt. Das Bild zeigt einen Kreis, der mit shape-outside: circle(50%) erstellt wurde, und hebt die verschiedenen Teile des Box-Modells hervor, wie sie in den Browser-Entwicklungstools angezeigt werden. Die Form hier wird mit Bezug auf die margin-box definiert.

Ein Bild, das einen Kreis zeigt, der mit den Firefox DevTools Shape Inspector inspiziert wird. Die verschiedenen Teile des Box-Modells sind hervorgehoben.

Berechnete Werte von grundlegenden Formen

Die Werte in einer <basic-shape>-Funktion werden wie angegeben berechnet, mit den folgenden zusätzlichen Überlegungen:

  • Für alle ausgelassenen Werte werden deren Standardwerte verwendet.
  • Ein <position>-Wert in circle() oder ellipse() wird als Paar von Versätzen von der oberen linken Ecke der Referenzbox berechnet: Der erste Versatz ist horizontal und der zweite vertikal. Jeder Versatz wird als <length-percentage>-Wert angegeben.

Interpolation von grundlegenden Formen

Bei der Animation zwischen zwei <basic-shape>-Funktionen gelten die folgenden Interpolations-Regeln.

Beispiele

Animiertes Polygon

In diesem Beispiel verwenden wir die @keyframes-Regel, um einen Clip-Pfad zwischen zwei Polygonen zu animieren.

HTML

html
<div></div>

CSS

css
div {
  width: 300px;
  height: 300px;
  background: repeating-linear-gradient(red, orange 50px);
  clip-path: polygon(
    50% 0%,
    60% 40%,
    100% 50%,
    60% 60%,
    50% 100%,
    40% 60%,
    0% 50%,
    40% 40%
  );
  animation: 4s poly infinite alternate ease-in-out;
  margin: 10px auto;
}

@keyframes poly {
  from {
    clip-path: polygon(
      50% 0%,
      60% 40%,
      100% 50%,
      60% 60%,
      50% 100%,
      40% 60%,
      0% 50%,
      40% 40%
    );
  }

  to {
    clip-path: polygon(
      50% 30%,
      100% 0%,
      70% 50%,
      100% 100%,
      50% 70%,
      0% 100%,
      30% 50%,
      0% 0%
    );
  }
}

Ergebnis

Spezifikationen

Specification
CSS Shapes Module Level 1
# basic-shape-functions

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
<basic-shape>
Animation
circle()
ellipse()
inset()
path()
In clip-path
In d as CSS property
In offset-path
In shape-outside
polygon()
rect()
shape()
Experimental
xywh()

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
User must explicitly enable this feature.
Requires a vendor prefix or different name for use.
Has more compatibility info.

Siehe auch