Formen aus Box-Werten

Ein einfacher Weg, eine Form zu erstellen, besteht darin, einen Wert aus dem CSS Box Model-Modul zu verwenden. Dieser Artikel erklärt, wie das geht.

Die <box-edge> Box-Werte, die als Formwert zulässig sind, sind:

  • content-box
  • padding-box
  • border-box
  • margin-box

Die border-radius-Werte werden ebenfalls unterstützt. Dies bedeutet, dass Sie einem Element eine gekrümmte Umrandung geben und den Inhalt um die erstellte Form fließen lassen können.

CSS-Box-Modell

Die oben aufgeführten Werte entsprechen den verschiedenen Teilen des CSS-Box-Modells. Eine Box in CSS hat Inhalte, Innenabstand, Rahmen und Außenabstand.

Das Box-Modell besteht aus den Margin, Border, Padding und Content-Boxen.

Durch die Verwendung von Box-Werten für Formen können wir unseren Inhalt um die durch diese Werte definierten Kanten wickeln. In jedem der folgenden Beispiele verwende ich ein Element, das Innenabstand, eine Umrandung und einen Außenabstand definiert hat, damit Sie die unterschiedlichen Wege sehen, wie der Inhalt fließen wird.

margin-box

Die margin-box ist die durch den äußeren Rand definierten Form und umfasst den Eckradius der Form, sollte border-radius zur Definition des Elements verwendet worden sein.

Im folgenden Beispiel haben wir ein kreisförmiges lila Element, das ein <div> mit Höhe, Breite und Hintergrundfarbe ist. Die Eigenschaft border-radius wurde verwendet, um einen Kreis zu erstellen, indem border-radius: 50% gesetzt wurde. Da das Element einen Außenabstand hat, können Sie sehen, dass der Inhalt um die kreisförmige Form und den darauf angewendeten Außenabstand herumfließt.

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.
  </p>
</div>
css
body {
  font: 1.2em sans-serif;
}

.shape {
  background-color: rebeccapurple;
  height: 80px;
  width: 80px;
  padding: 20px;
  margin: 20px;
  border: 10px solid black;
  border-radius: 50%;
  float: left;
  shape-outside: margin-box;
}

border-box

Der border-box-Wert ist die Form, die durch die äußere Kante des Rahmens definiert wird. Diese Form folgt den normalen Regeln zur Formung von Rahmenradien für die Außenseite des Rahmens. Sie haben weiterhin eine Umrandung, auch wenn Sie die CSS-Eigenschaft border nicht verwendet haben. In diesem Fall entspricht es der padding-box, der Form, die durch die äußere Polsterrand definiert ist.

Im Beispiel unten können Sie sehen, wie der Text jetzt der durch die Umrandung geschaffenen Linie folgt. Ändern Sie die Rahmengröße, und der Inhalt folgt dieser.

css
body {
  font: 1.2em sans-serif;
}
.box {
  width: 70%;
}

.shape {
  background-color: rebeccapurple;
  height: 80px;
  width: 80px;
  padding: 20px;
  margin: 20px;
  border: 10px solid black;
  border-radius: 50%;
  float: left;
  shape-outside: border-box;
}

padding-box

Der padding-box-Wert definiert die durch die äußere Polsterrand eingeschlossene Form. Diese Form folgt den normalen Regeln zur Formung von Rahmenradien für die Innenseite des Rahmens. Wenn Sie keinen Innenabstand haben, ist padding-box dasselbe wie content-box.

css
body {
  font: 1.2em / 1.2 sans-serif;
}
.box {
  width: 70%;
}

.shape {
  background-color: rebeccapurple;
  height: 80px;
  width: 80px;
  padding: 20px;
  margin: 20px;
  border: 10px solid black;
  border-radius: 50%;
  float: left;
  shape-outside: padding-box;
}

content-box

Der content-box-Wert definiert die durch die äußere Inhaltkante eingeschlossene Form. Jeder Eckradius dieser Box ist der border-radius abzüglich der border-width und padding, oder 0, je nachdem, welcher Wert größer ist. Das bedeutet, dass es hier unmöglich ist, einen negativen Wert zu haben.

css
body {
  font: 1.2em / 1.2 sans-serif;
}
.box {
  width: 70%;
}

.shape {
  background-color: rebeccapurple;
  height: 80px;
  width: 80px;
  padding: 20px;
  margin: 20px;
  border: 10px solid black;
  border-radius: 50%;
  float: left;
  shape-outside: content-box;
}

Wann Box-Werte verwendet werden sollten

Die Verwendung von Box-Werten ist ein einfacher Weg, um Formen zu erstellen; dies funktioniert jedoch naturgemäß nur mit sehr einfachen Formen, die mit der gut unterstützten Eigenschaft border-radius definiert werden können. Die oben gezeigten Beispiele zeigen einen solchen Anwendungsfall. Sie können eine kreisförmige Form mit border-radius erstellen und dann Text darum herumkrümmen.

Mit dieser einfachen Technik können Sie interessante Effekte erzielen. In meinem letzten Beispiel dieses Abschnitts habe ich zwei Elemente links und rechts ausgerichtet und jedem einen Umkreisradius von 100% in die Richtung, die dem Text am nächsten liegt, gegeben.

html
<div class="box">
  <div class="shape-left"></div>
  <div class="shape-right"></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.
  </p>
</div>
css
body {
  font: 1.2em / 1.5 sans-serif;
}

.box {
  text-align: justify;
}

.shape-left,
.shape-right {
  height: 100px;
  width: 100px;
}

.shape-left {
  margin: 0 20px 20px 0;
  border-bottom-right-radius: 100%;
  float: left;
  shape-outside: margin-box;
}
.shape-right {
  margin: 0 20px 20px;
  border-bottom-left-radius: 100%;
  float: right;
  shape-outside: margin-box;
}

Für komplexere Formen müssen Sie einen der Basisformen als Wert verwenden oder Ihre Form aus einem Bild definieren, wie in anderen Leitfäden in diesem Abschnitt behandelt.