Eine erste Implementierung von clip-path: path();

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Eine Sache, die mich schon lange überrascht (und betrübt) hat, ist, dass die clip-path Eigenschaft, so toll sie auch ist, nur wenige Werte akzeptiert. Die Funktionen circle() und ellipse() sind nett, aber das Ausblenden von Überläufen und das Runden mit border-radius helfen da im Allgemeinen schon. Vielleicht ist der nützlichste Wert polygon(), weil er es uns ermöglicht, eine Form aus geraden Linien an beliebigen Punkten zu zeichnen.

Update: Alle drei Browser-Engines unterstützen clip-path: path() jetzt. Hurra!

Hier ist eine Demo für jeden Wert

Der traurige Teil kommt, wenn man feststellt, dass clip-path path() nicht akzeptiert. Kommt schon, es hat *path* im Namen! Die Pfadsyntax, die von SVG stammt, ist die ultimative Syntax. Sie erlaubt es uns, buchstäblich jede Form zu zeichnen.

Noch verwirrender ist, dass es bereits eine Funktion path() gibt, die Eigenschaften wie offset-path verwenden.

Ich war einmal so fassungslos über all das, dass ich einen ganzen Konferenzvortrag daraus gemacht habe.

Der Vortrag geht auf die Eigenschaft shape-outside ein und wie sie path() nicht verwenden kann. Er geht auch darauf ein, dass wir die Eigenschaft d eines tatsächlichen <path> ändern *können*.

Ich mache aber niemandem wirklich Vorwürfe. Das sind seltsame Dinge und sie werden von verschiedenen Teams implementiert, was unweigerlich zu unterschiedlichen Ergebnissen führt. Schon die Tatsache, dass SVG einheitenlose Werte in der Syntax <path d=""> verwendet, ist ein wenig seltsam und eine Anomalie in der CSS-Welt. Wie das funktioniert, wie Werte mit Einheiten funktionieren, welche Kommasyntax erlaubt und verboten ist und was das DOM zurückgibt, wenn man danach fragt, ist genug, um einen Kopf zum Drehen zu bringen.

Aber egal! Da kommt Firefox mit einer Implementierung!

Unterstützung

Hier ist das Flag in Firefox (layout.css.clip-path-path.enabled)

Update!

Und hier ist eine Demo...

In nicht unterstützten Browsern sehen Sie ein Quadrat und in denjenigen, die clip-path: path(); unterstützen – was zum Zeitpunkt des Schreibens nur Firefox Nightly mit aktiviertem Flag ist – ein Herz.

A screenshot of clip-path: path() working in Firefox Nightly

Jetzt brauchen wir nur noch

  • clip-path in der Lage sein, auf die URL eines <path> in SVG zu verweisen, wie z. B. url("#clip-path");
  • shape-outside in der Lage sein, path() zu verwenden
  • shape-outside in der Lage sein, auf einen <path> zu verweisen
  • offset-path, um all die anderen Formfunktionen zu verwenden
  • Wahrscheinlich eine Reihe von Spezifikationen, um sicherzustellen, dass dies alles sauber gehandhabt wird (Viel Glück, Team!)
  • Browser, die all das implementieren

😉