Document Box Model Zweiter Test 16. CSS Box Model Control. Minimale und maximale Elementhöhe

Wir haben HTML und CSS kennengelernt, wie sie aussehen und wie man einige Grundlagen macht. Jetzt werden wir etwas tiefer eintauchen und uns genauer ansehen, wie Elemente auf der Seite angezeigt werden und wie sie ihre Größe haben.

Dabei gehen wir auf das Thema Box-Modell ein und wie es mit HTML und CSS funktioniert. Wir werden uns auch ein paar neue CSS-Eigenschaften ansehen und einige der Größenwerte verwenden, über die wir in Lektion 3 gesprochen haben. Fangen wir an.

Wie werden die Elemente dargestellt?

Bevor wir zum Box-Modell übergehen, müssen wir verstehen, wie Elemente gerendert werden. In Lektion 2 haben wir uns den Unterschied zwischen Block- und Inline-Elementen angesehen. Zur Erinnerung: Elemente auf Blockebene nehmen unabhängig von ihrem Inhalt die gesamte verfügbare Breite ein und beginnen in einer neuen Zeile. Inline-Elemente nehmen die vom Inhalt benötigte Breite ein und reihen sich hintereinander auf derselben Zeile auf. Blockelemente werden normalerweise für große Inhaltsblöcke wie Überschriften und Strukturelemente verwendet. Inline-Elemente werden normalerweise für kleine Inhalte verwendet, z. B. einige Wörter in Fett- oder Kursivschrift.

Anzeige

Wie genau Elemente angezeigt werden – als Block oder Inline oder etwas anderes – wird durch die Anzeigeeigenschaft bestimmt. Jedes Element enthält einen standardmäßigen Anzeigeeigenschaftswert, aber wie jeder Eigenschaftswert kann dieser Wert überschrieben werden. Es gibt einige Werte für die Anzeigeeigenschaft, aber die häufigsten sind block , inline , inline-block und none .

Wir können den Wert der Anzeigeeigenschaft eines Elements ändern, indem wir dieses Element in CSS auswählen und einen neuen Wert für die Anzeigeeigenschaft festlegen. Der Blockwert macht dieses Element zu einem Blockelement.

P ( Anzeige: Block; )

Der Inline-Wert macht dieses Element inline.

P ( Anzeige: Inline; )

Das Interessanteste ist der Wert von inline-block . Wenn Sie es verwenden, verhält sich das Element wie ein Box-Modell, einschließlich aller Eigenschaften des Box-Modells (auf die wir gleich eingehen werden). Das Element erscheint jedoch in einer Zeile mit anderen Elementen und beginnt standardmäßig nicht in einer neuen Zeile.

P ( Anzeige: Inline-Block; )

Inline-Block-Demo

Abstand zwischen Inline-Block-Elementen

Ein wichtiger Unterschied zu Inline-Block-Elementen besteht darin, dass sie sich nicht immer berühren oder direkt nebeneinander erscheinen. Normalerweise gibt es einen kleinen Zwischenraum zwischen den beiden Elementen. Dieser Abstand mag ärgerlich sein, aber es ist in Ordnung. Wir werden in der nächsten Lektion besprechen, warum es existiert und wie es entfernt werden kann.

Wenn Sie schließlich den Wert none verwenden, wird das Element vollständig ausgeblendet und die Seite so gerendert, als ob das Element nicht vorhanden wäre. Alle Elemente, die in einem solchen Element verschachtelt sind, werden ebenfalls ausgeblendet.

Div ( Anzeige: keine; )

Zu wissen, wie Elemente angezeigt werden und wie die Anzeige geändert werden kann, ist sehr wichtig, da die Anzeige einen Einfluss auf die Anzeige des Boxmodells hat. Während wir das Box-Modell besprechen, werden wir uns diese verschiedenen Implikationen ansehen und wie sie die Darstellung eines Elements beeinflussen können.

Was ist ein Blockmodell?

Beim Box-Modell-Konzept ist jedes Element auf einer Seite ein rechteckiges Kästchen und kann eine Breite, Höhe, einen Rand, einen Rand und eine Füllung haben.

Es lohnt sich, es zu wiederholen: Jedes Element auf der Seite ist ein rechteckiges Kästchen.

Reis. 4.01. Wenn wir jedes Element einzeln betrachten, können wir sehen, dass sie alle rechteckig sind, unabhängig von ihrer dargestellten Form.

Jedes Element auf jeder Seite wird dem Box-Modell zugeordnet, daher ist dies unglaublich wichtig. Werfen wir einen Blick darauf, zusammen mit einigen neuen CSS-Eigenschaften, um besser zu verstehen, wie wir damit arbeiten können.

Arbeiten mit dem Blockmodell

Jedes Element ist ein rechteckiges Kästchen, und es gibt mehrere Eigenschaften, die die Größe dieses Kästchens festlegen. Das Innere des Blocks wird durch die Breite und Höhe des Elements definiert, die durch die Anzeigeeigenschaft, den Inhalt des Elements oder die Breiten- und Höheneigenschaften festgelegt werden können. padding und dann border erweitern die Abmessungen der Box von der Breite und Höhe des Elements nach außen. Schließlich geht jeder angegebene Rand über die Grenze hinaus.

Jeder Teil des Box-Modells entspricht einer CSS-Eigenschaft: width , height , padding , border und margin .

Werfen wir einen Blick auf diese Eigenschaften in einem Code:

Div (Rand: 6px solid #949599; Höhe: 100px; Rand: 20px; Polsterung: 20px; Breite: 400px; )

Nach dem Kastenmodell lässt sich die Gesamtbreite eines Elements nach folgender Formel berechnen:

Rand rechts + Rand rechts + Polsterung rechts + Breite + Polsterung links + Rand links + Rand links

Zum Vergleich kann nach dem Kastenmodell die Gesamthöhe eines Elements nach folgender Formel berechnet werden:

margin-top + border-top + padding-top + height + padding-bottom + border-bottom + margin-bottom

Reis. 4.02. Das Box-Modell umfasst eine Basishöhe und -breite sowie Polsterung, Rand und Rand

Mit diesen Formeln können wir die Gesamthöhe und -breite des Blocks aus unserem Beispiel ermitteln.

Breite: 492px = 20px + 6px + 20px + 400px + 20px + 6px + 20px Höhe: 192px = 20px + 6px + 20px + 100px + 20px + 6px + 20px

Das Box-Modell ist ohne Zweifel einer der verwirrenderen Teile von HTML und CSS. Wir setzen den Wert der Eigenschaft width auf 400px, aber die tatsächliche Breite unseres Elements beträgt 492px. Standardmäßig ist die Boxmodellbox additiv. Um die tatsächliche Blockgröße zu bestimmen, müssen wir also die Ränder, Ränder und Polsterung für alle vier Seiten des Blocks berücksichtigen. Unsere Breite umfasst nicht nur den Wert der width-Eigenschaft, sondern auch die Größe des linken und rechten Rands, des linken und rechten Rahmens und des linken und rechten Innenabstands.

Während viele dieser Eigenschaften nicht viel Sinn machen, ist dies normal. Schauen wir uns zur Verdeutlichung all die Eigenschaften width , height , padding , border und margin genauer an, aus denen das Box-Modell besteht.

Breite und Höhe

Jedes Element hat eine Standardbreite und -höhe. Diese Breite und Höhe können Null sein, aber Browser rendern jedes Element standardmäßig mit einer Größe. Je nachdem, wie das Element gerendert wird, können die Standardbreite und -höhe angemessen sein. Wenn das Element das Schlüsselelement im Seitenlayout ist, muss es möglicherweise auf bestimmte Werte für die Breiten- und Höheneigenschaften festgelegt werden. In diesem Fall können Eigenschaftswerte für Nicht-Inline-Elemente angegeben werden.

Breite

Standardmäßig basiert die Breite eines Elements auf dem Wert von display . Blockelemente haben eine Standardbreite von 100 % und nehmen den gesamten verfügbaren horizontalen Platz ein. Inline- und Inline-Block-Elemente werden horizontal erweitert und zusammengezogen, um ihren Inhalt aufzunehmen. Inline-Elemente können keine feste Größe haben, daher gelten Breite und Höhe nur für Nicht-Inline-Elemente. Verwenden Sie die Eigenschaft width, um eine bestimmte Breite für Nicht-Inline-Elemente festzulegen:

Div ( Breite: 400px; )

Höhe

Die Standardhöhe eines Elements wird durch seinen Inhalt bestimmt. Das Element wird je nach Bedarf vertikal erweitert und zusammengezogen, um es an seinen Inhalt anzupassen. Über die Eigenschaft height können Sie eine bestimmte Höhe für Nicht-Inline-Elemente festlegen:

Div (Höhe: 100px; )

Abmessungen von Inline-Block-Elementen

Bitte beachten Sie, dass Inline-Elemente keine Breiten- und Höheneigenschaften oder einen ihrer Werte akzeptieren. Block- und Inline-Block-Elemente akzeptieren jedoch Breiten- und Höheneigenschaften und ihre entsprechenden Werte.

Rand und Polsterung

Abhängig vom Element wenden Browser möglicherweise Standardauffüllungen und -ränder auf das Element an, um die Lesbarkeit zu verbessern. Wir neigen dazu, dies bei Textelementen zu sehen. Die Standardränder und -abstände für diese Elemente können von Browser zu Browser und von Element zu Element variieren. In Lektion 1 haben wir die Verwendung eines CSS-Resets besprochen, um alle diese Standardwerte auf Null zu setzen. Dies ermöglicht es uns, von Grund auf neu zu arbeiten und unsere eigenen Werte zu setzen.

Gewinnspanne

Mit der Eigenschaft margin können wir den Abstand festlegen, der ein Element umgibt. die Ränder liegen außerhalb jeglicher Grenzen und sind farblich vollständig transparent. Sie können verwendet werden, um Elemente an einer bestimmten Stelle auf der Seite zu positionieren oder um Leerraum hinzuzufügen, während alle anderen Elemente in einem sicheren Abstand gehalten werden. Hier ist die Randeigenschaft in Aktion:

Div ( Rand: 20px; )

Eine der Macken von margin sind vertikale Werte, oben und unten, sie gelten nicht für Inline-Elemente, sondern für Block- und Inline-Block-Elemente.

Polsterung

Die Eigenschaft padding ist der Eigenschaft margin sehr ähnlich, wird aber innerhalb der Grenzen des Elements positioniert. Die Eigenschaft padding wird verwendet, um den Abstand direkt innerhalb eines Elements festzulegen. Hier ist der Code:

Div ( Polsterung: 20px; )

Die Eigenschaft padding funktioniert im Gegensatz zu margin vertikal für Inline-Elemente. Die vertikale Polsterung kann mit der Linie über oder unter dem angegebenen Element verschmelzen, wird aber dennoch gerendert.

Rand und Polsterung für Inline-Elemente

Inline-Elemente verhalten sich in Bezug auf Padding und Ränder etwas anders als Block- und Inline-Block-Elemente. Bei Inline-Elementen funktioniert der Rand nur horizontal – links und rechts von den Elementen. padding funktioniert auf allen vier Seiten von Inline-Elementen, jedoch können die vertikalen Ränder darüber und darunter über die Linie oberhalb und unterhalb des Elements hinausragen.

Padding und Margins funktionieren wie gewohnt für Block- und Inline-Block-Elemente.

Festlegen von Rändern und Auffüllen

In CSS gibt es mehrere Möglichkeiten, den Wert bestimmter Eigenschaften festzulegen. Wir können eine reguläre Notation verwenden, die mehrere Eigenschaften und Werte nacheinander auflistet, wobei jeder Wert eine eigene Eigenschaft hat. Oder wir können eine Kurzschreibweise verwenden, die mehrere Werte für dieselbe Eigenschaft auflistet. Nicht alle Eigenschaften haben eine Abkürzung, daher müssen wir sicherstellen, dass wir die richtige Eigenschaft und Wertestruktur verwenden.

Die Margin- und Padding-Eigenschaften existieren in ihrer normalen und abgekürzten Form. Wenn wir die abgekürzte Eigenschaft margin verwenden, um denselben Wert für alle vier Seiten eines Elements festzulegen, setzen wir denselben Wert:

Div ( Rand: 20px; )

Um einen Wert für die obere und untere Seite und einen anderen Wert für die linke und rechte Seite eines Elements festzulegen, geben Sie zwei Werte an: zuerst oben und unten, dann links und rechts. Hier für

Wir setzen die Polsterung auf 10 Pixel oben und unten und 20 Pixel links und rechts:

Div ( Rand: 10px 20px; )

Um eindeutige Werte für alle vier Seiten eines Elements festzulegen, geben Sie diese Werte in der folgenden Reihenfolge an: oben, rechts, unten und links, im Uhrzeigersinn. Hier bitten wir um

Der Abstand beträgt 10 Pixel von oben, 20 Pixel von rechts, 0 Pixel von unten und 15 Pixel von links.

Div ( Rand: 10px 20px 0 15px; )

Die Verwendung der Eigenschaft margin oder padding mit einer beliebigen Anzahl von Werten gilt als Kurzschrift. In einer normalen Notation können wir den Wert nur für eine Seite mit eindeutigen Eigenschaften festlegen. Auf jeden Eigenschaftsnamen (in diesem Fall Rand oder Auffüllung) folgt ein Bindestrich und die Seite des Blocks, auf die der Wert angewendet werden soll: oben, rechts, unten oder links. Beispielsweise nimmt die Eigenschaft padding-left nur einen Wert an und legt den linken Rand für dieses Element fest, die Eigenschaft margin-top nimmt nur einen Wert an und legt die obere Polsterung für dieses Element fest.

Div ( Rand oben: 10 Pixel; Polsterung links: 6 Pixel; )

Wenn wir nur einen Wert von margin oder padding definieren möchten, ist es besser, die normale Notation zu verwenden. Dies hält unseren Code klar und hilft, Verwirrung auf dem Weg nach unten zu vermeiden. Möchten Sie zum Beispiel den Rand oben, rechts und links des Elements wirklich auf 0 setzen, oder möchten Sie den unteren Rand wirklich auf 10 Pixel setzen? Die Verwendung der normalen Notation für Eigenschaften und Werte hilft uns dabei, dies auf sinnvolle Weise zu tun. Bei drei oder mehr Werten hingegen ist die Reduktion unglaublich nützlich.

Polster- und Randfarbe

Die Rand- und Polsterungseigenschaften sind vollständig transparent und nehmen keine Farbwerte an. Da sie jedoch transparent sind, zeigen sie die Hintergrundfarbe der zugehörigen Elemente. Für den Rand sehen wir die Hintergrundfarbe des übergeordneten Elements, und für die Auffüllung sehen wir die Hintergrundfarbe des Elements, auf das die Auffüllung angewendet wird.

Grenzen

Rahmen werden zwischen Polsterung und Rändern platziert, wodurch ein Rahmen um das Element entsteht. Die Eigenschaft border erfordert drei Werte: width, style und color. Die Abkürzung für Bordüre wird in der gleichen Reihenfolge angegeben - Breite, Stil, Farbe. In normaler Notation lassen sich diese drei Werte durch die Eigenschaften border-width , border-style und border-color aufschlüsseln. Die reguläre Notation ist nützlich, um einen einzelnen Grenzwert zu ändern oder zu überschreiben.

Die Breite und Farbe der Ränder kann mit den üblichen CSS-Größen- und Farbeinheiten definiert werden, wie in Lektion 3 beschrieben.

Universalwähler

Im ersten Schritt dieser Übung haben wir den universellen Selektor eingeführt. In CSS ist das Sternchen (*) ein universeller Selektor, der jedes Element auswählt. Anstatt alle einzelnen Elemente aufzulisten, können wir ein Sternchen verwenden, um alle Elemente auszuwählen.

Die an dieser Stelle ebenfalls erwähnten Pseudo-Elemente :before und :after sind Elemente, die per CSS dynamisch generiert werden können. Wir werden diese Elemente in unserem Projekt nicht verwenden, aber wenn wir uns auf den universellen Selektor beziehen, ist es auch eine gute Praxis, diese Pseudo-Elemente einzubeziehen, falls sie jemals auftauchen.

Zusammenfassung

Nehmen Sie einen Kuchen und klopfen Sie sich auf den Kopf. Ich warte.

Das Erlernen aller verschiedenen Teile eines Boxmodells ist keine Kleinigkeit. Diese Konzepte, selbst kurz gesagt, haben ziemlich lange gedauert, um sie vollständig zu beherrschen, aber wir sind auf dem richtigen Weg.

Kurz gesagt, in diesem Tutorial haben wir über Folgendes gesprochen:

  • Wie verschiedene Elemente angezeigt werden.
  • Was ist ein Box-Modell und warum ist es so wichtig?
  • So ändern Sie die Größe von Elementen basierend auf Höhe und Breite.
  • So fügen Sie Elementen Rand, Polsterung und Rahmen hinzu.
  • So ändern Sie die Größe von Elementen und beeinflussen das Box-Modell.

Wir haben jetzt ein besseres Verständnis dafür, wie Elemente angezeigt und wie ihre Größe berechnet wird. Es ist Zeit, mit der Positionierung dieser Elemente fortzufahren.

Das CSS-Box-Modell heißt im Englischen Box-Modell (box is a box). Diese Übersetzung hilft ein wenig, die Essenz des Blockmodells zu verstehen. Die Quintessenz ist, dass beim Erstellen einer Seite auf dem Bildschirm Blöcke verwendet werden - rechteckige Bereiche des Bildschirms.

Das CSS-Box-Modell ist eine der Grundlagen für das Verständnis von CSS, dem Dokumentformatierungsmodell.

Bevor Sie CSS lernen, sollten Sie HTML gelernt haben, was bedeutet, dass Sie wissen sollten, dass HTML-Tags in Blockelemente und Inline-Elemente unterteilt sind.

  • Blockelemente sind Tags, die einen Block bilden, d. h. sie nehmen die gesamte verfügbare Breite (von Rand zu Rand) ein, die Höhe eines Blockelements hängt von seinem Inhalt ab, ein Blockelement belegt immer eine neue Zeile. Beispiele für Blockelemente - Tags

    Und

    .
  • Inline-Elemente sind Tags, die keine eigenen Blöcke erstellen, aber die Anzeige des Inhalts des Blocks beeinflussen. Ein Beispiel für solche Tags ist , , und andere.

Betrachten wir die Unterschiede zwischen diesen Gruppen von Elementen anhand eines Beispiels.

CSS-Box-Modell

p-Tag-Block. Diese Stück Text mit einem em-Tag gekennzeichnet.

Dieses Beispiel zeigt deutlich, dass die Tags

Und

Erstellen Sie ihre eigenen Blöcke. Jeder Block begann auf einer neuen Zeile. Für Block
die Breite und Höhe wurden angegeben, und der Block

Besetzt die gesamte Breite des Bildschirms, seine Höhe entspricht der Höhe seines Inhalts. Um dies sichtbar zu machen, sind beide Elemente gelb hinterlegt.

Schild habe nur den Text innerhalb des Blocks formatiert

Mehr über Blöcke.

Jedes Blockelement hat eine Reihe von Eigenschaften, die mit CSS geändert werden können.

Die Basis des Blocks ist sein Inhalt oder Inhalt, die Breite des Inhaltsfelds wird durch die Eigenschaft width und die Höhe durch die Eigenschaft height festgelegt. Aber der Block hat auch andere Felder, sie überlappen sich wie Kohlblätter.

Es ist einfacher, dies als Bild zu zeigen.

Wir sehen, dass der Block neben dem Inhaltsfeld selbst drei weitere Eigenschaften hat:

  • Einbuchtung – Polsterung – zu Deutsch „Stuffing“. Füllung - etwas, das mit dem gefüllt ist, womit das Innere von etwas gefüllt ist. padding ist der Teil des Blocks vom Rand des Inhalts bis zum Rand.
  • Grenze - Grenze - auf Englisch ist die "Grenze". Der Rahmen eines Blockelements kann mit verschiedenen Stilen festgelegt werden: durchgezogene Linie, Punkte, gepunktete Linie; Sie können die Farbe des Rahmens festlegen. Einzelheiten darüber, wie die Randeigenschaft zu steuern ist, werden unten erörtert.
  • Außenrand – Marge – auf Englisch „margin“. Wirtschaftlich bedeutet Marge die Differenz zwischen Kosten und Preis.

In diesem Artikel werden wir die Umrisseigenschaft nicht berücksichtigen. Beachten Sie nur: Diese Eigenschaft wirkt sich nicht auf die Größe des Blocks aus.

Die restlichen Eigenschaften können mit CSS gesteuert werden, indem ihre Größe und einige andere Stilwerte festgelegt werden. Schauen wir uns das an einem Beispiel an.

CSS-Box-Modell

div-Tag-Block.

p-Tag-Block. Dieser Absatz kennt die Standardeigenschaften.

Stil: Polsterung: 10px.

Stil: Rand: 30px.

Das Ergebnis sollte so aussehen:


Abbildung 2. Arbeitsbeispiel Nr. 2.

Wir sehen einen schwarzen (schwarzen) Rand mit einer Dicke von 3 Pixeln um den durch das Tag erstellten Block

. Bis auf die Hintergrundfarbe ist der erste Absatz standardmäßig formatiert. Im zweiten Absatz ist die Auffüllung auf 10px eingestellt, Sie können sehen, dass der Füllbereich der Hintergrundfarbe um den Text herum zugenommen hat. Der dritte Absatz hat keine Polsterung, aber einen Rand von 30px . Wir sehen, dass der Abstand zwischen diesem und dem zweiten Absatz größer ist als zwischen dem zweiten und dem ersten - so funktioniert der äußere Einzug.

Rahmen und Auffüllung sind optionale Eigenschaften des Blocks, der Wert von allen kann gleich Null sein.

Wie werden Hintergrundfarben für diese Eigenschaften festgelegt?

  • Die innere Polsterung – padding – hat immer die Hintergrundfarbe des Elements selbst, eingestellt in der Eigenschaft background-color.
  • Der Rahmen ist border - seine Farbe wird durch die Eigenschaft border-color festgelegt.
  • Rand - er ist immer transparent, daher ist die Farbe dieses Bereichs dieselbe wie die Hintergrundfarbe des übergeordneten Elements (in unserem Fall ist dies die weiße Hintergrundfarbe des Elements standardmäßig eingestellt).

Erweiterte Optionen zum Verwalten von Blockeigenschaften

Zusätzlich zur gleichzeitigen Steuerung aller Seiten eines Blocks ist es möglich, jede Seite jeder Eigenschaft separat zu steuern. Hier ist eine Grafik, die die CSS-Eigenschaften für dieses Steuerelement im Blockstil demonstriert.


Abbildung 3. CSS-Box-Modell.

Schauen wir uns die Eigenschaften von Blöcken genauer an und geben Beispiele für ihre Verwendung.

Polsterung - Polsterung

Padding - Padding - der Abstand vom inneren Rand des Rahmens zum bedingten Rechteck, das den Inhalt des Blocks begrenzt. Da die Polsterung auf jeder Seite des Blocks unterschiedlich sein kann, sprechen wir von „top padding“ oder „top padding“. Es ist erwähnenswert, dass verschiedene CSS-Bücher unterschiedliche Übersetzungen für die padding-Eigenschaft verwenden, in einigen heißt es einfach padding, in anderen heißt es margin, und margin heißt padding.

Die Hauptfunktion des Paddings besteht beispielsweise darin, zwischen dem Inhalt des Blocks und dem Rand einen Leerraum zu schaffen, damit der Text nicht eng am Rand anliegt. Einzüge lassen die Seite attraktiver aussehen und der damit gestaltete Text wird besser lesbar.

CSS-Box-Modell

Das Ergebnis sollte so aussehen:

Abbildung 4. Arbeitsbeispiel Nr. 3.

Wir sehen einen schön gestalteten Block mit Polsterung bis zum Rand.

Grenze - Grenze

Rahmen sind Linien um den inneren Inhalt eines Elements. Der Rahmen kann für alle Seiten des Blocks oder für eine beliebige Zahl festgelegt werden. Sie können die Dicke, den Stil und die Farbe des Rahmens festlegen. Um einen Rahmen (Border) zu erstellen, hat CSS, wie zuvor geschrieben, eine Border-Eigenschaft. In dieser Eigenschaft können Sie alle Eigenschaften des Rahmens festlegen (Dicke, Stil und Farbe). Und um Ränder an einzelnen Seiten eines Blocks zu erstellen, müssen Sie die Eigenschaften border-top , border-right , border-bottom und border-left verwenden.

CSS-Box-Modell

Das Ergebnis der Ausführung des Codes sollte wie folgt aussehen:


Abbildung 5. Arbeitsbeispiel Nr. 4.

Äußere Polsterung - Rand

Die Polsterung ist der Abstand vom Rand der Box bis zum äußeren Rand. Die Ränder werden durch die Eigenschaft margin festgelegt. Wie bei Padding und Borders kann Padding für jede Seite der Box eingestellt werden. Beispielsweise steuert die Eigenschaft margin-left den Einzug der Box auf der linken Seite.

Merkmale externer Einzüge.

  • Die Marge ist immer transparent. Es akzeptiert nicht die Hintergrundfarbe oder das Hintergrundbild für den Block, zu dem es gehört. Es nimmt jedoch den Hintergrund des übergeordneten Elements.
  • Die Außenränder werden aufsummiert. Wenn zwischen den Blöcken 25 Pixel Polsterung vorhanden sind, beträgt der Abstand zwischen ihnen nicht 50 Pixel, sondern 25 Pixel, da sich die äußere Polsterung überlappt.
  • Sie können den Rand auf einen negativen Wert setzen. Dieser Wert verschiebt die Box, wenn Sie beispielsweise margin-left : -20px deklarieren, wird die Box um zwanzig Pixel nach links verschoben.
  • Einzüge können in Prozent eingestellt werden, solche Einzüge werden aus der Größe des Inhaltsblocks berechnet. Dies wird sowohl für die horizontale als auch für die vertikale Polsterung durchgeführt.
CSS-Box-Modell

Jahrtausende sind vergangen. Ein ewig laufender Mechanismus ist gestoppt. Lebenserhaltungssysteme wurden beschädigt.

Jahrtausende sind vergangen. Ein ewig laufender Mechanismus ist gestoppt. Lebenserhaltungssysteme wurden beschädigt.

Der Fremde sah sich um. In jeder Richtung bis zum Horizont war Wüste.

Betrachten wir dieses Beispiel genauer. Das Ergebnis seiner Ausführung sollte wie folgt aussehen:

Abbildung 6. Arbeitsbeispiel Nr. 5.

Für Tag

Der Rand ist auf 1 Pixel Dicke eingestellt. Dies geschieht, um sehen zu können, wo der äußere Einzugsbereich dieses Tags beginnt.

Ein Etikett

In einem Block platziert

mit Hintergrundfarbsatz. Es ist zu erkennen, dass die äußere Einkerbung des Etiketts

Akzeptiert die Hintergrundfarbe des Tags

. Ein Schlagwort

Diejenigen außerhalb dieses Blocks haben eine weiße Füllfarbe, die der Hintergrundfarbe des Blocks entspricht Default.

Der letzte, leere Absatz hat eine Höhe von height : 20px , er ist im Beispiel nur enthalten, um besser erkennen zu können, dass der Abstand zwischen den Absätzen 20px beträgt und gleich der Höhe dieses leeren Absatzes ist. Im Stylesheet für das Tag

Die Deklarationsmarge : 20px ist eingestellt, Sie können sehen, dass die Ränder der Absätze zusammenlaufen und der Abstand zwischen den Absätzen nicht 40px, sondern 20px beträgt.

Die Blockbreite ist ein zusammengesetzter Wert, sie ist die Summe der Werte mehrerer Eigenschaften:

  • width - die Breite des Blockinhalts;
  • padding-left und padding-right - Auffüllen links und rechts vom Inhalt;
  • border-left und border-right - Dicke des Randes links und rechts;
  • margin-left und margin-right - Rand links und rechts.

Die Werte einiger Eigenschaften können auf Null gesetzt werden, in diesem Fall wirken sie sich nicht auf die Breite der Box aus.

In Abbildung 7 ist der Block mit einer schwarzen gestrichelten Linie markiert.


Abbildung 7. Blockbreite.

Wenn der Breitenwert des Blocks nicht im Stylesheet festgelegt ist, wird er standardmäßig auf auto gesetzt. In diesem Fall nimmt das Inhaltsfeld die gesamte verfügbare Breite ein (den übergeordneten Block oder, falls keines vorhanden ist, das Browserfenster), aber die Abmessungen aller Auffüllungen und des Rahmens bleiben erhalten.

Berechnen wir die Breite des Blocks am Beispiel des folgenden Stils:

Breite: 400px /* Blockbreite */ Polsterung: 5px; /* Padding zum Rand */ border-width: 3px; /* Randstärke */ Rand: 7px; /* Äußere Polsterung */

Fügen wir alle Terme hinzu, die die Breite des Blocks ausmachen:

Blockbreite = 400 + 5*2 + 3*2 + 7*2 = 430px.

Legacy-Box-Modell

Historisch wurde das oben beschriebene Blockbreiten-Berechnungsverfahren nicht immer verwendet. Es ist derzeit der vom W3C angenommene Standard. Aber vorher war die width-Eigenschaft nicht gleich dem Inhaltsrand, sondern der Blockabstand, der die border-Eigenschaft enthielt. Die Quelle eines solchen Blockmodells war Microsoft, auf dessen Basis arbeitete der Internet Explorer bis Version 7. Die Abbildung zeigt einen Vergleich zweier Blockmodelle.

Abbildung 8. Zwei Box-Modelle.

Im Netz sind eine Vielzahl alter Dokumente erhalten geblieben, die im alten Box-Modell, auch „Kompatibilitätsmodus“ genannt, erstellt wurden. Abschreiben lohnt sich also nicht.

Es ist wichtig zu wissen: wenn das Dokument nicht angibt, wechseln Browser in den Kompatibilitätsmodus.

Box-Sizing-Eigenschaft

Bei der Berechnung der Breite eines Blocks bei Verwendung von Prozent als Maßeinheit in der Eigenschaft width können gewisse Probleme auftreten. Prozentangaben sind ein relativer Wert, was sie etwas unvorhersehbar macht, insbesondere wenn Polsterung und Rahmen in absoluten Einheiten angegeben werden. Dadurch ist es möglich, dass die Gesamtbreite des Blocks die Breite des Browserfensters überschreitet, was zum Erscheinen einer horizontalen Bildlaufleiste führt.

Wir werden nicht im Detail auf das Wesentliche des Problems eingehen, dies ist nicht die Ebene dieses Artikels. Hier möchte ich nur anmerken, dass das veraltete System manchmal nützlich ist. Um den Box-Model-Algorithmus ändern zu können, hat CSS3 die nützliche Box-Sizing-Eigenschaft eingeführt. Bei einem Wert von border-box beginnt die Breite der Box Ränder und Ränder einzuschließen, aber keine Ränder. Indem wir also die Eigenschaft box-sizing auf border-box setzen, können wir die Breite des Blocks als Prozentsatz festlegen und die Eigenschaften border und padding sicher auf die benötigte Größe setzen, ohne befürchten zu müssen, dass sich die Breite der Box ändert.

Bei der Bildung der Blockhöhe wird die gleiche Formel verwendet wie bei der Bildung der Blockbreite. Die Blockhöhe ist die Summe aus der Höhe von Inhaltsbox, Rand, Padding und Padding (oben und unten natürlich). Wenn der Wert der Eigenschaft height nicht angegeben ist, wird der Standardwert auf auto gesetzt, in diesem Fall wird die Höhe des Inhaltsfelds automatisch berechnet und hängt vom Inhalt selbst ab.

Abbildung 9 zeigt alle Eigenschaften, die die Gesamthöhe des Blocks ausmachen, der durch die schwarze gepunktete Linie angezeigt wird.


Abbildung 9. Blockhöhe.

Obwohl die Formeln zur Bestimmung der Höhe eines Blocks und seiner Breite im Prinzip sehr ähnlich sind, gibt es diesbezüglich deutliche Unterschiede beim Arbeiten mit Blöcken.

Lassen Sie uns zu einem Beispiel springen und den Fall betrachten, in dem die Eigenschaften width und height des Blocks auf 200% gesetzt sind.

CSS-Box-Modell

Der Block erhält außerdem eine Hintergrundfarbe, damit sein Bereich sichtbar ist. So sieht es aus:

Abbildung 10. Arbeitsbeispiel Nr. 6.

Wir sehen, dass sich horizontal ein Scrollbalken gebildet hat, dessen Größe doppelt so groß ist wie das Browserfenster, also Die Blockbreite entspricht immer 200 % des übergeordneten Elements - dem Browserfenster. Aber es gibt keinen solchen Effekt in der Vertikalen. Die Verwendung von Prozentsätzen zur Angabe der Höhe ist nicht sinnvoll, da die Höhe des standardmäßigen übergeordneten Elements nicht vorhanden ist und angegeben werden muss.

CSS-Box-Modell

Block mit Breite = 200 % und Höhe = 100 %.

Hier das übergeordnete Element für

- tegu , die Höhe ist auf 50px eingestellt und die Höhe für
auf 100 % gesetzt. Das heißt, dieses Tag hat eine Höhe von 50 Pixel.

Abbildung 11. Arbeitsbeispiel Nr. 7.

Es ist zu erkennen, dass sich die in #F3F3D6 eingefärbte Fläche vergrößert hat. Wird das Browserfenster weiter verkleinert, erscheint ein vertikaler Scrollbalken, was im vorigen Beispiel nicht der Fall war.

Wenn in diesem Beispiel aber wie man es so macht, dass der Höhenparameter am Block in Prozent eingestellt ist und es funktioniert hat. Versuchen Sie, das vorherige Beispiel zu ändern und die Höhe der Körperauswahl auf 100 % festzulegen. Dieses Beispiel wird nicht funktionieren. Wieso den? Denn für das Etikett die Höhe ist relativ zu ihrem übergeordneten Element - dem Tag , und die Höhe ist dort nicht eingestellt. Also 100% von nichts ist nichts. Um dieses Problem zu lösen, müssen Sie den folgenden Stil schreiben:

CSS-Box-Modell

Block mit Breite und Höhe = 200 %.

Nur durch Einstellen der Höhe auf 100 % für Tags und Wir können die Höhe als Prozentsatz für das Tag festlegen

und sie wird arbeiten.

Abbildung 12. Arbeitsbeispiel Nr. 8.

Wenn Sie mit der Höhe des Blocks arbeiten, sollten Sie noch Folgendes beachten: Wenn der Inhalt die Größe des Blocks überschreitet, geht er darüber hinaus. Hier ist ein Beispiel für einen solchen Code:

CSS-Box-Modell

Jahrtausende sind vergangen. Ein ewig laufender Mechanismus ist gestoppt. Lebenserhaltungssysteme wurden beschädigt.

Das Beispiel zeigt, dass der Text über die Grenzen des Blocks hinausgegangen ist.

Abbildung 13. Arbeitsbeispiel Nr. 9.

Dies zu vermeiden ist sehr einfach - legen Sie einfach nicht die Höhe des Inhalts fest (height ). Manchmal müssen Sie jedoch die Höhe des Blocks genau definieren. In diesem Fall können Sie die Overflow-Eigenschaft mit dem Wert auto verwenden. Diese Eigenschaft erstellt eine Bildlaufleiste im Block, wenn die Inhaltsgröße die Blockgröße überschreitet.

Fügen wir die Overflow-Eigenschaft mit dem Wert auto zum Stil von Beispiel #9 hinzu und das Ergebnis sieht so aus:

Abbildung 14. Überlauf-Eigenschaft auf auto gesetzt.

Die Overflow-Eigenschaft hat einen weiteren Wert, der auch zum Anpassen der Höhe des Blocks verwendet werden kann - hidden. Dieser Wert blendet einfach alles aus, was nicht in die eingestellten Blockgrößen passt.

Abbildung 14. Überlauf-Eigenschaft auf versteckt gesetzt.

Minimale und maximale Elementbreite

In diesem Artikel ist es auch angebracht, sich an die Eigenschaften min-width und max-width zu erinnern, die die minimale bzw. maximale Breite eines Elements festlegen.

Die Eigenschaft min-width funktioniert folgendermaßen: Wenn der Benutzer die Größe des Browserfensters ändert, wird die Blockbreite nicht kleiner als das Minimum, in diesem Fall wird eine Bildlaufleiste angezeigt. Der Wert der Breite des Elements hängt von den Werten der Eigenschaften width , max-width und min-width ab.

Die Tabelle zeigt, wie Browser Blockbreiten berechnen, wenn sie diese Eigenschaften verwenden.

Tab. 1. Artikelbreite
Eigenschaftswerte Breite
Mindestbreite < Breite < maximale Breite Breite
Mindestbreite > Breite > maximale Breite Mindestbreite
Mindestbreite > Breite < maximale Breite Mindestbreite
Mindestbreite < Breite Breite
Mindestbreite > Breite Mindestbreite
Mindestbreite > maximale Breite Mindestbreite
Mindestbreite < maximale Breite maximale Breite

Die Eigenschaft max-width legt die maximale Breite eines Elements fest. Ein Beispiel für die Verwendung der Eigenschaft max-width:

CSS-Box-Modell

Jahrtausende sind vergangen. Ein ewig laufender Mechanismus ist gestoppt. Lebenserhaltungssysteme wurden beschädigt.

Der Fremde sah sich um. In jeder Richtung bis zum Horizont war Wüste.

Minimale und maximale Elementhöhe

Ebenso gibt es Eigenschaften zum Festlegen der minimalen und maximalen Höhe eines Elements: min-height und max-height .

Dieser Artikel behandelt einen sehr wichtigen Punkt beim Layout von Webseiten – das Box-Modell oder mit anderen Worten das Block-Layout-System für Websites.

Um die Essenz dieses Konzepts zu enthüllen, wenden wir uns den Spezifikationen zu W3C. Dieses Dokument besagt, dass ein Blockelement ein Rechteck ist, das für Dokumentbaum-Tags erstellt wird.

Einfach ausgedrückt werden die Tags innerhalb der Seite in Rechtecke umgewandelt, wenn sie auf dem Bildschirm angezeigt werden.

Blockelementstruktur

Die Boxmodellstruktur ist nicht besonders komplex.

Grob gesagt ähnelt es Verschachtelungspuppen aus Rechtecken: Das größte Rechteck ist der äußere Rand oder Einzug, gefolgt von der Umrandung des Blockelements selbst, dann den inneren Einzügen und dem Inhalt selbst.

Um dieses Problem besser zu veranschaulichen, sehen Sie sich die folgende Abbildung an:

Die Größe jeder Komponente wird mit dem entsprechenden CSS-Stil angepasst: Gewinnspanne– externe Felder, Grenze– die Grenzen des Elements selbst und Polsterung ist der Wert interner Felder.

Es ist auch erwähnenswert, dass die Menge an Rändern und Rändern für jede Seite unabhängig gesteuert werden kann, was in der folgenden Abbildung deutlich dargestellt wird:

Grundlegende Unterschiede zwischen Rand und Polsterung

Zunächst sollte eine klare Grenze zwischen den Begriffen Einzug und Einzug gezogen werden. Äußeres Padding bedeutet in diesem Sinne den Abstand zwischen den äußeren umgebenden Elementen und dem Rand des Blockelements selbst und das innere den Abstand vom Inhalt zum Rand.

Der nächste grundlegende Unterschied zwischen diesen Elementen besteht darin, dass sich bei der Zuweisung eines bestimmten Farbschemas zum Hintergrund die Farbe nur auf den Raum ausbreitet, der sich auf das Polsterelement bezieht.

Ein weiteres Unterscheidungsmerkmal dieser Elemente basiert auf der Berechnung der Gesamtbreite des Blockbauteils. Standardmäßig ist die Polsterung in dieser Breite enthalten, der Rand jedoch nicht. Dieser Umstand hängt vom verwendeten Blockmodell des Dokuments ab.

Sorten von Blockmodellen

Bis heute gibt es nur 2 verschiedene Modelle von Blocksystemen: traditionell, basierend auf den Funktionen von Internet Explorer 6 und allgemein, basierend auf den Grundprinzipien der W3C-Postulate. Letzteres wird von allen modernen Browsern verwendet.

Unterscheidungsmerkmal von Blockelementen aus verschiedenen Systemen

Es gibt einen einzigen Unterschied zwischen Blöcken in herkömmlichen und gebräuchlichen Systemen. Es basiert auf den unterschiedlichen Regeln zur Berechnung der Höhe und Breite des Blocks.

Gemäß der traditionellen Struktur des Blockelementesystems, gemäß den Regeln des Internet Explorers, umfassen die Höhen- und Breiteneigenschaften nicht nur die Abmessungen des Inhalts, sondern auch seine Ränder und Polsterung.

Das modernere Box-System, das sich an den Postulaten des W3C orientiert, berücksichtigt bei der Zuweisung der Breiten- und Höheneigenschaften jedoch nur den Inhalt. Ein optischer Unterschied ist in der folgenden Abbildung dargestellt:

Es ist sehr wichtig, diese Unterschiede zu berücksichtigen, wenn Sie eine neue Webressource erstellen.

Bestimmung der tatsächlichen Abmessungen von Elementen

Hoffentlich ist mit dem traditionellen Ansatz, einem Block eine Höhe und Breite zuzuweisen, alles sehr klar. Zum Beispiel, wenn ein Webmaster den folgenden Code in eine CSS-Datei schreibt:

Block ( Breite: 200px; Polsterung: 20px; )

Dies bedeutet, dass das Element mit der Blockklasse 200 Pixel breit ist, da der Inhalt selbst 180 Pixel belegt und die restlichen 20 Pixel für die Polsterung verwendet werden.

Der zweite Fall, der nicht zum traditionellen gehört, ist mit gewissen Schwierigkeiten verbunden. Sie treten auf, weil die Breiten- und Höheneigenschaften nur für den Inhalt gelten und die Blockgrößen daher nicht mit diesen Parametern übereinstimmen.

Genau deshalb Ein anständiger Layout-Designer muss wissen, wie die tatsächlichen Abmessungen eines Blockelements ermittelt werden. Beim Durcharbeiten dieses Punktes wird uns eine Abbildung helfen, die die Komponenten veranschaulicht, aus denen der Block besteht:

Daraus folgt, dass Sie, um beispielsweise die Höhe eines Blockelements zu bestimmen, die obere und untere Polsterung, die Ränder und die Inhaltshöhe hinzufügen müssen. Ähnliche Berechnungen werden bei der Bestimmung des Breitengrads des Elements durchgeführt, was in der folgenden Abbildung dargestellt ist:

Eine interessante Situation ergibt sich jedoch, wenn die Breite als Prozentsatz mit einem Rand ungleich Null und Auffüllung festgelegt wird. Dann gibt es natürlich einen Fehler in der Größe des Elements.

Deshalb versuchen erfahrene Webmaster, die prozentuale Angabe der Breite für Blocklayouts nach den W3C-Regeln so wenig wie möglich zu verwenden.

Zusammenfassen

Nachdem Sie sich mit diesem Problem befasst haben, können Sie viele Probleme beim Bauen von Baustellen vermeiden, insbesondere in der Anfangsphase.

Falls gewünscht, haben wir die Möglichkeit, das Box-Modell des Dokuments nach eigenem Ermessen zu ändern, indem wir die Box-Sizing-Eigenschaft verwenden. Aber ich würde dies nicht empfehlen, denn wenn Sie diese Nuance in Zukunft vergessen oder Ihre Websites einfach auf andere Personen übertragen, können Sie sich später in einer ziemlich unangenehmen Situation befinden.

Das Box-Modell ist eines der grundlegenden Konzepte des Layouts.

Die W3C-Spezifikation definiert dieses Konzept wie folgt:

Das CSS-Boxmodell beschreibt eine rechteckige Box, die für ein Element in der Dokumentenstruktur generiert und gemäß dem visuellen Formatierungsmodell gerendert wird.

Auf Russisch bedeutet dies, dass das Element im HTML-Dokument in einem eigenen rechteckigen Block angezeigt wird.

Struktur eines Elements in einem Blockmodell

Im Allgemeinen besteht ein Block aus direkt Inhalt(interner Inhalt), Polsterung, Grenzen und endlich, Ränder.

Um jeden der Bestandteile des Blocks zu steuern, gibt es entsprechende CSS-Eigenschaften: padding - , border - , padding - . Falls gewünscht, können diese Eigenschaften für jede Seite des Blocks separat eingestellt werden (siehe Abbildung):

Was ist der Unterschied zwischen innerer und äußerer Einkerbung?

Für ein Element können Sie also Rahmen (Rahmen) und zwei Arten von Einzügen festlegen. Wie unterscheiden sie sich?

Der Hauptunterschied fällt sofort ins Auge: padding ist das Padding zwischen Inhalt und Rand, margin das Padding zwischen Rand und „Außenwelt“.

Dies impliziert den zweiten Unterschied: Wenn Sie für ein Element einen Hintergrund () festlegen, werden sowohl der Inhalt als auch die Polsterung mit diesem Hintergrund gefüllt. Die Marge, die außen ist, bleibt immer transparent.

Polsterung, wenn wir eine Analogie ziehen, das sind die Ränder auf einem Blatt Papier. Sie haben die gleiche Farbe wie das Blatt selbst, aber der Text geht nicht darüber. Der Rand ist der Abstand vom Rand eines Blattes zu einem anderen benachbarten Blatt oder beispielsweise zum Rand eines Tisches.

Der dritte Unterschied besteht darin, dass Polsterung und Rand unterschiedlich zur Gesamtbreite des Blocks beitragen. Dies hängt vom akzeptierten Blockmodell ab.

Was sind blockmodelle

Derzeit gibt es zwei Hauptblockmodelle: Modell von W3C, das von allen gängigen Browsern unterstützt wird, und die sog traditionell- Es wird von IE6 im Abwärtskompatibilitätsmodus unterstützt.

Was ist der Unterschied zwischen verschiedenen Blockmodellen?

Die Elementblockstruktur ist genau die gleiche. Der einzige Unterschied zwischen den verschiedenen Modellen ist Größenregeln Element.

Im traditionellen Box-Modell, das IE6 im Kompatibilitätsmodus unterstützt, umfassen die Abmessungen eines Elements, die durch die Eigenschaften und angegeben werden, den Inhalt, die Auffüllung und den Rahmen des Elements.

Im Box-Modell des W3C umfassen die Abmessungen eines Elements, die durch die Eigenschaften width und height gegeben sind, nur den Inhaltsteil. Das heißt, Breite und Höhe enthalten keine Füll- oder Rahmengrößen (siehe Abbildung).

Die tatsächliche Breite des Elements ist dementsprechend gleich: + + + + .

Dementsprechend ergibt das gleiche Beispiel „Elementbreite 100px und Padding 10px auf jeder Seite“ bereits einen Block mit einer Gesamtbreite von 120px! Denn width:100px bedeutet genau 100px für den Inhaltsbereich. Alle Paddings und Borders werden zu diesem festen Wert addiert.

Auch die Logik ist klar: Die Hauptsache im Block ist sein Inhalt. Und wenn ich hundert Pixel sage, dann hundert, und keine Paddings und Borders werden für mich etwas ändern!

Auf den ersten Blick ist alles leicht und einfach! Aber es war nicht da…

Wie soll man sich zum Beispiel in einer Situation befinden, in der die Breite eines Elements gleich 100 % ist und die Füllung und/oder der Rand ungleich 0 sind? Dann ist die tatsächliche Breite des Elements größer als 100 %, was nicht immer wünschenswert ist.

Dies ist die größte Herausforderung des W3C-Box-Modells: Wenn die Breite in Prozent und die Auffüllung und der Rahmen in Pixel angegeben sind. Eine solche Situation sollte, wenn nicht vermieden, dann zumindest seltener und mit Verständnis für die Problematik genutzt werden.

Modellverwaltung blockieren

Wie oben beschrieben, kann das Box-Modell des W3C in manchen Fällen etwas umständlich sein, daher haben die klugen Leute beim gleichen W3C in CSS3 die Möglichkeit bereitgestellt, zwischen dem W3C-Box-Modell und dem traditionellen Box-Modell mithilfe der CSS3-Eigenschaft umzuschalten. Weitere Details, wo und wie es verwendet werden kann, sind im Artikel beschrieben.

Vom Autor: alles besteht aus Boxen - das ist vielleicht das Wichtigste, was man in CSS verstehen muss. Im Detail erzeugt jedes Element im Dokument eine Box. Boxen kann auf Block- oder Inline-Level stattfinden. Der Feldtyp bestimmt, wie sich das Element auf das Layout der Seite auswirkt.

Ob eine Box erstellt wird oder nicht, sowie der Typ dieser Box, hängt von der Auszeichnungssprache ab. CSS wurde entwickelt, um HTML-Dokumente zu stylen, daher basiert das visuelle CSS-Rendering-Modell weitgehend auf den Unterschieden zwischen Block- und Inline-Elementen in HTML. Standardmäßig erstellen die p- und section-Elemente Boxen auf Blockebene, und die a-, span- und em-Tags erstellen Inline-Boxen. SVG verwendet das Box-Modell überhaupt nicht, daher funktionieren die meisten CSS-Layout-Eigenschaften nicht mit SVG.

Boxen auf Blockebene erstellen neue Inhaltsblöcke, wie in Abbildung 4.1 zu sehen. Box Boxen werden vertikal in Quellreihenfolge gerendert und füllen (mit Ausnahme von Tabellen) die volle Breite des Containers aus. Dies ist eine normale Anzeige von block , list-item , table und anderen table-* -Werten (wie table-cell ).

Abbildung 4.1. Blocklevel-Boxen in h1-, p-, ul- und Tabellen-Tags innerhalb des Containers (grauer Bereich)

Inline-Level-Boxen bilden keine neuen Inhaltsblöcke. Diese Boxen erzeugen Linien innerhalb der Blockbox. Sie werden horizontal angezeigt und füllen die Breite der Containerbox aus, wobei sie bei Bedarf zu neuen Zeilen springen, wie in Abbildung 4.2 gezeigt. Inline-Level-Boxen enthalten Anzeigeeigenschaftswerte inline, inline-block, inline-table und ruby.

Abbildung 4.2. Inline-Box-Beispiel mit Rand: 1em und Polsterung: 5px

Aber wie werden Kartongrößen berechnet? Hier ist alles etwas komplizierter. In Abbildung 4.3 sehen Sie, dass die Abmessungen der Box die Summe des Inhaltsbereichs, der Polsterung und der Breite plus der Breite des Rahmens sind, wie in CSS2 definiert. Die Breite des Rands erstellt ein Randfeld auf dem Element und wirkt sich auf andere Elemente im Dokument aus, wirkt sich jedoch nicht auf die Abmessungen des Felds selbst aus.

Abbildung 4.3. CSS 2.1 Box-Modell

Beispielsweise hätte ein p-Tag mit einer Breite von 300 Pixel, einer Polsterung von 20 Pixel und einem Rand von 10 Pixel eine berechnete Breite von 360 Pixel. Die Breite setzt sich aus der Absatzbreite, dem linken und rechten Padding sowie der linken und rechten Randbreite zusammen. Damit das Element eine Gesamtbreite von 300 Pixel hat, aber dennoch 20 Pixel Polsterung und 10 Pixel Rand behält, würden Sie die Breite auf 240 Pixel einstellen. Die meisten Browser berechnen die Breite auf diese Weise. Dies gilt jedoch nicht für IE 5.5.

IE 5.5 verwendet die Eigenschaft width als endgültigen Wert für die Abmessungen der Box und verschiebt die Polsterung und den Rahmen in die Box, wie in Abbildung 4.4 gezeigt. Beide Werte werden von width abgezogen, wodurch der Inhaltsbereich verkleinert wird. Viele Programmierer finden diesen Ansatz sinnvoller, obwohl er nicht spezifikationsgemäß funktioniert.

Abbildung 4.4 Box-Modell in CSS 2.1 und Box-Modell im alten IE 5.5

Die CSS-Arbeitsgruppe führte die Box-Sizing-Eigenschaft als einen Teilweg ein, um diese konkurrierenden Modelle anzugehen. Es ermöglicht Ihnen, die Implementierung des Box-Modells auszuwählen, und vereinfacht außerdem die Berechnungen bei der Arbeit mit adaptivem Design erheblich.

Auswählen eines Box-Modells mithilfe der Box-Sizing-Eigenschaft

Die Box-Sizing-Eigenschaft ist in der CSS Basic User Interface Module Level 3-Spezifikation definiert und nimmt zwei mögliche Werte an: content-box und border-box.

Der Standardwert ist content-box. Mit diesem Wert wirken sich die Eigenschaften width und height auf die Größe des Inhaltsbereichs aus, was dem gleichen Verhalten entspricht, wie es in der CSS 2.1-Spezifikation beschrieben wird. Dieses Verhalten ist in modernen Browsern standardmäßig eingestellt (wie in Abbildung 4.4 gezeigt).

Der Border-Box-Wert fügt etwas Magie hinzu. Die Breiten- und Höheneigenschaften beginnen sich auf den äußeren Rahmenrand und nicht auf den Inhaltsbereich zu beziehen. Der Rahmen und die Füllung werden innerhalb der Box des Elements gezeichnet, was dem alten Verhalten in IE 5.5 entspricht. Schauen wir uns ein Beispiel an, bei dem die prozentuale Breite mit den Pixeln auf der Polsterung und dem Rand ausgerichtet ist:

Dies ist eine Überschrift

< div class = "wrapper" >

< article >

< h2 >Dies ist eine Überschrift< / h2 >

< p >< / p >

< / article >

< aside >

< h2 >Dies ist eine sekundäre Überschrift< / h2 >

< p >Lorem ipsum dolor sit amet, consectetur adipisicing. . .< / p >

< / aside >

< / div >

Der folgende CSS-Code wurde auf die Tags article und aside angewendet, wodurch wir das in Abbildung 4.5 gezeigte Layout erhalten, in dem das erste Element 60 % breit und das zweite Element 40 % breit ist:

Artikel, beiseite ( Hintergrund: #FFEB3B; Rand: 10px solid #9C27B0; Float: left; padding: 10px; ) Artikel (Breite: 60%; ) beiseite (Breite: 40%; )

Artikel, beiseite (

Hintergrund: #FFEB3B;

Rand: 10px solide #9C27B0;

Schwimmer: links;

Polsterung: 10px

Artikel(

Breite: 60 %;

beiseite (

Breite: 40%

Abbildung 4.5. Elemente mit Box-Sizing: content-box

Standardmäßig sind aside und article auf Box-Sizing mit dem Wert content-box eingestellt. Die Werte border-width und padding addieren 40 Pixel zur Breite der Elemente, wodurch sich das Verhältnis auf 60 %/40 % ändert. Lassen Sie uns die Eigenschaft box-sizing: border-box zum Artikel und neben den Tags hinzufügen:

Artikel, beiseite ( box-sizing: border-box; )

Artikel, beiseite (

Box-Größe: Border-Box;

Die Änderungen sind in Abbildung 4.6 dargestellt: Die Breite der Elemente bleibt erhalten, aber aufgrund von box-sizing: border-box besteht die Breite jetzt auch aus einem Rahmen und einem Padding. Die Breite wird jetzt auf den äußeren Rand des Rahmens angewendet und nicht auf den Inhaltsbereich, sodass unsere Elemente eng aneinander liegen und nicht in die neue Zeile verschoben wurden.

Abbildung 4.6 Elemente mit Box-Sizing: Border-Box

Ich würde vorschlagen, die Eigenschaft box-sizing: border-box zu verwenden. Es vereinfacht das Leben, es muss nicht die Breite berechnet werden, um die Polsterung und die Randbreite anzupassen.

Verwenden Sie am besten Box-Sizing: Border-Box mit Reset-Regeln. Das folgende Beispiel stammt aus Chris Coyiers CSS-Tricks-Artikel "