<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) undfarthest-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. Derfarthest-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 wirdcenter
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 sindnonzero
(Standardwert) undevenodd
.Hinweis:
<fill-rule>
wird inoffset-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
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.
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 incircle()
oderellipse()
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
<div></div>
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 GitHubLegend
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
- Eigenschaften, die diesen Datentyp verwenden:
clip-path
,offset-path
,shape-outside
, - CSS-Formen-Modul
- Übersicht über CSS-Formen
- Bearbeiten von Formpfaden in CSS — Firefox Developer Tools