Erste Schritte mit CSS-Formen

Inhalte um benutzerdefinierte Pfade umschließen

Razvan Caliman
Razvan Caliman

Lange Zeit mussten Webdesigner innerhalb der Grenzen des Rechtecks arbeiten. Die meisten Inhalte im Web sind immer noch in einfachen Feldern gefangen, da die meisten Creatives in ein nicht rechteckiges Layout stecken und frustriert enden. Das wird sich mit der Einführung von CSS-Formen ändern, die ab Chrome 37 verfügbar sind. Mit CSS-Formen können Webdesigner Inhalte um benutzerdefinierte Pfade wie Kreise, Ellipsen und Polygone wickeln und so die Einschränkungen des Rechtecks aufheben.

Formen können manuell definiert oder aus Bildern abgeleitet werden.

Sehen wir uns ein sehr einfaches Beispiel an.

Vielleicht waren Sie auch so naiv wie ich, als Sie zum ersten Mal ein Bild mit transparenten Bereichen als „Floating“-Element eingefügt haben und erwartet haben, dass der Inhalt umgebrochen wird und die Lücken füllt. Stattdessen wurden Sie von der rechteckigen Umbruchform enttäuscht, die um das Element herum verbleibt. Mit CSS-Formen lässt sich dieses Problem lösen.

Form aus einem Bild extrahieren
<img class="element" src="image.png" />
<p>Lorem ipsum…</p>

<style>
.element{
  shape-outside: url(image.png);
  shape-image-threshold: 0.5;
  float: left;
}
</style>

Die CSS-Deklaration shape-outside: url(image.png) weist den Browser an, eine Form aus dem Bild zu extrahieren.

Mit der Property shape-image-threshold wird die minimale Deckkraft der Pixel definiert, die zum Erstellen der Form verwendet werden. Der Wert muss zwischen 0.0 (vollständig transparent) und 1.0 (vollständig deckend) liegen. shape-image-threshold: 0.5 bedeutet also, dass nur Pixel mit einer Deckkraft von mindestens 50 % zum Erstellen der Form verwendet werden.

Die Property float ist hier der Schlüssel. Die Property shape-outside definiert die Form des Bereichs, um den sich Inhalte umbrechen. Ohne das Attribut „float“ sind die Auswirkungen der Form jedoch nicht zu sehen.

Elemente haben einen Schwebebereich auf der gegenüberliegenden Seite ihres float-Werts. Wenn ein Element mit einem Bild einer Kaffeetasse beispielsweise nach links verschoben wird, wird der Floating-Bereich rechts neben der Tasse erstellt. Obwohl Sie ein Bild mit Lücken auf beiden Seiten erstellen können, umschließen die Inhalte nur die Form auf der gegenüberliegenden Seite, die durch die Gleitkommaeigenschaft bezeichnet wird, links oder rechts, niemals beide.

Mit der Einführung von CSS-Ausschlüssen können Sie shape-outside künftig auch für Elemente verwenden, die nicht freigesetzt sind.

Formen manuell erstellen

Sie können Formen nicht nur aus Bildern extrahieren, sondern auch manuell codieren. Zum Erstellen von Formen stehen einige Funktionswerte zur Auswahl: circle(), ellipse(), inset() und polygon(). Jede Formfunktion akzeptiert eine Reihe von Koordinaten und wird mit einem Referenzfeld kombiniert, das das Koordinatensystem festlegt. Weitere Informationen zu Referenzfeldern folgen gleich.

Die Funktion circle()

Abbildung des Formwerts „circle()“

Die vollständige Schreibweise für einen Kreisformwert lautet circle(r at cx cy), wobei r der Radius des Kreises ist und cx und cy die Koordinaten des Kreismittelpunkts auf der X- und Y-Achse sind. Die Koordinaten für den Mittelpunkt des Kreises sind optional. Wenn Sie sie weglassen, wird standardmäßig der Mittelpunkt des Elements (die Schnittpunkte der Diagonalen) verwendet.

.element{
  shape-outside: circle(50%);
  width: 300px;
  height: 300px;
  float: left;
}

Im obigen Beispiel wird der Inhalt um einen kreisförmigen Pfad herum gewickelt. Das einzelne Argument 50% gibt den Radius des Kreises an, der in diesem Fall der Hälfte der Breite oder Höhe des Elements entspricht. Wenn Sie die Abmessungen des Elements ändern, wirkt sich das auf den Radius der Kreisform aus. Dies ist ein einfaches Beispiel dafür, wie CSS-Formen responsiv sein können.

Bevor wir fortfahren, eine kurze Anmerkung: Denken Sie daran, dass CSS-Formen nur die Form des Floating-Bereichs um ein Element beeinflussen. Hat das Element einen Hintergrund, wird dieser nicht durch die Form abgeschnitten. Um diesen Effekt zu erzielen, müssen Sie Eigenschaften aus der CSS-Maskierung verwenden, also entweder clip-path oder mask-image. Die Eigenschaft clip-path ist sehr praktisch, da sie der gleichen Notation wie CSS-Formen folgt, sodass Sie Werte wiederverwenden können.

Abbildung der Form „circle()“ mit Clip-Path

In den Abbildungen in diesem Dokument wird die Form durch Ausschneiden hervorgehoben, um die Auswirkungen besser zu veranschaulichen.

Zurück zur Kreisform.

Wenn Sie Prozentsätze für den Kreisradius verwenden, wird der Wert mit einer etwas komplexeren Formel berechnet: sqrt(width^2 + height^2) / sqrt(2). Das ist hilfreich, weil Sie sich so vorstellen können, wie die resultierende Kreisform aussehen wird, wenn die Abmessungen des Elements nicht gleich sind.

Alle CSS-Einheiten können in den Koordinaten der Formfunktion verwendet werden, z. B. px, em, rem, vw und vh. Sie können diejenige auswählen, die für Ihre Anforderungen flexibel oder starr genug ist.

Sie können die Position des Kreises anpassen, indem Sie explizite Werte für die Koordinaten seines Mittelpunkts festlegen.

.element{
  shape-outside: circle(50% at 0 0);
}

Dadurch wird der Mittelpunkt des Kreises am Ursprung des Koordinatensystems positioniert. Was ist das Koordinatensystem? Hier führen wir Referenzfelder ein.

Referenzfelder für CSS-Formen

Das Referenzfeld ist ein virtueller Rahmen um das Element. Es legt das Koordinatensystem fest, das zum Zeichnen und Positionieren der Form verwendet wird. Der Ursprung des Koordinatensystems befindet sich in der oberen linken Ecke. Die X-Achse zeigt nach rechts und die Y-Achse nach unten.

Koordinatensystem für CSS-Formen

Denken Sie daran, dass shape-outside die Form des Floating-Bereichs ändert, um den die Inhalte umgebrochen werden. Der Schwebebereich erstreckt sich bis zu den äußeren Rändern des durch die Property margin definierten Felds. Dieser wird als margin-box bezeichnet und ist das Standardbezugsfeld für eine Form, wenn keines explizit erwähnt wird.

Die folgenden beiden CSS-Deklarationen führen zu identischen Ergebnissen:

.element{
  shape-outside: circle(50% at 0 0);
  /* identical to: */
  shape-outside: circle(50% at 0 0) margin-box;
}

Wir haben noch keinen Rand für das Element festgelegt. An dieser Stelle kann davon ausgegangen werden, dass sich der Ursprung des Koordinatensystems und der Kreismittelpunkt in der oberen linken Ecke des Inhaltsbereichs des Elements befinden. Das ändert sich, wenn Sie einen Rand festlegen:

.element{
  shape-outside: circle(50% at 0 0) margin-box;
  margin: 100px;
}

Der Ursprung des Koordinatensystems liegt jetzt außerhalb des Inhaltsbereichs des Elements (100 px nach oben und 100 px nach links), ebenso wie der Mittelpunkt des Kreises. Der berechnete Wert des Kreisradius wird ebenfalls entsprechend der größeren Oberfläche des Koordinatensystems angepasst, die vom Referenzfeld margin-box festgelegt wurde.

Margin-Box-Koordinatensystem mit und ohne Rand
Es stehen einige Optionen für Referenzfelder zur Auswahl: „margin-box“, „Border-box“, „padding-box“ und „content-box“. Die Namen implizieren ihre Grenzen. Wir haben bereits den Margin-Box erläutert. Der Border-Box ist durch die Außenränder der Ränder des Elements begrenzt, der Padding-Box durch den Abstand des Elements, während der Content-Box mit der tatsächlichen Oberfläche identisch ist, die vom Inhalt innerhalb eines Elements verwendet wird.
Abbildung aller Referenzfelder

Mit einer shape-outside-Deklaration kann jeweils nur ein Referenzfeld verwendet werden. Jedes Referenzfeld beeinflusst die Form auf unterschiedliche und manchmal subtile Weise. In einem weiteren Artikel erfahren Sie mehr über Referenzfelder für CSS-Formen.

Die Funktion ellipse()

Abbildung des Formwerts „ellipse()“

Ellipsen sehen aus wie gestauchte Kreise. Sie werden als ellipse(rx ry at cx cy) definiert, wobei rx und ry die Radien der Ellipse auf der X- und Y-Achse sind und cx und cy die Koordinaten des Mittelpunkts der Ellipse sind.

.element{
  shape-outside: ellipse(150px 300px at 50% 50%);
  width: 300px;
  height: 600px;
}

Prozentwerte werden aus den Dimensionen des Koordinatensystems berechnet. Es sind keine komplizierten Berechnungen erforderlich. Sie können die Koordinaten für den Mittelpunkt der Ellipse weglassen. Sie werden dann aus dem Mittelpunkt des Koordinatensystems abgeleitet.

Radien auf der X‑ und Y‑Achse können auch mithilfe von Keywords definiert werden: farthest-side ergibt einen Radius, der dem Abstand zwischen dem Ellipsenmittelpunkt und der am weitesten entfernten Seite des Referenzfelds entspricht. closest-side bedeutet genau das Gegenteil: Es wird der kürzeste Abstand zwischen dem Mittelpunkt und einer Seite verwendet.

.element{
  shape-outside: ellipse(closest-side farthest-side at 50% 50%);
  /* identical to: */
  shape-outside: ellipse(150px 300px at 50% 50%);
  width: 300px;
  height: 600px;
}

Das kann nützlich sein, wenn sich die Abmessungen des Elements (oder des Referenzfelds) auf unvorhersehbare Weise ändern, die Ellipsenform sich aber anpassen soll.

Dieselben Keywords farthest-side und closest-side können auch für den Umkreis in der Formfunktion circle() verwendet werden.

Mit der Funktion polygon()

Abbildung des Formwerts „polygon()“

Wenn Kreise und Ellipsen zu eingeschränkt sind, bietet die Polygonfunktion eine Vielzahl von Optionen. Das Format ist polygon(x1 y1, x2 y2, ...). Sie geben für jeden Eckpunkt (Punkt) eines Polygons Paare von X‑ und Y‑Koordinaten an. Die Mindestanzahl von Paaren für ein Polygon ist drei, also ein Dreieck.

.element{
  shape-outside: polygon(0 0, 0 300px, 300px 600px);
  width: 300px;
  height: 600px;
}

Die Eckpunkte werden im Koordinatensystem platziert. Bei responsiven Polygonen können Sie für einige oder alle Koordinaten Prozentwerte verwenden.

.element{
  /* polygon responsive to font-size*/
  shape-outside: polygon(0 0, 0 100%, 100% 100%);
  width: 20em;
  height: 40em;
}

Es gibt einen optionalen Parameter fill-rule, aus SVG importiert, der dem Browser vorgibt, wie das Innere eines Polygons bei sich selbst schneidenden Pfaden oder geschlossenen Formen berücksichtigt werden soll. Joni Trythall erklärt sehr gut, wie die Fill-Rule-Eigenschaft in SVG funktioniert. Wenn sie nicht definiert ist, wird standardmäßig nonzero verwendet.

.element{
  shape-outside: polygon(0 0, 0 100%, 100% 100%);
  /* identical to: */
  shape-outside: polygon(nonzero, 0 0, 0 100%, 100% 100%);
}

Die Funktion inset()

Mit der Formfunktion inset() können Sie rechteckige Formen erstellen, um den Inhalt umzubrechen. Das mag angesichts der ursprünglichen Annahme, dass CSS freie Webinhalte aus einfachen Feldern formt, kontraintuitiv klingen. Das könnte durchaus sein. Ich habe noch keinen Anwendungsfall für inset() gefunden, der nicht bereits mit Gleitkommazahlen und Rändern oder mit polygon() realisierbar ist. Allerdings ist inset() für rechteckige Formen besser lesbar als polygon().

Die vollständige Notation für eine eingefügte Formfunktion lautet inset(top right bottom left border-radius). Die ersten vier Positionsargumente sind Abstände von den Rändern des Elements nach innen. Das letzte Argument ist der Rahmenradius für die rechteckige Form. Dieser Schritt ist optional und kann übersprungen werden. Sie folgt der Kurzschreibweise border-radius, die Sie bereits in CSS verwenden.

.element{
  shape-outside: inset(100px 100px 100px 100px);
  /* yields a rectangular shape which is 100px inset on all sides */
  float: left;
}

Formen aus Referenzfeldern erstellen

Wenn Sie für das Attribut shape-outside keine Formfunktion angeben, kann der Browser eine Form aus dem Referenzfeld des Elements ableiten. Das standardmäßige Referenzfeld ist margin-box. Bisher nichts Ungewöhnliches, so funktionieren Floats bereits. Mit dieser Technik können Sie jedoch die Geometrie eines Elements wiederverwenden. Sehen wir uns das Attribut border-radius an.

Wenn Sie damit die Ecken eines freischwebenden Elements abrunden, wird der Zuschneideeffekt angewendet, der freischwebende Bereich bleibt jedoch rechteckig. Fügen Sie shape-outside: border-box hinzu, um die durch die border-radius erstellte Kontur zu umschließen.

Eine Form aus dem Border-Radius eines Elements mithilfe des Border-Box-Referenzfelds extrahieren
.element{
  border-radius: 50%;
  shape-outside: border-box;
  float: left;
}

Natürlich können Sie alle Referenzfelder auf diese Weise verwenden. Hier ist eine weitere Verwendung für abgeleitete Formen: versetzte Pull-Zitate.

Mit dem Referenzfeld für das Inhaltsfeld ein versetztes Zitat erstellen

Sie können den Effekt eines versetzten Pullquotes auch mithilfe der Eigenschaften „float“ und „margin“ erzielen. Dazu müssen Sie das Zitatelement jedoch im HTML-Baum an der Stelle platzieren, an der es gerendert werden soll.

So erzielen Sie denselben Effekt wie bei einem versetzten Pullquote, aber mit mehr Flexibilität:

.pull-quote{
  shape-outside: content-box;
  margin-top: 200px;
  float: left;
}

Wir legen das content-box-Referenzfeld für das Koordinatensystem der Form explizit fest. In diesem Fall definiert die Menge des Inhalts im Zitat die Form, um die der äußere Inhalt umgebrochen wird. Mit dem Attribut margin-top wird hier das Pullquote positioniert (versetzt), unabhängig von seiner Position im HTML-Baum.

Formrand

Wenn Sie den Text um eine Form herum brechen, kann es passieren, dass er zu nah am Element anliegt. Mit der Eigenschaft shape-margin können Sie den Abstand um die Form festlegen.

.element{
  shape-outside: circle(40%);
  shape-margin: 1em;
  float: left;
}

Der Effekt ist ähnlich, wie Sie es von der Verwendung der regulären margin-Eigenschaft gewohnt sind, aber der shape-margin wirkt sich nur auf den Bereich um den Wert shape-outside aus. Es wird nur dann ein Abstand um die Form hinzugefügt, wenn im Koordinatensystem Platz dafür vorhanden ist. Deshalb ist im obigen Beispiel der Kreisradius auf 40 % und nicht auf 50 % festgelegt. Bei einem Radius von 50 % hätte der Kreis den gesamten Raum im Koordinatensystem eingenommen, sodass für den Effekt von shape-margin kein Platz gelassen wurde. Denken Sie daran, dass die Form letztendlich auf den margin-box des Elements (das Element und der umgebende margin) beschränkt ist. Wenn die Form größer ist und überläuft, wird sie auf den margin-box zugeschnitten und Sie erhalten eine rechteckige Form.

Für shape-margin ist nur ein einziger positiver Wert zulässig. Es gibt keine Langschreibweise. Was ist eigentlich ein „Form-Rand-Top“ für einen Kreis?

Formen animieren

Sie können CSS-Formen mit vielen anderen CSS-Funktionen wie Übergängen und Animationen mischen. Ich muss jedoch betonen, dass Nutzer es sehr ärgerlich finden, wenn sich das Textlayout während des Lesens ändert. Achten Sie genau darauf, wie die Animation wirkt, wenn Sie sich für die Animation von Formen entscheiden.

Sie können die Radien und Mittelpunkte der Formen circle() und ellipse() animieren, sofern sie in Werten definiert sind, die vom Browser interpoliert werden können. Der Wechsel von circle(30%) zu circle(50%) ist möglich. Eine Animation zwischen circle(closest-side) und circle(farthest-side) würde jedoch den Browser überlasten.

.element{
  shape-outside: circle(30%);
  transition: shape-outside 1s;
  float: left;
}

.element:hover{
  shape-outside: circle(50%);
}
GIF mit animiertem Kreis

Bei der Animation von polygon()-Formen können interessantere Effekte erzielt werden. Dabei ist jedoch zu beachten, dass das Polygon zwischen den beiden Animationsstatus dieselbe Anzahl von Scheitelpunkten haben muss. Der Browser kann nicht interpolieren, wenn Sie Eckpunkte hinzufügen oder entfernen.

Ein Trick besteht darin, die maximal benötigte Anzahl von Scheitelpunkten hinzuzufügen und diese im Animationsstatus geclustert zu positionieren, wo weniger Kanten wahrgenommen werden sollen.

.element{
  /* four vertices (looks like rectangle) */
  shape-outside: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  transition: shape-outside 1s;
}

.element:hover{
  /* four vertices, but second and third overlap (looks like triangle) */
  shape-outside: polygon(0 0, 100% 50%, 100% 50%, 0 100%);
}
GIF eines animierten Dreiecks

Inhalte in einer Form umbrechen

Screenshot der Demo „Alice im Wunderland“, in der Inhalte mit CSS-Formen umgebrochen werden

Der erste Entwurf der CSS-Formenspezifikation enthielt die Eigenschaft shape-inside, mit der sich Inhalte in einer Form umbrechen lassen. Es gab sogar eine Zeit lang Implementierungen in Chrome und Webkit. Das Einbetten beliebig positionierter Inhalte in einen benutzerdefinierten Pfad erfordert jedoch viel mehr Aufwand und Recherche, um alle möglichen Szenarien abzudecken und Fehler zu vermeiden. Deshalb wurde die Property shape-inside auf CSS-Formen – Level 2 verschoben und Implementierungen dafür zurückgezogen.

Mit etwas Aufwand und ein paar Kompromissen können Sie jedoch trotzdem den Effekt erzielen, dass Inhalte in einer benutzerdefinierten Form umgebrochen werden. Der Trick besteht darin, zwei schwimmende Elemente mit shape-outside zu verwenden, die sich an gegenüberliegenden Seiten eines Containers befinden. Der Kompromiss besteht darin, dass Sie ein oder zwei leere Elemente verwenden müssen, die keine semantische Bedeutung haben, aber als Stützen dienen, um die Illusion einer Form im Inneren zu erzeugen.

<div>
  <div class='left-shape'></div>
  <div class='right-shape'></div>

  Lorem ipsum...
</div>

Die Position der Elemente .left-shape und .right-shape am oberen Rand des Containers ist wichtig, da sie nach links und rechts geschoben werden, um den Inhalt zu flankieren.

.left-shape{
  shape-outside: polygon(0 0, ...);
  float: left;
  width: 50%;
  height: 100%;
}

.right-shape{
  shape-outside: polygon(50% 0, ...);
  float: right;
  width: 50%;
  height: 100%;
}
Abbildung der Problemumgehung für „shape-inside“ für Alice-Demo

Durch dieses Styling nehmen die beiden freiliegenden Stützelemente den gesamten Platz innerhalb des Elements ein, die shape-outside-Attribute schaffen jedoch Platz für den Rest des Inhalts.

Wenn CSS-Formen vom Browser nicht unterstützt werden, führt dies zu negativen Effekten, da der gesamte Inhalt nach unten verschoben wird. Deshalb ist es wichtig, die Funktion schrittweise zu optimieren.

In den vorherigen Beispielen für Formanimationen werden Sie feststellen, dass das Verschieben von Text lästig sein kann. Nicht alle Anwendungsfälle erfordern eine animierte Form. Sie können jedoch andere Eigenschaften animieren, die mit CSS-Formen interagieren, um dort, wo es sinnvoll ist, Effekte hinzuzufügen.

In der Alice im Wunderland-Demo für CSS-Formen haben wir die Scrollposition verwendet, um den oberen Rand des Inhalts zu ändern. Der Text wird zwischen zwei freiliegenden Elementen eingeklemmt. Wenn es nach unten bewegt wird, muss das Layout entsprechend dem shape-outside der beiden unverankerten Elemente neu angeordnet werden. Dadurch entsteht der Eindruck, dass der Text in den Bann gezogen wird, was das Storytelling bereichert. Willst du grenzwertig sein? Vielleicht. Aber es sieht cool aus.

Da das Textlayout vom Browser nativ ausgeführt wird, ist die Leistung besser als bei einer JavaScript-Lösung. Das Ändern von „margin-top“ beim Scrollen löst jedoch viele Neulayout- und Paint-Ereignisse aus, was die Leistung erheblich beeinträchtigen kann. Mit Vorsicht zu verwenden! Die Verwendung von CSS-Formen ohne Animation führt jedoch nicht zu einem erkennbaren Leistungseinbußen.

Progressive Verbesserung

Gehen Sie davon aus, dass der Browser CSS-Formen nicht unterstützt, und bauen Sie darauf auf, wenn Sie die Funktion erkennen. Modernizr ist eine gute Lösung für die Funktionserkennung. Im Abschnitt „Nicht-Kernerkennung“ gibt es einen Test für CSS-Formen.

Einige Browser bieten die Funktionserkennung in CSS über die Regel @supports an, ohne dass externe Bibliotheken erforderlich sind. Google Chrome, das auch CSS-Formen unterstützt, versteht die @supports-Regel. So können Sie damit Folgendes nach und nach verbessern:

.element{
  /* styles for all browsers */
}

@supports (shape-outside: circle(50%)){
  /* styles only for browsers which support CSS Shapes */
  .element{
    shape-outside: circle(50%);
  }
}

Lea Verou hat weitere Informationen zur Verwendung der CSS-Regel „@supports“ veröffentlicht.

Unterscheidung von Preisvergleichsportal-Ausschlüssen

Was wir heute als CSS-Formen kennen, wurde in den frühen Tagen der Spezifikation als CSS-Ausschlüsse und -Formen bezeichnet. Die Umbenennung mag wie eine Nuance erscheinen, ist aber eigentlich sehr wichtig. CSS-Ausschlüsse, jetzt eine separate Spezifikation, ermöglichen das Umschließen von Inhalten um beliebig positionierte Elemente, ohne dass dafür ein Float-Attribut erforderlich ist. Angenommen, Sie möchten Text um ein Element mit absoluter Positionierung herumwickeln. Das ist ein Anwendungsfall für CSS-Ausschlüsse. Mit CSS-Formen wird nur der Pfad definiert, um den sich der Inhalt umbrechen soll.

Formen und Ausschlüsse sind also nicht dasselbe, sondern ergänzen sich. CSS-Formen sind bereits in Browsern verfügbar, während CSS-Ausschlüsse noch nicht für die Interaktion mit Formen implementiert sind.

Tools für die Arbeit mit CSS-Formen

Sie können Pfade in klassischen Bild-Authoring-Tools erstellen, aber keines davon exportiert derzeit die erforderliche Syntax für CSS-Formwerte. Aber selbst wenn sie es täten, wäre dies nicht zu praktikabel.

CSS-Formen sind für die Verwendung im Browser gedacht, wo sie auf andere Elemente auf der Seite reagieren. Es ist sehr hilfreich, die Auswirkungen der Bearbeitung der Form auf die umgebenden Inhalte zu visualisieren. Es gibt einige Tools, die dir bei diesem Workflow helfen können:

Brackets: Die Erweiterung „CSS Shapes Editor“ für Brackets verwendet den Live-Vorschaumodus des Code-Editors, um einen interaktiven Editor zum Bearbeiten von Formwerten einzublenden.

Google Chrome: Die CSS Shapes Editor-Erweiterung für Google Chrome erweitert die Entwicklertools des Browsers um Steuerelemente zum Erstellen und Bearbeiten von Formen. Dadurch wird ein interaktiver Editor über dem ausgewählten Element platziert.

Der Inspector in Google Chrome unterstützt das Hervorheben von Formen. Bewegen Sie den Mauszeiger auf ein Element mit der Eigenschaft shape-outside. Es leuchtet auf, um die Form darzustellen.

Formen aus Bildern: Wenn Sie lieber Bilder generieren und dem Browser die Aufgabe überlassen möchten, daraus Formen zu extrahieren, hat Rebecca Hauck ein gutes Tutorial für Photoshop geschrieben.

Polyfill: Google Chrome ist der erste große Browser, der CSS-Formen unterstützt. Die Funktion wird bald unter iOS 8 und Safari 8 von Apple unterstützt. Andere Browseranbieter werden das in Zukunft möglicherweise in Betracht ziehen. Bis dahin gibt es eine CSS-Shapes-Polyfill, die grundlegende Unterstützung bietet.

Fazit

Im Web, wo Inhalte meist in einfachen Feldern eingeschlossen sind, bieten CSS-Formen eine Möglichkeit, ein ausdrucksstarkes Layout zu erstellen und die Lücke zwischen Web- und Druckdesign zu schließen. Natürlich können Formen auch missbraucht werden und zu Ablenkungen führen. Wenn sie jedoch mit Geschmack und gutem Urteilsvermögen eingesetzt werden, können Formen die Präsentation von Inhalten verbessern und die Aufmerksamkeit der Nutzer auf eine für sie einzigartige Weise lenken.

Zum Abschluss noch eine Auswahl von Arbeiten anderer, hauptsächlich aus der Druckbranche, die interessante Verwendungsmöglichkeiten für ein nicht rechteckiges Layout zeigen. Ich hoffe, dass Sie sich von diesen Beispielen inspirieren lassen und mit neuen Designideen experimentieren.

Vielen Dank an Pearl Chen, Alan Stearns und Zoltan Horvath für die Lektüre dieses Artikels und die wertvollen Einblicke.