Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
| root:web:design:responsive [2021/08/09 16:18] – ↷ Seite von sport:windsurfren:web:design:responsive nach root:web:design:responsive verschoben wolfgang | root:web:design:responsive [2026/07/24 13:01] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== | ||
| + | web: | ||
| + | Beim " | ||
| + | |||
| + | " | ||
| + | |||
| + | Hier eine kleine Zusammenfassung, | ||
| + | |||
| + | ===== 1. Festlegung der Größenbereiche ===== | ||
| + | |||
| + | Eine Media Query im CSS bestimmt einen Bereich von CSS Anweisungen, | ||
| + | |||
| + | Da wir das Layout über die Media-Queries in CSS steuern, müssen wir uns zunächst Gedanken machen, bei welchen Auflösungen wir die Bereiche umschalten möchten: | ||
| + | Einige Entwickler schlagen vor, den ersten Bereich | ||
| + | |||
| + | Wir starten einfach mal mit der Vorlage aus dem [[https:// | ||
| + | |||
| + | /** Bereich 1: Mobile first */ | ||
| + | | ||
| + | /** Bereich 2: Intermediate */ | ||
| + | @media only screen and (min-width: 480px) {} | ||
| + | | ||
| + | /** Bereich 3: Wide */ | ||
| + | @media only screen and (min-width: 768px) {} | ||
| + | | ||
| + | /** Bereich 4: Maximal Width */ | ||
| + | @media only screen and (min-width: 1067px) {} | ||
| + | | ||
| + | /** Bereich 5: Print Style */ | ||
| + | @media print {} | ||
| + | |||
| + | Wenn wir für folgende Elemente die Breite begrenzen wollen, benutzen wir die Klasse Wrapper, die die Breite auf 90% festlegt. Damit wir auf Wide Screen nicht untergehen, führen wir im Bereich 4 noch eine maximale Breite von 960 ein. | ||
| + | |||
| + | /* Bereich 1 */ | ||
| + | .wrapper { | ||
| + | width: 90%; | ||
| + | margin: 0 5%; | ||
| + | } | ||
| + | /* Bereich 4 */ | ||
| + | .wrapper { | ||
| + | | ||
| + | | ||
| + | } | ||
| + | |||
| + | ===== 2. Definition des Header ===== | ||
| + | |||
| + | In unserem Fall haben wir für den Header eine Grafik von 436px Breite ( + 10% = 480px ), d.h. dieser wird im Bereich 2 definiert und oben zentriert angezeigt. Für den ersten Bereich erstellen wir noch eine Grafik mit der Breite 216Pixel (240 – 10%). Das Verfahren ist noch nicht optimal und kann noch verfeinert werden, jedoch war das Urspungslayout (960px Breite) auch mit diesem Header gestartet. Eine bessere Möglichkeit zum Umwandeln von Bildern werden wir später noch kennenlernen …. | ||
| + | |||
| + | ===== 3. Aufteilung Navigation / Content auf “großen” Bildschirmen” ===== | ||
| + | |||
| + | Wir benutzen eine einfache HTML5 Struktur: | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| + | Den Header hatten wir schon, den Footer hängen wir einfach “fixed” an den unteren Rand, bleiben noch die Navigation und der Content. | ||
| + | |||
| + | Wenn genügend Platz vorhanden ist, wollen wir die Navigation links und den Content rechts darstellen. Was ist genügend Platz ? Klassischerweise haben wir die Navigation mit 200px dargestellt, | ||
| + | |||
| + | Wir definieren also im Bereich 3:(Der Code ist nicht vollständig) | ||
| + | |||
| + | nav{ | ||
| + | | ||
| + | | ||
| + | } | ||
| + | article{ | ||
| + | | ||
| + | | ||
| + | } | ||
| + | | ||
| + | ===== 4. Aufteilung Navigation / Content auf “kleinen” Bildschirmen” ===== | ||
| + | |||
| + | Für Bildschirme unter 768px Breite ordnen wir das Menü oberhalb vom Content an, gleichzeitig soll das Menü eingeklappt sein und über einen Trigger geöffnet werden. Dafür orientieren wir uns an dieser Lösung: [[http:// | ||
| + | |||
| + | Das Navigationsmenü wird erweitert: | ||
| + | |||
| + | <div class=" | ||
| + | <h2 class=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | Für die ersten beiden Bereiche blenden wir den Trigger ein | ||
| + | |||
| + | .slide-trigger { display: block; } | ||
| + | .no-js .slide-trigger { display: none; } | ||
| + | nav { display: none; } | ||
| + | .no-js nav { display: block; } | ||
| + | nav { margin: 0 15px; } | ||
| + | nav li { float: none; } | ||
| + | nav li a { border-bottom: | ||
| + | |||
| + | |||
| + | ===== 5. Wichtige HTML und CSS Befehle ===== | ||
| + | |||
| + | ==== HTML ==== | ||
| + | |||
| + | === Explorer Rendering === | ||
| + | |||
| + | Mit dem X-UA-Compatible meta tag wird em InternetExplorer mitgeteilt, für welche Version man die Seite optimiert haben möchte. Edge ist hier die letzte IE Version. | ||
| + | |||
| + | <meta http-equiv=" | ||
| + | |||
| + | === viewport === | ||
| + | |||
| + | Eine typische Responsive Seite sollte folgenden meta Tag enthalten: | ||
| + | |||
| + | <meta name=" | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | ==== CSS ==== | ||
| + | |||
| + | === flex === | ||
| + | |||
| + | Flex ist ein CSS Verfahren (display: | ||
| + | [[http:// | ||
| + | |||
| + | Flexiejs ist ein JS Polyfill, um alte Browser für die flex-Darstellung zu supporten // | ||
| + | [[http:// | ||
| + | |||
| + | |||
| + | === word-wrap === | ||
| + | |||
| + | The word-wrap property is used to specify whether(word-wrap: | ||
| + | [[https:// | ||
| + | |||
| + | === word-wrap === | ||
| + | |||
| + | The word-break CSS property is used to specify whether to break lines within words. // | ||
| + | [[https:// | ||
| + | |||
| + | === overflow === | ||
| + | |||
| + | The overflow property specifies whether to clip content, render scrollbars or just display content when it overflows its block level container. | ||
| + | |||
| + | /* Content is not clipped */ | ||
| + | overflow: visible; | ||
| + | /* Content is clipped, with no scrollbars */ | ||
| + | overflow: hidden; | ||
| + | /* Content is clipped, with scrollbars */ | ||
| + | overflow: scroll; | ||
| + | /* Let the browser decide */ | ||
| + | overflow: auto; | ||
| + | |||
| + | | ||
| + | Es gibt auch overflow-x und overflow-y | ||
| + | | ||
| + | [[https:// | ||
| + | ===== 6. Passende Bilder ausliefern ===== | ||
| + | |||
| + | Für Bilder ist | ||
| + | |||
| + | img{ | ||
| + | max-width: | ||
| + | } | ||
| + | | ||
| + | immer eine ganz gute Anfangslösung, | ||
| + | unterschiedliche Bildgrößen auszuliefern. | ||
| + | |||
| + | Um Bilder entsprechend der Bildschirmauflösung auszulieferen, | ||
| + | |||
| + | Weitere Details: [[http:// | ||
| + | |||
| + | Interessant ist auch noch mal ein Blick in die Konfiguration am Anfang der Datei adaptive-images.php: | ||
| + | |||
| + | /* CONFIG */ | ||
| + | $resolutions | ||
| + | $cache_path | ||
| + | $jpg_quality | ||
| + | $sharpen | ||
| + | $watch_cache | ||
| + | $browser_cache = 60*60*24*7; // How long the BROWSER cache should last (seconds, minutes, hours, days. 7days by default) | ||
| + | /* END CONFIG */ | ||
| + | |||
| + | Hier sollte // | ||
| + | Über // | ||
| + | und die beiden anderen Parameter legen fest, wie lange die Bilder gecacht werden(// | ||
| + | |||
| + | ===== 7. Videos skalieren ===== | ||
| + | |||
| + | Ebenfalls vom Elma Studio noch eine Anleitung, um Videos passend zur Auflösung darzustellen über iFrame: [[http:// | ||
| + | |||
| + | ===== 8. Schriften ===== | ||
| + | |||
| + | Schriften sollten über em definiert werden und auf mobilen Geräten ruhig etwas größer ausfallen. | ||
| + | |||
| + | ===== 9. Testen ===== | ||
| + | |||
| + | Um das Layout auf verschiedenen Größen zu testen, hat sich z.B. der [[http:// | ||
| + | |||
| + | Im Firefox wird mit Strg + Shift + M die mobile Ansicht aktiviert, | ||
| + | im Chrome gibt es mit F12 und Klick auf das Handysymbol eine große Auswahl an Geräten. | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Alle Tools ersetzen allerdings nicht das Testen auf realen Geräten in der " | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== 10. Ressourcen ===== | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | [[http:// | ||