Dies ist eine alte Version des Dokuments!
LU05.A03 - Webseite mobile freundlich umsetzen
Als Ausgangslage dient ein dreispaltiges, flexibles Layout. Die Breite ist mit 960 Pixeln im ID-Selektor #wrapper festgelegt. Die restlichen Elemente sind mit relativen Werten (hier in Prozent) angegeben. Die relativen Werte für die weiteren Layouts werden mit den Media Queries angepasst. Die Desktopversion mit den 960 Pixeln ist unten abgebildet.
Viewport als Voraussetzung
Der Viewport ist der sichtbare Bereich des Webbrowsers ohne Menü- und Scrollleiste, in dem die Webseite angezeigt wird. Fehlt das Meta-Element viewport, dann zeigen die mobilen Geräten trotzdem die Desktopversion, weil der Viewport vom Gerät breiter angegeben wird, als tatsächlich Pixel vorhanden sind. Das bedeutet, dass sich Webbrowser auf mobilen Geräten so verhalten, als wären sie Webbrowser eines Desktoprechners. Das ist kein Fehler, sonst würde der Webbrowser bei vielen Webseiten nur einen Teil der Webseite darstellen. Der Benutzer müsste folglich immer quer und horizontal scrollen. Damit im folgenden Anwendungsbeispiel die mobilen Endgeräte tatsächlich unterstützt werden, wird im <head> das Meta-Element viewport hinzugefügt:
... <head> <title>Responsive Webdesign</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" type="text/css" href="style.css" /> </head> ...
HTML-Grundgerüst
Als Grundlage für das Fallbeispiel dient das nachfolgende HTML-Gerüst:
<!doctype html> <html> <head> <title>Responsive Webdesign</title> <meta charset="UTF-8"> <meta content="width=device-width, initial-scale=1" name="viewport"/> <link href="style.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="page-wrapper"> <header>Responsive Webdesign</header> <section class="main-content"> <nav id="mainnav"> <h3>Navigation</h3> <ul> <li><a href="#">Home</a></li> <li><a href="#">Blog</a></li> <li><a href="#">Links</a></li> <li><a href="#">About</a></li> <li><a href="#">Kontakt</a></li> </ul> </nav> <main id="content"> <article class="post-with-image"> <div class="post-image"> <img alt="Pferdekopf" src="https://placehold.co/600x400"/> </div> <div class="post-content"> <h1>Artikel 1</h1> <p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut. </p> </div> </article> <article class="post"> <div class="post-content"> <h1>Artikel 2</h1> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut. </p> </div> </article> </main> <aside id="sidebar"> <h3>Seitenleiste</h3> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut.</p> <ul> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> </ul> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p> </aside> </section> <footer>Fusszeile</footer> </div> </body> </html>
* { box-sizing: border-box; } body { font-family: sans-serif; } #page-wrapper { margin: auto; width: 960px; } header, footer { background: lightgreen; text-align: center; padding: 10px; width: 100%; } .main-content { display: flex; } .post-with-image { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; } #mainnav { padding: 15px; width: 20%; } #sidebar { padding: 15px; width: 20%; } main { padding: 15px; width: 60%; } article img { margin: 0 10px 10px 0; max-width: 100%; height: auto; border: 3px solid black; } article { padding: 15px; margin-bottom: 5px; background: lightblue; } nav ul { padding-left: 0; } nav ul li { list-style: none; margin-left: 0; margin-top: 0.4em; }