shape-outside
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.
Die shape-outside
CSS Eigenschaft definiert eine Form, die nicht rechteckig sein kann, um die sich der benachbarte Inline-Inhalt wickeln soll. Standardmäßig wickelt sich Inline-Inhalt um seine Randbox; shape-outside
bietet eine Möglichkeit, dieses Umwickeln anzupassen und so den Text um komplexe Objekte statt um einfache Boxen zu wickeln.
Probieren Sie es aus
Syntax
/* Keyword values */
shape-outside: none;
shape-outside: margin-box;
shape-outside: content-box;
shape-outside: border-box;
shape-outside: padding-box;
/* Function values */
shape-outside: circle();
shape-outside: ellipse();
shape-outside: inset(10px 10px 10px 10px);
shape-outside: polygon(10px 10px, 20px 20px, 30px 30px);
/* Shape box with basic shape */
shape-outside: circle() border-box;
shape-outside: margin-box ellipse();
/* <url> value */
shape-outside: url(image.png);
/* <gradient> value */
shape-outside: linear-gradient(45deg, #fff 150px, red 150px);
/* Global values */
shape-outside: inherit;
shape-outside: initial;
shape-outside: revert;
shape-outside: revert-layer;
shape-outside: unset;
Die shape-outside
Eigenschaft wird unter Verwendung der unten aufgeführten Werte angegeben, die den Float-Bereich für Float-Elemente definieren. Der Float-Bereich bestimmt die Form, um die sich Inline-Inhalte (Float-Elemente) wickeln.
Werte
none
-
Der Float-Bereich wird nicht beeinflusst. Inline-Inhalt wickelt sich wie üblich um die Randbox des Elements.
<shape-box>
-
Der Float-Bereich wird entsprechend der Form der Kanten eines Float-Elements berechnet (wie durch das CSS Box Model definiert). Dies kann
margin-box
,border-box
,padding-box
odercontent-box
sein. Die Form umfasst jede Krümmung, die durch dieborder-radius
Eigenschaft erzeugt wird (ähnliches Verhalten wiebackground-clip
).margin-box
-
Definiert die Form, die durch den äußeren Rand begrenzt wird. Die Eckenradien dieser Form werden durch die entsprechenden
border-radius
undmargin
Werte bestimmt. Wenn das Verhältnisborder-radius / margin
1 oder mehr beträgt, ist der Eckenradius der Randboxborder-radius + margin
. Wenn das Verhältnis kleiner als 1 ist, ist der Eckenradius der Randboxborder-radius + (margin * (1 + (ratio - 1) ^ 3))
. border-box
-
Definiert die Form, die durch den äußeren Rand der Kontur begrenzt wird. Die Form folgt den üblichen Regeln der Konturradiusgestaltung für die Außenseite der Kontur.
padding-box
-
Definiert die Form, die durch den äußeren Rand des Innenabstands begrenzt wird. Die Form folgt den üblichen Regeln der Konturradiusgestaltung für die Innenseite der Kontur.
content-box
-
Definiert die Form, die durch den äußeren Rand des Inhalts begrenzt wird. Jeder Eckenradius dieser Box ist der größere von
0
oderborder-radius - border-width - padding
.
<basic-shape>
-
Der Float-Bereich wird basierend auf der Form berechnet, die durch eine
inset()
,circle()
,ellipse()
, oderpolygon()
Funktion erstellt wird; andere<basic-shape>
Funktionen sind ungültig. Wenn ein<shape-box>
ebenfalls angegeben ist, definiert er die Referenzbox für die<basic-shape>
Funktion. Andernfalls ist die Referenzbox standardmäßigmargin-box
. <image>
-
Der Float-Bereich wird basierend auf dem Alphakanal des angegebenen
<image>
extrahiert und berechnet, wie durchshape-image-threshold
definiert.
Hinweis: Wenn das Bild ungültig ist, hat dies den Effekt, als wäre das Schlüsselwort none
angegeben worden. Zusätzlich muss das Bild mit CORS Headern bereitgestellt werden, die seine Verwendung erlauben.
Formale Definition
Initialer Wert | none |
---|---|
Anwendbar auf | Flusselemente |
Vererbt | Nein |
Berechneter Wert | wie definiert für basic-shape (gefolgt von shape-box , falls angegeben), dem image , dessen URI absolut gemacht wurde, ansonsten wie angegeben. |
Animationstyp | ja, wie angegeben für basic-shape , ansonsten nein |
Formale Syntax
shape-outside =
none |
[ <basic-shape> || <shape-box> ] |
<image>
<shape-box> =
<visual-box> |
margin-box
<image> =
<url> |
<gradient>
<visual-box> =
content-box |
padding-box |
border-box
<url> =
<url()> |
<src()>
<url()> =
url( <string> <url-modifier>* ) |
<url-token>
<src()> =
src( <string> <url-modifier>* )
Beispiele
Trichtertext
HTML
<div class="main">
<div class="left"></div>
<div class="right"></div>
<p>
Sometimes a web page's text content appears to be funneling your attention
towards a spot on the page to drive you to follow a particular link.
Sometimes you don't notice.
</p>
</div>
CSS
.main {
width: 530px;
}
.left,
.right {
background-color: lightgray;
height: 12ex;
width: 40%;
}
.left {
clip-path: polygon(0 0, 100% 100%, 0 100%);
float: left;
shape-outside: polygon(0 0, 100% 100%, 0 100%);
}
.right {
clip-path: polygon(100% 0, 100% 100%, 0 100%);
float: right;
shape-outside: polygon(100% 0, 100% 100%, 0 100%);
}
p {
text-align: center;
}
Ergebnis
Spezifikationen
Specification |
---|
CSS Shapes Module Level 1 # shape-outside-property |
Browser-Kompatibilität
BCD tables only load in the browser