Interessante Bildformen mit der CSS-Eigenschaft „clip-path“ erstellen

Mithilfe von Clipping in CSS können wir dafür sorgen, dass unsere Designs nicht mehr wie ein Quader aussehen. Sie können einen Clippfad mit verschiedenen Grundformen oder einem SVG erstellen. Schneiden Sie dann die Teile eines Elements weg, die nicht angezeigt werden sollen.

Elemente auf Webseiten werden alle in einem rechteckigen Feld definiert. Das bedeutet jedoch nicht, dass alles wie ein Feld aussehen muss. Mit der CSS-Eigenschaft clip-path können Sie Teile eines Bilds oder eines anderen Elements zuschneiden, um interessante Effekte zu erzielen.

Im obigen Beispiel ist das Ballonbild quadratisch (Quelle). Mit clip-path und dem Wert „circle()“ für die Grundform wird der zusätzliche Himmel um den Ballon herum abgeschnitten, sodass auf der Seite ein kreisförmiges Bild verbleibt.

Da das Bild ein Link ist, können Sie sich weitere Informationen zur clip-path-Property ansehen. Nur der sichtbare Bereich des Bilds kann angeklickt werden, da Ereignisse nicht für die ausgeblendeten Bereiche des Bilds ausgelöst werden.

Das Zuschneiden kann auf jedes HTML-Element angewendet werden, nicht nur auf Bilder. Es gibt verschiedene Möglichkeiten, eine clip-path zu erstellen. In diesem Beitrag werden wir uns diese genauer ansehen.

Browserkompatibilität

Unterstützte Browser

  • Chrome: 55.
  • Edge: 79.
  • Firefox: 3.5.
  • Safari: 9.1.

Quelle

Bei älteren Browsern kann als Fallback festgelegt werden, dass die Property clip-path ignoriert und das nicht zugeschnittene Bild angezeigt wird. In diesem Fall können Sie in einer Funktionsabfrage nach clip-path suchen und für nicht unterstützte Browser ein alternatives Layout anbieten.

@supports(clip-path: circle(45%)) {
  /* code that requires clip-path here. */
}

Grundformen

Das Attribut clip-path kann verschiedene Werte annehmen. Im ersten Beispiel wurde der Wert circle() verwendet. Dies ist einer der grundlegenden Formwerte, die in der CSS-Spezifikation für Formen definiert sind. Das bedeutet, dass Sie einen Bereich zuschneiden und denselben Wert für shape-outside verwenden können, damit der Text um diese Form herum umgebrochen wird.

Die vollständige Liste der Grundformen:

inset()

Mit dem Wert inset() wird der zugeschnittene Bereich vom Rand des Elements eingefügt. Es können Werte für den oberen, rechten, unteren und linken Rand übergeben werden. Mit dem Schlüsselwort round können Sie auch ein border-radius hinzufügen, um die Ecken des zugeschnittenen Bereichs zu krümmen.

In meinem Beispiel habe ich zwei Felder mit der Klasse .box. Das erste Feld ist nicht zugeschnitten, das zweite wird mit inset()-Werten zugeschnitten.

circle()

Wie Sie gesehen haben, wird mit dem Wert circle() ein kreisförmiger Ausschnitt erstellt. Der erste Wert ist eine Länge oder ein Prozentsatz und entspricht dem Radius des Kreises. Mit einem zweiten optionalen Wert können Sie den Mittelpunkt des Kreises festlegen. Im folgenden Beispiel verwende ich Keyword-Werte, um den zugeschnittenen Kreis oben rechts zu platzieren. Sie können auch Längen oder Prozentsätze verwenden.

Achten Sie auf flache Kanten.

Beachten Sie bei allen diesen Werten, dass die Form vom Ränder-Frame des Elements abgeschnitten wird. Wenn Sie einen Kreis auf einem Bild erstellen und diese Form über die natürliche Größe des Bildes hinausgeht, entsteht eine flache Kante.

Ein gekürzter Kreis mit geraden Kanten
Auf das zuvor verwendete Bild wurde jetzt circle(50%) angewendet. Da das Bild nicht quadratisch ist, stoßen wir oben und unten an den Randbereich und der Kreis wird zugeschnitten.

ellipse()

Eine Ellipse ist im Grunde ein gestauter Kreis und funktioniert daher sehr ähnlich wie circle(). Sie akzeptiert jedoch einen Radius für „x“ und einen Radius für „y“ sowie den Wert für den Mittelpunkt der Ellipse.

polygon()

Mit dem Wert polygon() können Sie recht komplexe Formen erstellen, indem Sie so viele Punkte wie nötig definieren und die Koordinaten der einzelnen Punkte festlegen.

Clippy ist ein clip-path-Generator, mit dem Sie Polygone erstellen können. Kopieren Sie den Code und fügen Sie ihn in Ihr eigenes Projekt ein.

Formen aus Feldwerten

Auch in CSS-Formen definiert sind Formen aus Box-Werten. Sie beziehen sich auf das CSS-Box-Modell – das Inhalts-, das Ränder-, das Rahmen- und das Margen-Element mit den Keyword-Werten content-box, border-box, padding-box und margin-box.

Diese Werte können allein oder zusammen mit einer einfachen Form verwendet werden, um den Referenzrahmen der Form zu definieren. Mit dem folgenden Code wird die Form beispielsweise an den Rand des Inhalts zugeschnitten.

.box {
  clip-path: content-box;
}

In diesem Beispiel würde der Kreis content-box als Referenzfeld verwenden, anstatt margin-box (Standard).

.box {
  clip-path: circle(45%) content-box;
}

Derzeit unterstützen Browser keine Box-Werte für die Property clip-path. Sie werden jedoch für shape-outside unterstützt.

SVG-Element verwenden

Wenn Sie mehr Kontrolle über den zugeschnittenen Bereich haben möchten als mit einfachen Formen möglich ist, verwenden Sie ein SVG-clipPath-Element. Verweisen Sie dann auf diese ID und verwenden Sie url() als Wert für clip-path.

Zugeschnittenen Bereich animieren

CSS-Übergänge und -Animationen können auf das clip-path angewendet werden, um interessante Effekte zu erzielen. Im nächsten Beispiel animiere ich einen Kreis beim Hovern, indem ich zwischen zwei Kreisen mit unterschiedlichen Radiuswerten wechsle.

Es gibt viele kreative Möglichkeiten, Animationen mit dem Zuschneiden zu kombinieren. Im Artikel Animieren mit clip-path auf CSS Tricks werden einige Ideen vorgestellt.

Foto von Matthew Henry bei Burst