033.4 Lektion 1
Zertifikat: |
Web Development Essentials |
---|---|
Version: |
1.0 |
Thema: |
033 Gestaltung der Inhalte mit CSS |
Lernziel: |
033.4 CSS-Box-Modell und -Layout |
Lektion: |
1 von 1 |
Einführung
Jedes sichtbare Element in einem HTML-Dokument wird als Rechteck oder Box gerendert. Daher beschreibt der Begriff Box-Modell den Ansatz, mit dem CSS die visuellen Eigenschaften der Elemente modifiziert. Wie unterschiedlich große Boxen werden HTML-Elemente in Container-Elementen — in der Regel dem Element div
— verschachtelt, so dass sie in Abschnitte unterteilt werden können.
Wir nutzen CSS, um die Position der Boxen zu ändern, von kleinen Anpassungen bis hin zu umfassenden Änderungen in der Anordnung der Elemente auf der Seite. Neben dem normalen Fluss kann die Position jeder Box abhängig von den umgebenden Elementen sein — entweder von ihrem übergeordneten Container oder bezogen auf den Viewport, d.h. den für Benutzer sichtbaren Bereich der Seite. Es gibt keinen Mechanismus, der alle möglichen Layout-Anforderungen erfüllt, so dass Sie die Verfahren möglicherweise kombinieren müssen.
Normaler Fluss
Die Standardeinstellung des Browsers für die Darstellung der Dokumentstruktur ist der normale Fluss (normal flow). Die Rechtecke, die den Elementen entsprechen, werden mehr oder weniger in der gleichen Reihenfolge platziert, in der sie im Dokumentbaum erscheinen, relativ zu ihren übergeordneten Elementen. Je nach Elementtyp kann das entsprechende Rechteck jedoch unterschiedlichen Positionierungsregeln folgen.
Eine gute Möglichkeit, die Logik des normalen Flusses nachzuvollziehen, besteht darin, die Boxen sichtbar zu machen. Wir beginnen mit einer sehr einfachen Seite mit nur drei separaten div
-Elementen, von denen jedes einen Absatz mit beliebigem Text enthält:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CSS Box Model and Layout</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="first">
<h2>First div</h2>
<p><span>Sed</span> <span>eget</span> <span>velit</span>
<span>id</span> <span>ante</span> <span>tempus</span>
<span>porta</span> <span>pulvinar</span> <span>et</span>
<span>ex.</span></p>
</div><!-- #first -->
<div id="second">
<h2>Second div</h2>
<p><span>Fusce</span> <span>vitae</span> <span>vehicula</span>
<span>neque.</span> <span>Etiam</span> <span>maximus</span>
<span>vulputate</span> <span>neque</span> <span>eu</span>
<span>lobortis.</span> <span>Phasellus</span> <span>condimentum,</span>
<span>felis</span> <span>eget</span> <span>eleifend</span>
<span>aliquam,</span> <span>dui</span> <span>dolor</span>
<span>bibendum</span> <span>leo.</span></p>
</div><!-- #second -->
<div id="third">
<h2>Third div</h2>
<p><span>Pellentesque</span> <span>ornare</span> <span>ultricies</span>
<span>elementum.</span> <span>Morbi</span> <span>vulputate</span>
<span>pretium</span> <span>arcu,</span> <span>sed</span>
<span>faucibus.</span></p>
</div><!-- #third -->
</body>
</html>
Jedes Wort befindet sich in einem span
-Element, so dass wir die Wörter auszeichnen und sehen, wie auch sie als Boxen behandelt werden. Um die Boxen sichtbar zu machen, bearbeiten wir die Stylesheet-Datei style.css
, auf die das HTML-Dokument verweist. Die folgenden Regeln liefern das gewünschte Ergebnis:
* {
font-family: sans;
font-size: 14pt;
}
div {
border: 2px solid #00000044;
}
#first {
background-color: #c4a000ff;
}
#second {
background-color: #4e9a06ff;
}
#third {
background-color: #5c3566da;
}
h2 {
background-color: #ffffff66;
}
p {
background-color: #ffffff66;
}
span {
background-color: #ffffffaa;
}
Das Ergebnis zeigt Figure 1.
Figure 1 zeigt, dass jedes HTML-Tag eine entsprechende Box im Layout hat. Die Elemente div
, h2
und p
nehmen die Breite ihres übergeordneten Elements ein. Zum Beispiel ist das übergeordnete Element der div
-Elemente das body
-Element, so dass sie die Breite des Body annehmen, während das übergeordnete Element jedes h2
- und p
-Elements das entsprechende div
ist. Die Boxen, die sich auf die Breite ihres übergeordneten Elements erstrecken, werden Block-Elemente genannt. Einige der häufigsten HTML-Tags, die als Blöcke dargestellt werden, sind h1
, h2
, h3
, p
, ul
, ol
, table
, li
, div
, section
, form
und aside
. Geschwister-Block-Elemente — also Block-Elemente, die dasselbe unmittelbare Elternelement haben — werden innerhalb ihres Elternelements von oben nach unten gestapelt.
Note
|
Einige Block-Elemente sind nicht dafür vorgesehen, als Container für andere Block-Elemente zu dienen. Es ist zwar möglich, ein Block-Element in ein |
Neben dem Text selbst erwarten Elemente wie h1
, p
und li
nur Inline-Elemente als Kinder. Wie die meisten westlichen Schriftsysteme folgen Inline-Elemente dem Textfluss von links nach rechts. Wenn auf der rechten Seite kein Platz mehr ist, wird der Fluss der Inline-Elemente in der nächsten Zeile fortgesetzt, genau wie Text. Einige gängige HTML-Tags, die als Inline-Boxen behandelt werden, sind span
, a
, em
, strong
, img
, input
und label
.
In unserer HTML-Beispielseite wurde jedes Wort innerhalb der Absätze von einem span
-Tag umgeben, um es mit einer entsprechenden CSS-Regel hervorheben zu können. Wie in der Abbildung gezeigt, wird jedes span
-Element horizontal von links nach rechts platziert, bis kein Platz mehr im übergeordneten Element vorhanden ist.
Die Höhe des Elements hängt von seinem Inhalt ab. Der Browser passt die Höhe eines Container-Elements so an, dass es die verschachtelten Block-Elemente oder Zeilen von Inline-Elementen aufnehmen kann. Einige CSS-Eigenschaften wirken sich jedoch auf die Form einer Box, ihre Position und die Platzierung ihrer inneren Elemente aus.
Die Eigenschaften margin
und padding
betreffen alle Box-Typen. Wenn Sie diese Eigenschaften nicht explizit festlegen, setzt der Browser einige von ihnen mit Standardwerten. Wie in Figure 1 zu sehen, ist zwischen den Elementen h2
und p
ein Abstand. Solche Abstände sind die oberen und unteren Ränder, die der Browser standardmäßig zu diesen Elementen hinzufügt. Wir können sie über die CSS-Regeln für die Selektoren h2
ind p
ändern:
h2 {
background-color: #ffffff66;
margin: 0;
}
p {
background-color: #ffffff66;
margin: 0;
}
Das Ergebnis zeigt Figure 2.
margin
verändern oder entfernen Sie die Ränder von Elementen.Das Element body
hat standardmäßig einen kleinen Rand, der einen Abstand um das Element herum bildet. Auch dieser Abstand kann über Eigenschaft margin
entfernt werden.
Während die Eigenschaft margin
den Abstand zwischen dem Element und seiner Umgebung definiert, bestimmt die Eigenschaft padding
des Elements den inneren Abstand zwischen den Grenzen des Containers und seinen Kind-Elementen. Betrachten wir zum Beispiel die Elemente h2
und p
innerhalb jedes div
im Beispielcode. Wir könnten einen Abstand zu den Grenzen des entsprechenden div
über ihre margin
-Eigenschaft schaffen, aber es ist einfacher, die padding
-Eigenschaft des Containers zu ändern:
#second {
background-color: #4e9a06ff;
padding: 1em;
}
Nur die Regel für das zweite div
wurde geändert, so dass die Ergebnisse (Figure 3) den Unterschied zwischen dem zweiten div
und den anderen div
-Containern zeigen.
div
-Container können unterschiedliche Padding-Werte haben.Die Eigenschaft margin
ist eine Abkürzung für vier Eigenschaften, die die vier Seiten der Box steuern: margin-top
, margin-right
, margin-bottom
und margin-left
. Ist margin
ein einzelner Wert zugewiesen, wie in den bisherigen Beispielen, wird dieser für alle vier Ränder der Box verwendet. Wenn zwei Werte gesetzt sind, definiert der erste den oberen und unteren Rand, während der zweite den rechten und linken Rand bestimmt. margin: 1em 2em
zum Beispiel definiert einen Abstand von 1 em für den oberen und unteren Rand, und einen Abstand von 2 em für den rechten und linken Rand. Die Angabe von vier Werten legt die Ränder für die vier Seiten im Uhrzeigersinn fest, beginnend mit dem oberen Rand. Die verschiedenen Werte in der Shorthand-Eigenschaft müssen nicht die gleichen Einheiten verwenden.
Die Eigenschaft padding
ist ebenfalls eine Kurzform, die denselben Grundsätzen folgt wie die Eigenschaft margin
.
Standardmäßig passen sich Block-Elemente an die verfügbare Breite an. Dies ist jedoch nicht zwingend erforderlich. Mit der Eigenschaft width
können Sie eine feste horizontale Größe für die Box festlegen:
#first {
background-color: #c4a000ff;
width: 6em;
}
Durch die Ergänzung width: 6em
zur CSS-Regel wird das erste div
horizontal geschrumpft, so dass auf der rechten Seite ein Leerraum bleibt (Figure 4).
width
ändert die horizontale Breite des ersten div
.Statt das erste div
links auszurichten, wollen wir es zentrieren. Das Zentrieren einer Box ist gleichbedeutend mit gleich großen Rändern auf beiden Seiten, so dass wir die Eigenschaft margin
verwenden können. Die Größe des verfügbaren Platzes kann variieren, daher verwenden wir den Wert auto
für linken und rechten Rand:
#first {
background-color: #c4a000ff;
width: 6em;
margin: 0 auto;
}
Linker und rechter Rand werden automatisch vom Browser berechnet und die Box wird zentriert (Figure 5).
div
ist über die Eigenschaft margin
zentriert.Wie gezeigt, wird durch die Verschmälerung eines Block-Elements der verbleibende Platz nicht für das nächste Element verfügbar gemacht. Der normale Fluss bleibt erhalten, als ob das schmalere Element weiterhin die gesamte verfügbare Breite einnimmt.
Den normalen Fluss anpassen
Der normale Fluss ist einfach und sequentiell. Mit CSS können Sie ihn unterbrechen und Elemente auf ganz bestimmte Weise positionieren und sogar den Bildlauf der Seite überschreiben. In diesem Abschnitt sehen wir uns verschiedene Möglichkeiten zur Steuerung der Positionierung von Elementen an.
Floating-Elemente
Es ist möglich, dass sich Geschwister-Block-Elemente denselben horizontalen Raum teilen. Ein Weg dahin ist die Eigenschaft float
, die das Element aus dem normalen Fluss herausnimmt. Wie der Name schon sagt, lässt die Eigenschaft float
die Box über den nachfolgenden Block-Elementen “schweben” als ob sich diese unter der schwebenden Box befänden. Um das erste div
nach rechts zu verschieben, fügen Sie der entsprechenden CSS-Regel float: right
hinzu:
#first {
background-color: #c4a000ff;
width: 6em;
float: right;
}
Die automatischen Ränder werden in einer schwebenden Box ignoriert, so dass die Eigenschaft margin
entfernt werden kann. Figure 6 zeigt das Ergebnis der Verschiebung des ersten div
nach rechts.
div
ist schwebend und gehört nicht zum normalen Fluss.Standardmäßig werden alle Block-Elemente, die auf das schwebende Element folgen, unter dieses geschoben. Bei ausreichender Höhe überdeckt die Floating-Box alle übrigen Block-Elemente.
Obwohl ein Floating-Element über anderen Block-Elementen steht, umschließt der Inline-Inhalt im Container des schwebenden Elements das schwebende Element. Die Darstellung stammt vom Zeitschriften- und Zeitungslayout, wo Text häufig um ein Bild herumgeführt wird.
Das vorangegangene Bild zeigt, wie das erste div
das zweite div
und einen Teil des dritten div
bedeckt. Wollen wir das erste div
über dem zweiten, aber nicht über dem dritten div
schweben lassen, müssen wir die Eigenschaft clear
in die CSS-Regel für das dritte div
aufnehmen:
#third {
background-color: #5c3566da;
clear: right;
}
Wird die Eigenschaft clear
auf right
gesetzt, überspringt das entsprechende Element alle vorherigen Elemente, die nach rechts verschoben wurden, und der normale Fluss wird wieder aufgenommen (Figure 7).
clear
führt zum normalen Fluss zurück.War ein vorheriges Element links schwebend, nutzen Sie entsprechend clear: left
, um den normalen Fluss wieder aufzunehmen. Müssen schwebende Elemente sowohl auf der linken als auch auf der rechten Seite übersprungen werden, setzen Sie clear: both
.
Boxen positionieren
Bei normalem Fluss folgt jede Box den vorhergehenden im Dokumentenbaum. Die vorhergehenden Geschwisterelemente “schieben” die nachfolgenden Elemente nach rechts und nach unten innerhalb ihres übergeordneten Elements. Das Elternelement kann selbst Geschwister haben, die das gleiche mit ihm machen. Es ist, als würde man von oben Fliesen nebeneinander an einer Wand anordnen.
Man bezeichnet diese Methode der Positionierung von Boxen als statisch — dies ist der Standardwert für die CSS-Eigenschaft position
. Anders als bei der Definition von Rändern und Abständen gibt es keine Möglichkeit, eine statische Box auf der Seite neu zu positionieren.
Wie bei Wandfliesen ist eine statische Platzierung nicht zwingend erforderlich. Wie die Fliesen können Sie die Boxen überall platzieren, selbst wenn sie andere Boxen überlagern. Dazu weisen Sie der Eigenschaft position
einen der folgenden Werte zu:
relative
-
Das Element folgt dem normalen Fluss des Dokuments, aber es kann die Eigenschaften
top
,right
,bottom
undleft
nutzen, um Versatz relativ zu seiner ursprünglichen statischen Position anzugeben. Der Versatz kann auch negativ sein. Die anderen Elemente bleiben an ihren ursprünglichen Positionen, als ob das relative Element immer noch statisch wäre. absolute
-
Das Element ignoriert den normalen Fluss der anderen Elemente und positioniert sich selbst auf der Seite über die Eigenschaften
top
,right
,bottom
undleft
. Die Werte sind relativ zum Dokument-Body oder zu einem nicht-statischen Eltern-Container. fixed
-
Das Element ignoriert den normalen Fluss der anderen Elemente und positioniert sich selbst anhand der Eigenschaften
top
,right
,bottom
undleft
. Die Werte beziehen sich auf den Viewport (also den Bildschirmbereich, in dem das Dokument angezeigt wird). Fixe Elemente bewegen sich nicht, wenn sich der Besucher durch das Dokument bewegt, sondern ähneln einem Aufkleber, der auf dem Bildschirm klebt. sticky
-
Das Element folgt dem normalen Fluss des Dokuments. Statt jedoch beim Scrollen des Dokuments den Viewport zu verlassen, bleibt es an der durch die Eigenschaften
top
,right
,bottom
undleft
festgelegten Position stehen. Ist dertop
-Wert zum Beispiel10px
, wird das Element aufhören, unter dem oberen Teil des Viewport zu scrollen, wenn es 10 Pixel von der oberen Grenze des Ansichtsfensters erreicht. Der Rest der Seite scrollt weiter, während sich das Sticky-Element in dieser Position wie ein fixes Element verhält. Es kehrt an seine ursprüngliche Position zurück, wenn das Dokument wieder an seine Position im Ansichtsfenster zurückscrollt. Sticky-Elemente werden häufig für Top-Menüs genutzt, die immer sichtbar sind.
Positionen, die die Eigenschaften top
, right
, bottom
und left
verwenden können, müssen sie nicht alle nutzen. Wenn Sie zum Beispiel die Eigenschaften top
und height
eines absoluten Elements festlegen, berechnet der Browser dessen Eigenschaft bottom
(top + height = bottom).
Die Eigenschaft display
Wenn die durch den normalen Fluss vorgegebene Reihenfolge in Ihrem Design kein Problem darstellt, Sie aber die Ausrichtung der Boxen auf der Seite ändern möchten, ändern Sie die Eigenschaft display
des Elements. Die Eigenschaft display
kann das Element sogar vollständig aus dem gerenderten Dokument verschwinden lassen, indem Sie display: none
setzen. Das ist nützlich, wenn Sie das Element später mit JavaScript einblenden wollen.
Mit der Eigenschaft display
sorgen Sie beispielsweise auch dafür, dass sich ein Block-Element wie ein Inline-Element (display: inline
) verhält, was aber nicht als gute Praxis gilt. Es gibt bessere Methoden, um Container-Elemente nebeneinander zu platzieren, wie zum Beispiel das Flexbox-Modell.
Das Flexbox-Modell wurde eingeführt, um die Beschränkungen von Floats zu überwinden und die unangemessene Verwendung von Tabellen zur Strukturierung des Seitenlayouts zu vermeiden. Setzen Sie die Eigenschaft display
eines Container-Elements auf flex
, um es in einen Flexbox-Container zu verwandeln, verhalten sich seine unmittelbaren Kinder mehr oder weniger wie Zellen in einer Tabellenzeile.
Tip
|
Wenn Sie noch mehr Kontrolle über die Platzierung der Elemente auf der Seite haben möchten, werfen Sie einen Blick auf CSS Grid. Das Raster ist ein leistungsfähiges System auf der Basis von Zeilen und Spalten für aufwendige Layouts. |
Um die flexible Anzeige zu testen, fügen Sie der Beispielseite ein neues div
-Element hinzu und machen es zum Container für die drei vorhandenen div
-Elemente:
<div id="container">
<div id="first">
<h2>First div</h2>
<p><span>Sed</span> <span>eget</span> <span>velit</span>
<span>id</span> <span>ante</span> <span>tempus</span>
<span>porta</span> <span>pulvinar</span> <span>et</span>
<span>ex.</span></p>
</div><!-- #first -->
<div id="second">
<h2>Second div</h2>
<p><span>Fusce</span> <span>vitae</span> <span>vehicula</span>
<span>neque.</span> <span>Etiam</span> <span>maximus</span>
<span>vulputate</span> <span>neque</span> <span>eu</span>
<span>lobortis.</span> <span>Phasellus</span> <span>condimentum,</span>
<span>felis</span> <span>eget</span> <span>eleifend</span>
<span>aliquam,</span> <span>dui</span> <span>dolor</span>
<span>bibendum</span> <span>leo.</span></p>
</div><!-- #second -->
<div id="third">
<h2>Third div</h2>
<p><span>Pellentesque</span> <span>ornare</span> <span>ultricies</span>
<span>elementum.</span> <span>Morbi</span> <span>vulputate</span>
<span>pretium</span> <span>arcu,</span> <span>sed</span>
<span>faucibus.</span></p>
</div><!-- #third -->
</div><!-- #container -->
Fügen Sie die folgende CSS-Regel in das Stylesheet ein, um den Container div
in einen Flexbox-Container zu verwandeln:
#container {
display: flex;
}
Das Ergebnis sind die drei inneren div
-Elemente, die nebeneinander dargestellt werden (Figure 8).
Der Wert inline-flex
anstelle von flex
hat im Grunde das gleiche Ergebnis, führt aber dazu, dass sich die untergeordneten Elemente eher wie Inline-Elemente verhalten.
Responsive Design
Wir wissen, dass CSS Eigenschaften zur Verfügung stellt, über die sich die Größe von Elementen und Schriften an den verfügbaren Bildschirmbereich anpassen. Vielleicht möchten Sie aber noch weiter gehen und für verschiedene Geräte unterschiedliche Designs nutzen, beispielsweise Desktop-Systeme gegenüber Geräten mit Bildschirmen bis zu einer bestimmten Größe. Dieser Ansatz wird Responsive Webdesign genannt, und CSS bietet dafür entsprechende Methoden, sogenannte Media Queries.
Im vorangegangenen Beispiel haben wir das Seitenlayout so geändert, dass die div
-Elemente nebeneinander in Spalten angeordnet sind. Dieses Layout ist für größere Bildschirme geeignet, ist aber auf kleineren Bildschirmen zu unübersichtlich. Um dieses Problem zu lösen, können wir im Stylesheet eine Media Query (“Medienabfrage”) ergänzen, so dass nur Bildschirme mit einer Breite von mindestens 600px berücksichtigt werden:
@media (min-width: 600px){
#container {
display: flex;
}
}
Die CSS-Regeln innerhalb der @media
-Anweisung greifen nur, wenn die Kriterien in Klammern erfüllt sind. In diesem Beispiel wird die Regel nicht auf den Container div
angewendet, wenn die Breite des Ansichtsfensters kleiner als 600px
ist, und seine Kinder dann als herkömmliche div
-Elemente dargestellt. Der Browser wertet die Medienabfragen jedes Mal neu aus, wenn sich die Abmessungen des Ansichtsfensters ändern, so dass sich das Layout in Echtzeit ändert, sobald sich die Größe des Browserfensters ändert oder das Smartphone gedreht wird.
Geführte Übungen
-
Welche Positionierungsmethode wendet der Browser an, wenn die Eigenschaft
position
nicht geändert wird? -
Wie stellen Sie sicher, dass die Box eines Elements nach allen schwebenden (floating) Elementen gerendert wird?
-
Wie nutzen Sie die Eigenschaft
margin
, um die oberen/unteren Ränder auf4px
und die rechten/linken Ränder auf6em
zu setzen? -
Wie zentrieren Sie ein statisches Container-Element mit fester Breite auf der Seite horizontal?
Offene Übungen
-
Schreiben Sie eine CSS-Regel für das Element
<div class="picture">
, so dass der Text in den folgenden Block-Elementen rechts davon platziert wird. -
Wie wirkt sich die Eigenschaft
top
auf ein statisches Element im Verhältnis zu seinem übergeordneten Element aus? -
Wie wirkt sich die Änderung der Eigenschaft
display
eines Elements inflex
auf seine Platzierung im normalen Fluss aus? -
Welches CSS-Feature ermöglicht es Ihnen, je nach Bildschirmgröße einen eigenen Satz von Regeln zu verwenden?
Zusammenfassung
In dieser Lektion geht es um das CSS-Box-Modell und wie wir es anpassen können. Zusätzlich zum normalen Fluss des Dokuments kann der Designer verschiedene Positionierungsmechanismen nutzen, um ein benutzerdefiniertes Layout zu implementieren. In dieser Lektion werden die folgenden Konzepte und Verfahren behandelt:
-
Der normale Fluss des Dokuments.
-
Anpassungen von Rand (Margin) und Füllung (Padding) der Box eines Elements.
-
Die Eigenschaften
float
undclear
. -
Positionierungsmechanismen:
static
,relative
,absolute
,fixed
andsticky
. -
Alternative Werte für die Eigenschaft
display
. -
Grundlagen des Responsive Design.
Lösungen zu den geführten Übungen
-
Welche Positionierungsmethode wendet der Browser an, wenn die Eigenschaft
position
nicht geändert wird?Die Methode
static
. -
Wie stellen Sie sicher, dass die Box eines Elements nach allen schwebenden (floating) Elementen gerendert wird?
Die Eigenschaft
clear
des Elements sollte aufboth
gesetzt werden. -
Wie nutzen Sie die Eigenschaft
margin
, um die oberen/unteren Ränder auf4px
und die rechten/linken Ränder auf6em
zu setzen?Es kann entweder
margin: 4px 6em
odermargin: 4px 6em 4px 6em
sein. -
Wie zentrieren Sie ein statisches Container-Element mit fester Breite auf der Seite horizontal?
Mit dem Wert
auto
in den Eigenschaftenmargin-left
undmargin-right
.
Lösungen zu den offenen Übungen
-
Schreiben Sie eine CSS-Regel für das Element
<div class="picture">
, so dass der Text in den folgenden Block-Elementen rechts davon platziert wird..picture { float: left; }
-
Wie wirkt sich die Eigenschaft
top
auf ein statisches Element im Verhältnis zu seinem übergeordneten Element aus?Die Eigenschaft
top
gilt nicht für statische Elemente. -
Wie wirkt sich die Änderung der Eigenschaft
display
eines Elements inflex
auf seine Platzierung im normalen Fluss aus?Die Platzierung des Elements selbst ändert sich nicht, aber seine unmittelbaren Kindelemente werden horizontal nebeneinander gerendert.
-
Welches CSS-Feature ermöglicht es Ihnen, je nach Bildschirmgröße einen eigenen Satz von Regeln zu verwenden?
Mit Media Queries prüft der Browser die Abmessungen des Ansichtsfensters, bevor er eine CSS-Regel anwendet.