1. Was ist ein zweispaltiges Layout?Es gibt zwei Arten von zweispaltigen Layouts: Eines hat links eine feste Breite und rechts eine adaptive Breite, und bei dem anderen sind beide Spalten adaptiv (d. h. die Breite links wird durch die untergeordneten Elemente bestimmt und der verbleibende Platz wird rechts ausgefüllt). Dies ist eine häufig gestellte Frage in CSS-Interviews und eine Fähigkeit, die ein Front-End-Entwicklungsingenieur beherrschen muss. Die Implementierungsmethoden werden im Folgenden vorgestellt. 2. Wie erreicht man eine feste Breite links und eine adaptive Breite rechts?1. Doppelter Inline-BlockPrinzip: Beide Elemente werden auf dislpay:inline-block gesetzt. Um den Einfluss von HTML-Leerzeichen auszuschließen, wird die Schriftgröße des übergeordneten Elements auf 0 gesetzt und die Breite des adaptiven Elements rechts mit der Funktion calc berechnet. Wenn die Höhen zweier Elemente unterschiedlich sind, können Sie sie mit „vertical-align: top“ anpassen. Nachteil: Da die Schriftgröße des übergeordneten Elements auf 0 gesetzt ist, wird der Text im untergeordneten Element nicht angezeigt <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <Titel></Titel> <Stil> *{ Polsterung: 0; Rand: 0; } .Kasten{ Höhe: 600px; Breite: 100 %; Schriftgröße: 0; } .links{ Anzeige: Inline-Block; Breite: 100px; Höhe: 200px; Hintergrundfarbe: rot; vertikale Ausrichtung: oben; } .Rechts{ Anzeige: Inline-Block; Breite: berechnet (100 % – 100 Pixel); Höhe: 400px; Hintergrundfarbe: blau; vertikale Ausrichtung: oben; } </Stil> </Kopf> <Text> <div> <div> <span>1234</span> </div> <div> <span>1234</span> </div> </div> </body> </html> 2. Doppeltes SchwebenPrinzip: Zwei Elemente werden auf Float gesetzt und die Breite des adaptiven Elements rechts wird mit der Funktion calc berechnet. Nachteil: Übergeordnetes Element muss Float löschen <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <Titel></Titel> <Stil> *{ Polsterung: 0; Rand: 0; } .Kasten{ Höhe: 600px; Breite: 100 %; } .links{ schweben: links; Breite: 100px; Höhe: 200px; Hintergrundfarbe: rot; } .Rechts{ schweben: links; Breite: berechnet (100 % – 100 Pixel); Höhe: 400px; Hintergrundfarbe: blau; } </Stil> </Kopf> <Text> <div> <div> <span> 123adadadddddddddddddddddddddddddddddddddddd </span> </div> <div></div> </div> </body> </html> Prinzip: Das Element mit fester Breite auf der linken Seite schwebt, und das adaptive Element auf der rechten Seite setzt den linken Randwert größer als die Breite des Elements mit fester Breite. Nachteil: Übergeordnetes Element muss Float löschen <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <Titel></Titel> <Stil> *{ Polsterung: 0; Rand: 0; } .Kasten{ Höhe: 600px; Breite: 100 %; } .links{ schweben: links; Breite: 100px; Höhe: 200px; Hintergrundfarbe: rot; } .Rechts{ Rand links: 100px; Höhe: 400px; Hintergrundfarbe: blau; } </Stil> </Kopf> <Text> <div> <div> <p>1234</p> </div> <div> <p>1234</p> </div> </div> </body> </html> 4. Schwimmend + BFCPrinzip: Legen Sie overflow:hidden für das übergeordnete Element fest, lassen Sie das Element mit fester Breite links schweben und legen Sie overflow:auto für das adaptive Element rechts fest, um einen BFC zu erstellen. Nachteil: Wenn der Inhalt des linken Elements die eingestellte Breite überschreitet, überlappt er das rechte Element <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <Titel></Titel> <Stil> *{ Polsterung: 0; Rand: 0; } .Kasten{ Höhe: 600px; Breite: 100 %; Überlauf: versteckt; } .links{ schweben: links; Breite: 100px; Höhe: 200px; Hintergrundfarbe: rot; } .Rechts{ Überlauf: automatisch; Höhe: 400px; Hintergrundfarbe: blau; } </Stil> </Kopf> <Text> <div> <div>11111111111111111111111</div> <div>111111111111111111111111111111111111111111</div> </div> <div></div> </body> </html> 5.absolut+Rand-linksPrinzip: Das übergeordnete Element ist relativ positioniert, das linke Element ist absolut positioniert und der linke Randwert des adaptiven Elements rechts ist größer als die Breite des Elements mit fester Breite. Nachteil: Das übergeordnete Element ist auf relative Positionierung eingestellt <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <Titel></Titel> <Stil> *{ Polsterung: 0; Rand: 0; } .Kasten{ Höhe: 600px; Breite: 100 %; Position: relativ; } .links{ Position: absolut; Breite: 100px; Höhe: 200px; Hintergrundfarbe: rot; } .Rechts{ Rand links: 100px; Höhe: 400px; Hintergrundfarbe: blau; } </Stil> </Kopf> <Text> <div> <div></div> <div></div> </div> </body> </html> 6.Flexibles LayoutPrinzip: Das übergeordnete Element setzt display: flex und das adaptive Element setzt flex: 1 Nachteile: Es gibt Kompatibilitätsprobleme und IE10 und darunter unterstützen nicht <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <Titel></Titel> <Stil> *{ Polsterung: 0; Rand: 0; } .Kasten{ Höhe: 600px; Breite: 100 %; Anzeige: Flex; } .links{ Breite: 100px; Höhe: 200px; Hintergrundfarbe: rot; } .Rechts{ biegen: 1; Höhe: 400px; Hintergrundfarbe: blau; } </Stil> </Kopf> <Text> <div> <div></div> <div></div> </div> </body> </html> 3. Elemente auf beiden Seiten sind adaptivGenau genommen sind die beiden Elemente nicht adaptiv, allerdings wird die oben festgelegte Breite so verändert, dass sie durch das Kindelement erweitert werden kann. 1. Schwimmend + BFCDas Prinzip ist das gleiche wie oben, nur dass die Breite des linken Elements nicht festgelegt ist und durch die Kindelemente erweitert wird. 2. TabellenlayoutPrinzip: Das übergeordnete Element ist display:table, und das linke Element ist mit einem div umschlossen. Das div ist auf display:table-cell und width:0.1% eingestellt (um die Mindestbreite sicherzustellen). Margin-right ist innerhalb des linken Elements eingestellt und display:table-cell ist auf dem rechten Element eingestellt. Nachteile: IE7 und darunter unterstützen dies nicht. Bei Verwendung von display:table ist das Padding ungültig, die Eigenschaft line-height des übergeordneten Elements ist ungültig und bei Verwendung von display:table-cell ist margin ungültig. <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <Titel></Titel> <Stil> .Elternteil{ Anzeige: Tabelle; Breite: 100 %; } .Kasten{ Anzeige: Tabellenzelle; Breite: 0,1 %; } .links{ Rand rechts: 20px; Hintergrundfarbe: rot; Höhe: 200px; } .Rechts{ Anzeige: Tabellenzelle; Hintergrundfarbe: blau; Höhe: 300px; } </Stil> </Kopf> <Text> <div> <div> <div>126545453dddddddd453453453</div> </div> <div>12121</div> </div> </body> </html> 3.Flexibles LayoutDie Prinzipien und Mängel sind dieselben wie beim oben genannten Flex-Layout. 4. RasterlayoutPrinzip: Das übergeordnete Element setzt display: grid, grid-template-columns: auto 1fr; (dieses Attribut definiert die Spaltenbreite, das Schlüsselwort auto bedeutet, dass der Browser die Länge selbst bestimmt. fr ist eine relative Größeneinheit, die angibt, dass der verbleibende Platz gleichmäßig aufgeteilt wird) grid-gap: 20px (Zeilenabstand) Nachteile: schlechte Kompatibilität, IE11 unterstützt es nicht, nur Google 57 und höher können es unterstützen <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <Titel></Titel> <Stil> .Elternteil{ Anzeige: Raster; Rastervorlagenspalten: auto 1fr; Gitterabstand: 20px } .links{ Hintergrundfarbe: rot; Höhe: 200px; } .Rechts{ Höhe: 300px; Hintergrundfarbe: blau; } </Stil> </Kopf> <Text> <div> <div>111111111111111111111111</div> <div></div> </div> </body> </html> Damit ist dieser Artikel über N Möglichkeiten zum Erstellen eines zweispaltigen Layouts mit CSS abgeschlossen. Weitere relevante Inhalte zum zweispaltigen CSS-Layout finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! |
<<: HTML + CSS + JS realisiert den Scroll-Gradienteneffekt der Navigationsleiste
>>: So spielen Sie lokale Mediendateien (Video und Audio) mit HTML und JavaScript ab
1 Einleitung Redis ist eine leistungsstarke, auf ...
Wenn Sie den Eindruck haben, dass ein Problem mit...
Wir alle wissen, dass die zugrunde liegende Daten...
1. Verwenden Sie den folgenden Befehl, um das SSH...
Inhaltsverzeichnis 1. for-Schleife 2. Doppelte fo...
1. Installationsanweisungen Im Vergleich zur loka...
Verwandte Artikel: Anfänger lernen einige HTML-Ta...
Im vorherigen Artikel haben Sie Docker Desktop in...
Probieren wir hier den Reverse-Proxy von Nginx au...
Zusammenfassung HTML: Element plus V-Umhang CSS: ...
Inhaltsverzeichnis 1. Virtueller Host 1.1 Virtuel...
In diesem Artikel wird der spezifische Code für J...
Inhaltsverzeichnis Vorwort analysieren Daten insg...
Manchmal müssen Sie beim Anfordern bestimmter Sch...
Ich bin in letzter Zeit auf viele Zentrierungspro...