Warum sieht die Seite auf meinem Handy winzig aus?
Du hast bestimmt schon eine Webseite auf dem Handy geöffnet und musstest zoomen, um eine einzige Zeile zu lesen. Die Seite war für einen breiten Bildschirm gemacht, und das Handy hat sie klein gezeichnet. Ein paar Zeilen Code sagen dem Handy, wie es sie richtig zeichnet, und diese Lektion sieht sie sich an.
Am Ende dieser Lektion
Notiz
Ich kann die Teile einer Webseite finden, die sie auf einem Handy funktionieren lassen.
Schlüsselwörter
- Viewport (Anzeigebereich): der Teil des Bildschirms, in den die Seite gezeichnet wird.
- Responsiv: ein Layout, das sich an die Breite des Bildschirms anpasst.
- Media Query: eine CSS-Regel, die nur gilt, wenn eine Bedingung stimmt, zum Beispiel eine Mindestbreite.
- Manifest: eine kleine Datei, die dem Handy Name, Symbole und Farben einer Web-App nennt.
- Service Worker: ein Skript, das der Browser behält und das Anfragen aus einer gespeicherten Kopie beantworten kann.
- Cache: ein Speicher für gesicherte Kopien von Dateien.
Zum Einstieg: Was du schon weißt
Notiz
Antworte im Kopf. 1. Was macht CSS für eine Webseite? 2. Ist ein Finger größer oder kleiner als ein Mauszeiger? 3. Was passiert mit einer Webseite, wenn kein Netz da ist? Antworten: Es bestimmt, wie die Seite aussieht; größer; sie lädt meistens nicht, und genau dieses Problem löst der letzte Schritt.
Bevor du anfängst
Notiz
Klicke oben in der Leiste dieser Lektion auf Lab starten und warte, bis dort steht, dass es läuft. Es gibt einen Container, jupyter, und das Terminal erreicht sein Python mit docker exec jupyter, das einen Befehl darin ausführt. Der Link JupyterLab öffnet seine Webseite, Port 8888, und der Link Preview (Vorschau) zeigt die Gewohnheits-App, Port 8000. Jede Schaltfläche Ausführen unten tippt ihren Befehl ins Terminal deines Labs, einen nach dem anderen in derselben Sitzung. Wenn du zuschauen oder eigene Befehle tippen willst, klicke in der Leiste auf Terminal öffnen (neuer Tab).
Die Web-App ist ein Ordner, und ein kleiner Server zeigt sie
ls app listet die Web-App auf: eine Seite, ihre Stile, ihr Skript, ein Manifest, einen Service Worker und zwei Symbole. Das zweite Skript fragt den Vorschau-Server nach dreien davon und gibt die Antwort aus. Jede lautet 200, das heißt gefunden, und das Manifest hat einen eigenen Typ, application/manifest+json. Öffne jetzt den Link Preview in deinem eigenen Browser, mache das Fenster schmal und sieh zu, wie sich das Layout ändert.
docker exec jupyter ls appHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
docker exec jupyter python3 steps/serve.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Das Viewport-Tag sagt dem Handy, wie breit es zeichnen soll
Das Skript liest index.html und sucht ein meta-Tag mit dem Namen viewport. Es wird gefunden, mit width=device-width, initial-scale=1: die Seite so breit wie der Bildschirm zeichnen, in normaler Größe. Probiere es aus: Lösche diese Zeile in JupyterLab, speichere, führe das Skript noch einmal aus, und es meldet MISSING (fehlt). Ein Handy würde die Seite dann zeichnen, als wäre der Bildschirm viel breiter, und sie verkleinern.
docker exec jupyter python3 steps/viewport.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Haltepunkte ändern das Layout bei einer bestimmten Breite
Das Stylesheet ist mobile first: Die einfachen Regeln sind das Handy, und Media Queries fügen Regeln hinzu, wenn der Bildschirm breiter wird. Das Skript findet drei. Zwei sind Breiten, 600 px und 900 px, und die dritte ist keine Breite, sondern eine Vorliebe für den Dunkelmodus. Ziehe das Fenster deines Browsers breiter als 600 px, und das Formular steht in einer Reihe. Breiter als 900 px, und die Liste hat zwei Spalten.
docker exec jupyter python3 steps/breakpoints.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Daumen braucht Platz
Eine Fingerspitze deckt viel mehr ab als ein Mauszeiger und verdeckt, was sie drückt. Dieses Lab nimmt 44 Pixel als die Linie, die eine Schaltfläche erreichen sollte. Das Skript listet jede Größe im Stylesheet auf: Die Schaltfläche Add (Hinzufügen) ist 32 px hoch, die Filter-Schaltflächen 36 px und die runde Erledigt-Schaltfläche 30 mal 30, also liegen vier Größen unter 44. Sie sind absichtlich etwas zu klein, und sie zu beheben ist deine Aufgabe.
docker exec jupyter python3 steps/touch.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Prüfe
Tipp
Welcher Haltepunkt macht aus der Liste zwei Spalten, und wie viele Größen liegen unter 44 Pixeln? Antwort: 900 px, und vier.
Ein Manifest lässt das Handy die Seite wie eine App behandeln
Das Manifest ist eine JSON-Datei. Das Skript prüft sieben Felder. Sechs sind vorhanden: der Name, ein Kurzname für unter dem Symbol, die Seite, die zuerst geöffnet wird, die Anzeigeart (standalone, das heißt ohne die eigenen Leisten des Browsers), die Symbole und die Farbe der oberen Leiste. Eines fehlt, MISSING, background_color, die Farbe, die beim Start der App zu sehen ist. Beide Symboldateien existieren. Ob ein Handy anbietet, die App zu installieren, hängt vom Browser ab, such die Option also im Menü deines eigenen Browsers.
docker exec jupyter python3 steps/manifest.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Service Worker lässt die App ohne Netz öffnen
Der Service Worker nennt einen Cache, habits-v1, und eine Liste von acht Dateien, die bei der Installation gesichert werden. Das Skript prüft, ob jede existiert, und sieben tun es. Die achte, /offline.html, gibt es nicht. Das ist ein echter Fehler: Wenn eine einzige Datei der Liste nicht gesichert werden kann, scheitert die ganze Installation, und offline funktioniert nichts. Ein Browser erlaubt Service Worker nur auf einer sicheren Adresse, deshalb kann er diesen auf dem Vorschau-Link ablehnen: Die Konsole deines Browsers sagt, was der Fall ist.
docker exec jupyter python3 steps/offline.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele glauben, wenn eine Seite in einem schmalen Fenster am Computer gut aussieht, funktioniert sie auf dem Handy. Ein schmales Fenster zeigt nur das Layout. Es zeigt nicht, wie groß ein Daumen ist, wie langsam ein Mobilfunknetz ist oder was der Browser des Handys tut. Nimm das schmale Fenster, um das Layout zu prüfen, und öffne die Seite dann auf einem echten Handy, wenn du kannst.
Eine mobile Web-App neben einer nativen App
Eine native App wird für ein einziges Handysystem gebaut und aus einem Store installiert. Eine mobile Web-App ist eine Webseite. Sie hat einen Code für alle Handys, sie ist aktuell, sobald du die Dateien änderst, und ein Link öffnet sie. Sie kann Daten auf dem Handy speichern, mit einem Service Worker offline arbeiten und sich in vielen Browsern zum Startbildschirm hinzufügen lassen. Sie kommt weniger weit an das Handy heran: Was sie nutzen darf, etwa Benachrichtigungen oder Arbeit im Hintergrund, hängt von Browser und Handy ab, und der Browser kann ihre gespeicherten Daten löschen. Die Wahl zwischen beiden ist ein Abwägen, kein Wettkampf.
Abschlusskontrolle
Tipp
Antworte, ohne zurückzublättern. 1. Welches Tag sagt dem Handy, die Seite so breit wie den Bildschirm zu zeichnen? 2. Was bedeutet mobile first? 3. Welche Datei gibt einer App Namen und Symbole? 4. Warum würde sich ein Service Worker nicht installieren, wenn eine Datei der Liste fehlt? Antworten: das Meta-Tag viewport; die einfachen Regeln sind fürs Handy und Media Queries fügen mehr für breitere Bildschirme hinzu; das Manifest; die Liste wird auf einmal gesichert, ein einziger Fehler stoppt also die ganze Installation.
Für Lehrkräfte
Tipp
Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab abläuft: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. Das Lab ist ein Dienst, JupyterLab, mit einem zweiten Port, der die Web-App der Lernenden anzeigt, und nichts hier bewertet sich selbst: Die Lernenden geben app/style.css ab, mit den kleinen Schaltflächen auf mindestens 44 Pixel gebracht, und einen Satz dazu, was sie geändert und wie sie es im eigenen Browser geprüft haben. Kernpunkte: 1. Das Viewport-Tag macht eine Seite auf dem Handy responsiv. 2. Mobile-first-CSS fügt Media Queries hinzu, wenn der Bildschirm breiter wird. 3. Ein Manifest und ein Service Worker machen eine installierbare Web-App, die offline funktioniert. Häufiger Fehler: ein schmales Computerfenster für einen Handytest halten. Material: das Lab, ein Browser und, wenn möglich, ein Handy. Tipp: Lassen Sie die Lernenden jedes Ergebnis vorhersagen, bevor sie auf „Ausführen“ klicken. Die Dateien werden aus festem Text geschrieben, jede Kopie gibt also dasselbe aus. Kopieren Sie die Lektion in Ihr eigenes Modul und ändern Sie sie, oder bauen Sie im Lektionseditor über das Menü Lab eine neue von Grund auf.