Mit diesem Hack verbesserst du die User Experience von CodePen

CodePen ist für mich eine geniale Plattformen, um sich inspirieren zu lassen und herauszufinden, was durch Web-Technologien alles möglich ist.

Was mich aber störte: die Pen-Gallerie. Gerade wenn man nur kurz in das Ergebnis hereinschauen wollte, dauert es sehr lange, weil die Seite für einen Pen ganz neu aufgebaut werden musste. Dann musste man wieder zurück zur Gallerie navigieren (was auch nochmal dauerte).

Also habe durch die Konsole des Browsers per JavaScript einen kleinen Hack geschrieben:

See the Pen CodePen gallery hack by Lars Gerrit Kliesing LGK (@lgkonline) on CodePen.

Der Code bewirkt, dass die Links zu den Pens jeweils in einen Iframe geöffnet werden, der dann in den Vordergrund gerät. Nach einem Klick außerhalb des Iframes wird dieser wieder geschlossen und man kann den nächsten Link auswählen.

Ein kleines Problem war, dass bei einem Wechsel auf eine andere Seite das Verhalten wieder zurück gesetzt wurde. Als Workaround wird mein Programm kurz nach einem Seitenwechsel erneut ausgeführt.

So nutzt du den Hack

Während du dich in der Gallerie von CodePen befindest, öffne die Konsole deines Browsers (unter Windows ist das meistens F12). Und füge dort den Code von oben ein.

Das kannst du so machen. Allerdings müsstest du das bei jedem Besuch wiederholen, da der Code ja nicht dauerhaft gespeichert wird. Durch Browser-Erweiterungen (wie z.B. dieser für Chrome) könntest du aber erreichen, dass der Hack jedes Mal ausgeführt wird.

Wie ihr Frosted Glass fürs Web nutzen könnt

Der sogenannte Frosted Glass-Effekt (oder von Microsoft auch Acrylic genannt) ist momentan sehr angesagt. Ich habe auch schon mal ein Video produziert, in dem ich gezeigt habe wie ihr den Effekt mit CSS erzeugen könnt. Leider gibt es mit dieser Technik noch ein paar Probleme, wodurch man sie noch nicht wirklich produktiv einsetzen kann.

Ein Problem ist, dass für die Technik immer ein Hintergrundbild definiert werden muss. Das setzt aber voraus, dass zwischen dem Element mit dem Effekt und dem Hintergrund nichts liegen darf.

Das Element mit dem Effekt ist nämlich nicht wirklich transparent, sondern hat nur den gleichen Hintergrund wie der Body.
Man könnte eine Art Screenshot machen und dieses als Hintergrund benutzen.
Das habe ich mal ausprobiert:

Wie im Beispiel beschrieben, nutze ich html2canvas um das HTML in ein Canvas zu konvertieren. Das Canvas wandel ich dann wiederum in ein Bild um, damit es als Hintergrundbild genutzt werden kann.
Das gesamte Beispiel gibt es hier: https://lgkonline.github.io/frosted-glass/

Die React Komponente react-acrylic geht hier den gleichen Weg, um den Effekt zu erzeugen. Es sei aber gesagt, diese Technik nicht sehr performant ist, da es sehr rechenintensiv ist ein Screenshot zu erzeugen und je nachdem wie viele Elemente es auf der Seite gibt, dauert es auch länger.

Ein anderes Problem ist, dass Browser wie Edge und Firefox beim Scrollen stocken, wenn ein Hintergrundbild als fixed gesetzt ist. Dafür habe ich leider noch keine Lösung gefunden. Diese Problematik wird hier auf Stack Overflow auch genannt.

Auch ist es doch sehr aufwändig, den Effekt zu erzeugen. Es gibt aber Möglichkeiten, sich die Arbeit zu erleichtern.
Auf CodePen habe ich ein Beispiel veröffentlicht, in dem ich eine React Komponente erstellt habe, wodurch ich den Effekt schneller an jeder beliebigen Stelle einbinden kann:

See the Pen FrostedGlass React Component by Lars Gerrit Kliesing LGK (@lgkonline) on CodePen.

Update

Ich habe eine neue CSS-Spezifikation gefunden, mit der es deutlich einfacher wird, den Effekt einzusetzen: backdrop-filter
Mit backdrop-filter: blur(10px); könnte man also Frosted Glass realisieren.
Derzeit wird backgroup-filter leider nur von Safari für macOS und iOS unterstützt, soll aber auch in der nächsten Edge-Version verfügbar sein (Quelle: caniuse.com).

Ich konnte backdrop-filter erfolgreich in diesem Pen testen.

Link zum CodePen: https://codepen.io/lgkonline/pen/GQrLeV

Warum ich nicht mehr Adobe Portfolio verwende

Für die, die es nicht kennen: Adobe Portfolio ist eine Art Website-Baukasten insbesondere für Kreativschaffende, um einfach und ohne nötigen Programmierkenntnissen eine eigene Portfolio-Website zu erstellen.

Auch wenn ich Kenntnisse in der Web-Entwicklung sehr wohl besitze, hielt ich Adobe Portfolio durchaus für interessant. Vor allem die Synchronisation mit Behance ist durchaus praktisch. Alle meine Projekte von dort wurden automatisch auf der Portfolio-Site angezeigt.
In meinem Creative Cloud-Abo ist die Nutzung von Adobe Portfolio übrigens inklusive. Ich musste also nichts extra bezahlen. Auch das war ein Grund für mich, warum ich das ausnutzen sollte.

Nun aber der ausschlagende Grund, warum ich mich für eine Alternative entschieden habe: Die Nutzung von HTTPS in Kombination mit einer eigenen Domain ist unmöglich.  Es ist seit längerem bekannt, dass Suchmaschinen Webseiten mit HTTP schlechter einstufen, als welche mit HTTPS. Browser, wie Chrome kennzeichnen Webseiten mit Eingabefeldern und ohne HTTPS sogar als „Nicht sicher“.
Dieses Manko wurde bereits vor Jahren an Adobe kommuniziert, getan hat sich aber noch nichts. Wenigstens ist dieses Problem im FAQ aufgeführt: Adobe Portfolio FAQ

Der Umstieg

Ich entschied mich also dazu, meine Portfolio-Site selbst zu gestalten und zu entwickeln. Glücklicherweise bietet Behance eine API an. Damit kann ich also auch weiterhin meine Projekte anzeigen lassen.
Gestalterisch habe ich mich zunächst an das Template aus Adobe Portfolio orientiert. Dass ich jetzt alle Freiheiten habe, habe ich das natürlich auch genutzt und habe beispielsweise als Font HK Grotesk verwendet. Bei Adobe Portfolio ist die Schriftarten-Auswahl relativ begrenzt gewesen.

Cool ist auch, dass ich mein Portfolio jetzt auch in mehreren Sprachen anbieten kann. Das war bei Adobe Portfolio auch nicht möglich.
Das neue Portfolio habe ich übrigens u.a. mit React realisiert.