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

js verwendet Cookies, um die Seitenvorgänge des Benutzers zu speichern

Vorwort Während des Entwicklungsprozesses stoßen ...

So setzen Sie das Root-Passwort in CentOS7 zurück

Beim Verschieben von Bausteinen treten verschiede...

Detaillierte Erklärung des Mindestbreitenwerts von Inline-Blöcken in CSS

Vorwort Vor kurzem habe ich mir abends etwas Zeit...

So konfigurieren Sie inländische Quellen in CentOS8 yum/dnf

CentOS 8 hat das Installationsprogramm für Softwa...

Einige Schlussfolgerungen zur Gestaltung von Portal-Website-Fokusbildern

Fokusbilder sind eine Möglichkeit, Inhalte zu präs...

Einführung und Verwendungszusammenfassung der negativen Margenfunktion

Bereits in den CSS2-Empfehlungen von 1998 verschwa...

MySQL 8.0.15 Installations- und Konfigurations-Tutorial unter Win10

Was ich kürzlich gelernt habe, beinhaltet Kenntni...

Hinweise zu Fallstricken bei Vuex und Pinia in Vue3

Inhaltsverzeichnis einführen Installation und Ver...

Detaillierte Analyse von MySQL-Ausführungsplänen

Vorwort Als wir im vorherigen Interviewprozess na...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.24

In diesem Artikel finden Sie das Installations- u...