So zentrieren Sie den gesamten Seiteninhalt und passen die Höhe automatisch an den Inhalt an. Dies ist das häufigste Problem beim Erlernen von CSS-Layout. Nachfolgend finden Sie ein praktisches Beispiel mit anschließender ausführlicher Erläuterung. Klicken Sie zunächst hier, um den tatsächlichen Laufeffekt zu sehen. Diese Seite kann in den Browsern Mozilla, Opera und IE zentriert und hochgradig adaptiv sein. Lassen Sie uns den Code analysieren: Code kopieren Der Code lautet wie folgt:<html> <Kopf> <style type="text/css"> Körper{ Hintergrund:#999; Textausrichtung: zentriert; Farbe: #333; Schriftfamilie: Arial, Verdana, Sans-Serif; } #header{ Breite: 776px; Rand rechts: automatisch; Rand links: automatisch; Polsterung: 0px; Hintergrund: #EEE; Höhe: 60px; Textausrichtung: links; } #enthalten{ Rand rechts: automatisch; Rand links: automatisch; Breite: 776px; } #mainbg{ Breite: 776px; Polsterung: 0px; Hintergrund: #60A179; schweben: links; } #Rechts{ schweben: rechts; Rand: 2px 0px 2px 0px; Polsterung: 0px; Breite: 574px; Hintergrund: #ccd2de; Textausrichtung: links; } #links{ schweben: links; Rand: 2px 2px 0px 0px; Polsterung: 0px; Hintergrund: #F2F3F7; Breite: 200px; Textausrichtung: links; } #Fußzeile{ klar: beides; Breite: 776px; Rand rechts: automatisch; Rand links: automatisch; Polsterung: 0px; Hintergrund: #EEE; Höhe: 60px;} .text{margin:0px;padding:20px;} </Stil> </Kopf> <Text> <div id="header">Kopfzeile</div> <div id="enthalten"> <div id="mainbg"> <div id="rechts"> <div class="text">rechts<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p></div> </div> <div id="links"> <div class="text">links</div> </div> </div> </div> <div id="footer">Fußzeile</div> </body> </html> Code-Analyse: Zuerst definieren wir den Body und die erste Zeile #header ganz oben. Der Schlüssel dabei ist text-align:center; im Body und margin-right: auto;margin-left: auto; im Header. Diese beiden Sätze zentrieren den Header. Hinweis: Tatsächlich hat die Definition von text-align:center; bereits eine Zentrierung im Internet Explorer erreicht, ist aber in Mozilla ungültig. Sie müssen margin:auto; festlegen, um eine Zentrierung in Mozilla zu erreichen. Als nächstes definieren Sie die beiden mittleren Spalten #right und #left. Um die beiden mittleren Spalten zu zentrieren, verschachteln wir eine Ebene #contain außerhalb von ihnen und setzen margin:auto; für contain, sodass #right und #left natürlich zentriert sind. Beachten Sie die Reihenfolge, in der die beiden mittleren Spalten definiert werden. Wir definieren zuerst #right und verwenden float: right;, um es ganz rechts in der Ebene #contain schweben zu lassen. Definieren Sie dann #left und verwenden Sie float: left;, um es links von der Ebene #right schweben zu lassen. Dies ist genau das Gegenteil der Reihenfolge, in der wir die Tabelle zuvor von links nach rechts definiert haben (Korrektur: Es kann entweder zuerst links und dann rechts oder zuerst rechts und dann links implementiert werden; gestalten Sie es nach Ihren Anforderungen). Wir können sehen, dass zwischen #contain und den beiden Spalten im Code eine Ebene #mainbg verschachtelt ist. Wofür wird diese Ebene verwendet? Diese Ebene wird verwendet, um den Hintergrund von #contain zu definieren. Sie fragen sich vielleicht, warum der Hintergrund nicht direkt in #contain definiert wird, anstatt eine zusätzliche Ebene hinzuzufügen? Das liegt daran, dass der direkt in #contain definierte Hintergrund in Mozilla nicht angezeigt wird und daher der Höhenwert definiert werden muss. Wenn ein Höhenwert definiert ist, kann die rechte Ebene nicht automatisch basierend auf dem Inhalt skaliert werden. Um die Hintergrund- und Höhenprobleme zu lösen, ist es notwendig, eine solche #mainbg-Ebene hinzuzufügen. Der Trick besteht darin, float: left; in der Ebene #mainbh zu definieren, da float der Ebene automatisch Breiten- und Höhenattribute zuweist. (Verstehen wir es vorerst so:) Schließlich definiert die Ebene #footer den unteren Teil. Der Schlüssel zu dieser Definition lautet: clear:both;, wodurch die schwebende Vererbung der Ebene #footer aufgehoben wird. Andernfalls wird #footer direkt neben #header angezeigt, anstatt unter #right. Nachdem die Hauptebenen definiert sind, ist das Layout fertig. Eine weitere Ergänzung: Sie können sehen, dass ich auch eine .text{margin:0px;padding:20px;} definiert habe. Der Zweck dieser Klasse besteht darin, einen 20px großen Leerraum um den Inhalt herum zu erstellen. Warum definieren Sie Ränder oder Innenabstände nicht direkt in #right? Da Mozilla und IE das CSS-Boxmodell unterschiedlich interpretieren, führt die direkte Definition von Rändern/Innenabständen zu Layoutverzerrungen in Mozilla. Normalerweise löse ich dieses Problem, indem ich innen eine weitere Schicht hinzufüge. |
<<: Docker installiert MySQL und löst das chinesische verstümmelte Problem
>>: MySQL-Serie Multi-Table Join Abfrage 92 und 99 Syntaxbeispiele ausführliches Tutorial
1. Doppelklicken Sie zunächst auf das VMware-Symb...
Inhaltsverzeichnis Vorwort analysieren Erste Rend...
Vorwort Als ich zuvor das Front-End studierte, be...
Verwenden von NULL in Vergleichsoperatoren mysql&...
MySQL sauber deinstallieren. Persönlich getestet,...
AngularJS-Loop-Objekteigenschaften zum Erreichen ...
Inhaltsverzeichnis Vorwort Vorbereitende Vorberei...
Dieser Artikel beschreibt das Beispiel eines gepl...
Wenn Sie Eingabe und Bild in dieselbe Zeile setzen...
yum oder rpm? Die Yum-Installationsmethode ist se...
Inhaltsverzeichnis Vor MySQL 5.6 Nach MySQL 5.6 Z...
Die Schritte zum Verpacken einer Python-Umgebung ...
Dies ist mein erstes Mal, dass ich das Element-Fr...
1: Wenn Sie das Tag <a> zum Verlinken auf ei...
Dieser Artikel ist eine selbstgeschriebene Nachah...