Detaillierte Erläuterung von 5 Lösungen für das adaptive CSS-Layout für Fortgeschrittene

Detaillierte Erläuterung von 5 Lösungen für das adaptive CSS-Layout für Fortgeschrittene

Vorwort

Beim Erstellen einer Seite stoßen wir häufig auf Inhalte zum Seitenlayout und werden in Interviews häufig danach gefragt. Deshalb werde ich heute die Inhalte zum Seitenlayout zusammenfassen.

Frage: Wie implementiere ich ein dreispaltiges Layout (feste Höhe, Links-Mitte-Rechts-Struktur)

Vorausgesetzt, die Höhe ist bekannt, schreiben Sie bitte ein dreispaltiges Layout, wobei die Breite links und rechts jeweils 300 Pixel beträgt und die Mitte adaptiv ist.

Erfahrene Leute finden es nach der Lektüre des obigen Themas möglicherweise sehr einfach. Denken Sie sorgfältig darüber nach: Wenn wir es aufschreiben würden, wie viele Lösungen könnten wir finden? Im Allgemeinen fallen einem zwei Typen ein: Float und Positionspositionierung. Tatsächlich gibt es zusätzlich zu diesen beiden noch drei weitere Typen, die geschrieben werden können. Lassen Sie mich sie einzeln vorstellen:

Lösung 1 (Float)

<Abschnittsklasse = "Layout Float">
         <Stil>
             .layout.float .links-rechts-mitte{
                 Höhe: 100px;
             }
             .layout.float .links{
                 schweben: links;
                 Breite: 300px;
                 Hintergrundfarbe: rot;
             }

             .layout.float .rechts{
                 schweben: rechts;
                 Breite: 300px;
                 Hintergrundfarbe: blau;
             }

             .layout.float .center{
                 Hintergrundfarbe: gelb;
             }
         </Stil>
         <Artikelklasse="links-rechts-mitte">
             <div Klasse="links"></div>
             <div Klasse="rechts"></div>
             <div class="center">Ich bin das adaptive Element in der Mitte – schwebend</div>
         </Artikel>
     </Abschnitt>

  • Prinzip: Da die beiden Divs links und rechts aus dem Dokumentfluss herausschweben, verschiebt sich die Mitte nach oben, wodurch ein dreispaltiger Layouteffekt entsteht (vorausgesetzt, die Höhen sind gleich).
  • Vorteile: Hohe Kompatibilität
  • Nachteile: Float muss gelöscht werden, um eine Beeinträchtigung anderer Elemente zu verhindern
  • Wenn die Höhe nicht festgelegt ist, wird der Inhalt in der Mitte gestreckt, die linke und rechte Seite werden jedoch nicht gemeinsam gestreckt.

Lösung 2 (absolute Positionierung)

<Abschnitt Klasse="layout absolut">
         <Stil>
             .layout.absolute .links-mitte-rechts div{
                 Position: absolut;
                 Höhe: 100px;
             }

             .layout.absolute .left{
                 links: 0;
                 Breite: 300px;
                 Hintergrundfarbe: rot;
             }

             .layout.absolute .center{
                 links: 300px;
                 rechts: 300px;
                 Hintergrundfarbe: gelb;
             }

             .layout.absolute .right{
                 rechts: 0;
                 Breite: 300px;
                 Hintergrundfarbe: blau;
             }
         </Stil>
         <Artikelklasse="links-mitte-rechts">
            <div Klasse="links"></div>
            <div Klasse="Mitte">
                Ich bin das adaptive Element in der Mitte - absolute Positionierung</div>
            <div Klasse="rechts"></div>
         </Artikel>
     </Abschnitt>
  • Prinzip: Verwenden Sie absolute Positionierung und Breite, um die Divs links und rechts zu fixieren. Die Breite des mittleren Divs hat einen adaptiven Effekt.
  • Vorteile: Schnell
  • Nachteile: Wenn das übergeordnete Element außerhalb des Dokumentflusses liegt, liegt das untergeordnete Element definitiv außerhalb des Dokumentflusses. Daher gibt es nicht viele Szenarien, in denen es verwendet werden kann.
  • Wenn die Höhe des mittleren Elements zunimmt, nimmt die Höhe der Elemente auf beiden Seiten nicht zu, sodass nur das mittlere Element erweitert wird

Lösung 3 (Flex-Layout)

<Abschnitt Klasse="Layout Flex">
         <Stil>
             .layout.flex .links-mitte-rechts{
                 Anzeige: Flex;
                 Höhe: 100px;
             }

             .layout.flex .left{
                 Breite: 300px;
                 Hintergrundfarbe: rot;
             }

             .layout.flex .center{
                 biegen: 1;
                 Hintergrundfarbe: gelb;
             }

             .layout.flex .right{
                 Breite: 300px;
                 Hintergrundfarbe: blau;
             }
         </Stil>
         <Artikelklasse="links-mitte-rechts">
            <div Klasse="links"></div>
            <div Klasse="Mitte">
                Ich bin das adaptive Element in der Mitte - Flex-Layout</div>
            <div Klasse="rechts"></div>
         </Artikel>
     </Abschnitt>
  • Prinzip: Stellen Sie das übergeordnete Element auf Flex-Layout ein und setzen Sie dann den Flex des mittleren Elements auf 1, um den adaptiven Effekt zu erzielen
  • Vorteile: Wird häufig in der tatsächlichen Entwicklung verwendet
  • Nachteile: IE8 und ältere Browser unterstützen nicht
  • Wenn die Höhe nicht festgelegt ist, wird die Höhe des Inhalts in der Mitte erweitert und die beiden Seiten werden ebenfalls entsprechend erweitert.

Lösung 4 (Tabellenlayout)

   <Abschnitt Klasse="Layouttabelle">
        <Stil>
            .layout.tabelle .links-mitte-rechts{
                Anzeige: Tabelle;
                Höhe: 100px;
                Breite: 100 %;
            }

            .layout.tabelle .links{
                Anzeige: Tabellenzelle;
                Breite: 300px;
                Hintergrundfarbe: rot;
            }

            .layout.tabelle .center{
                Anzeige: Tabellenzelle;
                Hintergrundfarbe: gelb;
            }

            .layout.tabelle .rechts{
                Anzeige: Tabellenzelle;
                Breite: 300px;
                Hintergrundfarbe: blau;
            }
        </Stil>
        <Artikelklasse="links-mitte-rechts">
            <div Klasse="links"></div>
            <div Klasse="Mitte">
                Ich bin das adaptive Element in der Mitte - Tisch
            </div>
            <div Klasse="rechts"></div>
        </Artikel>
    </Abschnitt>
  • Prinzip: Stellen Sie das übergeordnete Element auf Tabellenlayout ein, dann ist jedes untergeordnete Element eine Tabellenzelle, legen Sie eine feste Breite für das linke und rechte Raster fest, und das mittlere Raster kann einen adaptiven Effekt erzielen
  • Vorteile: gute Kompatibilität, kann als Ersatz für Flex-Layout in IE8 und darunter verwendet werden
  • Nachteile: Einschränkungen
  • Wenn die Höhe nicht festgelegt ist, werden beim Strecken der Mitte auch die linke und rechte Seite gestreckt, ähnlich wie beim Biegen

Option 5 (Rasterlayout)

<Abschnitt Klasse="Layoutraster">
        <Stil>
            .layout.grid .links-mitte-rechts{
                Anzeige: Raster;
                Breite: 100 %;
                grid-template-rows: 100px;/*Jedes Raster ist 100px hoch*/
                grid-template-columns: 300px auto 300px;/*Das linke und das rechte Raster sind beide 300px groß und das mittlere ist adaptiv*/
            }
            
            .layout.raster .links{
                Hintergrundfarbe: rot;
            }

            .layout.raster .center{
                Hintergrundfarbe: gelb;
            }

            .layout.grid .rechts{
                Hintergrundfarbe: blau;
            }
        </Stil>
        <Artikelklasse="links-mitte-rechts">
            <div Klasse="links"></div>
            <div Klasse="Mitte">
                Ich bin das adaptive Element in der Mitte - Rasterlayout</div>
            <div Klasse="rechts"></div>
        </Artikel>
    </Abschnitt>
  • Prinzip: Legen Sie für das übergeordnete Element ein Rasterlayout fest, geben Sie dann die Höhe und Breite jedes Rasters an und legen Sie anschließend die Farbe jedes Rasters separat fest.
  • Vorteile: relativ neue Technologie, bequem
  • Nachteile: Die Kompatibilität ist nicht sehr gut
  • Wenn die Höhe nicht festgelegt ist, wird das Hinzufügen von Text zum mittleren Element nicht erweitert

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

<<:  Vue.js implementiert ein einfaches Faltpanel

>>:  Detaillierte Erklärung der MySQL-Gruppierung durch Optimierung

Artikel empfehlen

Zusammenfassung der 7 Protokolltypen in MySQL

In MySQL gibt es folgende Protokolldateien: 1: Pr...

Erweiterte Erklärung der Javascript-Funktionen

Inhaltsverzeichnis Funktionsdefinitionsmethode Fu...

vue+element-ui implementiert die Kopfnavigationsleistenkomponente

In diesem Artikel wird der spezifische Code von v...

MySQL-Beispielcode für die Addition und Subtraktion von Datum und Uhrzeit

Inhaltsverzeichnis 1.MySQL addiert oder subtrahie...

Mounten Sie die Festplatte in einem Verzeichnis unter Ubuntu 18.04

Einführung In diesem Artikel wird beschrieben, wi...

Docker-Compose-Installation DB2-Datenbankbetrieb

Es ist mühsam, die db2-Datenbank direkt auf dem H...

So ändern Sie die Kodierung in MySQL Version 5.7 unter Windows auf UTF-8

Vorwort Ich habe gerade angefangen, MySQL zu lern...

Was sind die Dateiattribute von crw, brw, lrw usw. in Linux?

Was ist eine Datei? Eigentlich sind alle Dateien ...

So verwenden Sie CSS-Medienabfragen mit einem geringeren Seitenverhältnis

CSS-Medienabfragen haben ein sehr praktisches Sei...

Analyse und Beschreibung von Netzwerkkonfigurationsdateien unter Ubuntu-System

Ich bin heute auf ein seltsames Netzwerkproblem g...

Detaillierte Erklärung des JS-Browser-Ereignismodells

Inhaltsverzeichnis Was ist ein Ereignis Ein einfa...

Zusammenfassung zweier Methoden zum Implementieren der Vue-Druckfunktion

Methode 1: Installieren Sie das Plugin über npm 1...

Interviewer stellen häufig Fragen zum Lebenszyklus von React

React-Lebenszyklus Zwei Bilder zum besseren Verst...