Progressive Enhancement: Grundlegender Inhalt und erweiterte Funktionen
Progressive Enhancement stellt sicher, dass Webseiten grundlegenden Inhalt und Funktionalität für alle Nutzer bereitstellen, während erweiterte Funktionen in unterstützenden Browsern aktiviert werden. Dieser Leitfaden behandelt Progressive Enhancement Prinzipien.
Aktualisiert:Was ist Progressive Enhancement?
Progressive Enhancement ist ein Ansatz in der Webentwicklung, der mit dem 'Worst Case' (am wenigsten fähiger Browser) beginnt und die Erfahrung mit unterstützten Features verbessert.
Kernprinzip: Inhalt und grundlegende Funktionalität sollten immer funktionieren. JavaScript, CSS und erweiterte HTML-Features verbessern die Erfahrung, sind aber nicht erforderlich.
Gegenteil von Graceful Degradation: Graceful Degradation beginnt mit der besten Erfahrung und verschlechtert sich in Umgebungen mit geringen Fähigkeiten. Progressive Enhancement beginnt mit grundlegender Erfahrung und verbessert.
Vorteile: Breiterer Nutzerzugang, bessere Performance, besseres SEO, bessere Barrierefreiheit.
Grundlegende Schichten
HTML (Inhalt): Grundlegender Inhalt und Struktur mit semantischem HTML. Ohne JavaScript lesbar und nutzbar.
CSS (Präsentation): Grundlegende Styles funktionieren in allen Browsern. Erweiterte CSS-Features werden mit @supports bedingt angewendet.
JavaScript (Verhalten): Grundlegende Funktionalität durch HTML-Formulare bereitgestellt. JavaScript fügt enhanced UX (AJAX, Animation) hinzu.
Jede Schicht baut auf der vorherigen auf. Wenn eine untere Schicht bricht, brechen auch die oberen Schichten, aber die grundlegende Funktionalität bleibt erhalten.
HTML First Ansatz
Semantisches HTML: Verwenden Sie korrekte HTML-Elemente. <button>, <a>, <form>, <input>, <nav>, <main>, <article>.
Formulare: Erstellen Sie Formulare, die ohne JavaScript funktionieren. Server-seitige Verarbeitung mit action und method Attributen.
Links: Verwenden Sie echte <a href="..."> Links. Client-side Routing mit JavaScript, aber Server-side Routing als Fallback.
NoScript: Zeigen Sie alternativen Inhalt mit <noscript> Tag an, wenn JavaScript deaktiviert ist.
Progressive Web App: Service Worker und Manifest werden hinzugefügt, wenn die grundlegende Seite funktioniert. Grundlegende Seite funktioniert ohne JavaScript.
CSS Progressive Enhancement
@supports: Bedingtes Styling mit CSS Feature Query. @supports (display: grid) { .container { display: grid; } }.
Fallback: Grundlegender Style funktioniert in allen Browsern. Erweiterte Features werden in unterstützenden Browsern angewendet.
Beispiel: .button { background: blue; } @supports (backdrop-filter: blur(10px)) { .button { backdrop-filter: blur(10px); background: rgba(0,0,255,0.5); } }.
CSS Custom Properties: Verwenden Sie Fallback-Werte, wenn Variablen nicht unterstützt werden. color: blue; color: var(--primary, blue);.
JavaScript Progressive Enhancement
Feature Detection: Browser-Fähigkeiten mit Modernizr oder nativer Feature Detection prüfen.
Polyfill: Fehlende Features (fetch, Promise, IntersectionObserver) mit Polyfill hinzufügen. core-js oder polyfill.io verwenden.
Graceful Degradation: Grundlegende Funktionalität sollte bei JavaScript-Fehlern erhalten bleiben. Fehler mit try/catch abfangen.
Module/nomodule: ES Modules für moderne Browser, transpiled Bundle für ältere Browser. <script type="module" src="app.mjs"> und <script nomodule src="app.js">.
Lazy Loading: Erweiterte Features (Animation, interaktive Widget) lazy laden. Grundlegender Inhalt lädt sofort.
Testen und Evaluierung
JavaScript deaktiviert Test: JavaScript im Browser deaktivieren. Funktioniert die grundlegende Funktionalität?
Langsame Verbindung Test: Mit 3G oder langsamem WiFi testen. Lädt der Inhalt rechtzeitig?
Alte Browser Test: Mit IE11, altem Safari/Chrome testen. Funktioniert die grundlegende Funktionalität?
Lighthouse: Accessibility und Best Practices Scores prüfen. Progressive Enhancement verbessert diese Scores.