LiquidGlass
LiquidGlass ist eine leichte JavaScript/TypeScript-Bibliothek für realistische WebGL-Glaseffekte wie Brechung, Blur und chromatische Aberration auf HTML-Elementen.
Was ist LiquidGlass?
LiquidGlass ist eine leichte JavaScript/TypeScript-Bibliothek, die realistische Glaseffekte auf jedem HTML-Element mit WebGL-Shaders rendert. Sie wendet Brechung, Unschärfe, chromatische Aberration, spekulare Reflexe und zugehörige Beleuchtungseffekte an, indem sie den DOM-Inhalt hinter jedem Glaselement erfasst und in Echtzeit kompositiert.
Die Bibliothek ist für beliebige Seitenhintergründe (Bilder, Videos, Canvas oder einfaches HTML) ausgelegt. Sie nutzt eine Multi-Pass-Rendering-Pipeline und unterstützt mehrere Glasschichten, element-spezifische Konfigurationen und dynamische Updates auf der Seite.
Hauptfunktionen
- WebGL-Shader-basierte Glasdarstellung für HTML-Elemente: Erzeugt das Glas-Optik, indem der DOM-Inhalt hinter dem Glaselement verarbeitet und als Shader-Ausgabe kompositiert wird.
- Echtzeit-Multi-Pass-Pipeline: Unterstützt Effekte wie Brechung, Unschärfenstärke, chromatische Randverfärbung und spekular/rim-Beleuchtung.
- Element- und globale Konfiguration: Konfiguriere jedes Glaselement individuell via
data-config(JSON) oder globale Standardwerte über diedefaults-Option. - Schichtweise Glas-Komposition: Unterstützt Glas-auf-Glas-Setups durch den Kompositionsansatz.
- Interaktive Positionierungsoptionen: Kann bei Aktivierung (z. B.
floating: true) verschiebbares „schwebendes“ Panel-Verhalten injizieren und enthält einenbutton-Modus für Hover/Press-Shader-Feedback. - Realistische Oberflächensteuerungen: Parameter umfassen
cornerRadius,zRadius(Fasen-Tiefe),bevelMode(Formkrümmungsmodus),brightness,saturation,shadowOpacityundfresnel-Reflexion.
So verwenden Sie LiquidGlass
- Installieren oder importieren: Via npm installieren (
npm install @ybouane/liquidglass) oder direkt vom CDN importieren (https://cdn.jsdelivr.net/npm/@ybouane/liquidglass/dist/index.js). - Positionierten Root-Container erstellen: Das an
LiquidGlass.init()übergebeneroot-Element muss ein Container mitposition: relativesein. - Glaselemente im Root hinzufügen: Jedes Glaselement muss ein direktes Kind des Roots sein. Bei Initialisierung injiziert LiquidGlass ein
<canvas>als erstes Kind des Glaselements für die Shader-Ausgabe. - Initialisieren: Instanz mit
LiquidGlass.init({ root: document.querySelector('#my-root'), glassElements: document.querySelectorAll('.glass') })erstellen und später mitinstance.destroy()aufräumen. - Effekte konfigurieren: Element-spezifische Einstellungen via
element.dataset.config = JSON.stringify({ ... })angeben (z. B. Unschärfe, Brechung, Eckradius). Verwenden Sie das Playground-Muster für visuelle Anpassungen.
Anwendungsfälle
- Individuelle „Glas“-Karten und Panels: Frosted, dunkles oder normales Glas-Styling auf Karten-Elemente durch Anpassung von
blurAmount,brightness,cornerRadiusundzRadiusanwenden. - Interaktives Lupe-ähnliches Objektiv:
bevelMode: 1mit passendemcornerRadiusundzRadiusfür Halbkugel-/Kuppel-Objektiv-Effekt nutzen (optionalfloatingaktivieren). - Hover/Press-UI-Feedback:
button: truesetzen, damit das Glaselement auf Benutzerinteraktion reagiert – Hover erhöht Helligkeit, Press flacht Fasung ab und vertieft Schatten. - Schichtweise Glas-auf-Glas-Kompositionen: Multi-Layer-UI mit überlappenden Glaselementen aufbauen, unter Nutzung der LiquidGlass-Komposition für gestapelte Effekte.
- Glas über reichen Hintergründen: Glaselemente über Hintergründen wie Bildern, Videos, Canvas oder normalem HTML-Inhalt platzieren, wobei diese im Root als abgetastete Kinder bleiben.
FAQ
Benötige ich eine spezifische DOM-Struktur?
Ja. Der root muss ein positionierter Container (position: relative) sein, und jedes Glaselement muss ein direktes Kind des Roots sein. Verschachtelte Glaselemente werden bei Init mit einer Konsole-Warnung abgelehnt.
Was erfasst LiquidGlass für den Glaseffekt?
Der Shader tastet die Kinder des Roots ab, daher sollte Hintergrundinhalt wie Bilder in einem Geschwister-Element im Root liegen. Der Root selbst wird nicht erfasst.
Erstellt LiquidGlass DOM-Elemente für mich?
Es injiziert ein <canvas> als erstes Kind des Glaselements für die Shader-Ausgabe. Vermeiden Sie daher :first-child-CSS-Selektoren für das Glaselement.
Kann ich mehrere LiquidGlass-Roots auf einer Seite verwenden?
Die Einschränkungen besagen, dass mehrere LiquidGlass-Roots keine Brechung teilen können. Glaselemente in einem Root sehen nicht, was Glaselemente in einem anderen Root rendern.
Gibt es Performance-Aspekte?
Ja. Die Bibliothek basiert auf Echtzeit-DOM-Rasterisierung und einer Multi-Pass-WebGL-Pipeline; das Erfassen von DOM in ein Canvas gilt als aufwendig.
Alternativen
- CSS-only Glaseffekte (backdrop-filter / Blur-Techniken): Einfachere, rein CSS-basierte Ansätze können Frostglas approximieren, bieten aber typischerweise nicht dasselbe Verhalten bei Brechung/chromatischer Aberration/spekularem Pipeline-Verlauf.
- WebGL-Shader-Frameworks oder eigene Three.js/WebGL-Implementierungen: Bei Bedarf an voller Kontrolle können Sie eigene Shader-Pässe implementieren; dies verlagert die Arbeit von einer Bibliotheksabstraktion in Ihre eigene Rendering-Pipeline.
- Andere DOM-to-Canvas/Echtzeit-Effekt-Pipelines: Benachbarte Lösungen, die DOM zu Texturen rasterisieren, eignen sich für Screen-Space-Effekte, unterscheiden sich jedoch in Workflow und Konfiguration von LiquidGlass’ DOM-basiertem Glaselement-Setup.
- Statische Design-Assets: Wo Interaktionen und Echtzeit-Updates nicht benötigt werden, können vorgerenderte Glasbilder oder exportierte Komponenten die Laufzeitkosten senken – auf Kosten dynamischer Brechung/Parameteränderungen.
Alternativen
AakarDev AI
AakarDev AI ist eine leistungsstarke Plattform, die die Entwicklung von KI-Anwendungen mit nahtloser Integration von Vektordatenbanken vereinfacht und eine schnelle Bereitstellung und Skalierbarkeit ermöglicht.
DeepMotion
DeepMotion ist eine AI-Motion-Capture- und Body-Tracking-Plattform für 3D-Animationen aus Video (und Text) im Browser – per Animate 3D API integrierbar.
Arduino VENTUNO Q
Arduino VENTUNO Q ist ein Edge-AI-Computer für Robotik und physische Systeme: KI-Inferenz mit Microcontroller für deterministische Steuerung. Entwickeln in Arduino App Lab.
Devin
Devin ist ein AI-Coding-Agent für Softwareteams: unterstützt Parallelisierung von Migrations- und Refactoring-Subtasks, während Engineers steuern und Änderungen freigeben.
imgcook
imgcook ist ein intelligentes Tool, das Design-Mockups mit einem Klick in hochwertigen, produktionsbereiten Code umwandelt.
Rork
Rork erstellt mit AI und Expo (React Native) aus deiner Beschreibung komplette Mobile-Apps – vom Entwurf schnell zur nutzbaren App.