Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung des dreispaltigen CSS-Layouts

Detaillierte Erläuterung des dreispaltigen CSS-Layouts

php中世界最好的语言
php中世界最好的语言Original
2018-03-20 16:34:521369Durchsuche

Dieses Mal werde ich Ihnen das dreispaltige Layout von CSS ausführlich erklären. Was sind die Vorsichtsmaßnahmen für das dreispaltige Layout von CSS? .

Dieser Artikel stellt das klassische CSS-Layout mit drei Spalten vor. Teilen Sie es mit allen und machen Sie sich eine Notiz:

Dreispaltiges Layout , ist beidseitig fest und in der Mitte adaptiv. Dreispaltiges Layout ist in der Entwicklung sehr verbreitet

1. Float-Layout

Das einfachste dreispaltige Layout ist die Verwendung von Float als Layout. Zeichnen Sie zunächst die linke und rechte Spalte:

    <style>
      .left {
        float: left;
        width: 100px;
        height: 200px;
        background-color: red;
      }
    
      .right {
        float: right;
        width: 100px;
        height: 200px;
        background-color: yellow;
      }
    </style>
      
      <p class="container">
        <p class="left"></p>
        <p class="right"></p>
        <p class="main"></p>
      </p>
Zu diesem Zeitpunkt können Sie die Verteilung der linken und rechten Spalte ermitteln:

Als Nächstes Schauen wir uns an, wie man mit der mittleren Spalte umgeht. Wir wissen, dass Float-Elemente aus dem Dokumentenfluss ausbrechen und andere Boxen dieses Element ignorieren. (Aber der Text in anderen Feldern macht immer noch Platz für dieses Element und umgibt es.) Zu diesem Zeitpunkt müssen Sie also nur ein normales p in den Container-Container einfügen, das links und rechts ignoriert und den gesamten Container ausfüllt. Nur zusätzlich kann der Rand links und rechts aus dem Raum herausfließen:

   <style>
      .left {
        float: left;
        width: 100px;
        height: 200px;
        background-color: red;
      }
    
      .right {
        float: right;
        width: 100px;
        height: 200px;
        background-color: yellow;
      }
    
      .main {
        background-color: green;
        height: 200px;
        margin-left: 120px;
        margin-right: 120px;
      }
    
      .container {
        border: 1px solid black;
      }
    
      <p class="container">
      <p class="left"></p>
      <p class="right"></p>
      <p class="main"></p>
      </p>

Vorteile: Einfach

Nachteile: Der Mittelteil wird zuletzt geladen, was Auswirkungen hat, wenn viel Inhalt vorhanden ist. Erfahrung

2. BFC-Regeln (Blockformatierungskontext) legen fest, dass sich BFC nicht mit ihnen überschneidet schwebende Elemente. Wenn Sie also das Hauptelement als BFC-Element festlegen:

3. Holy Grail Layout

    <style>
      .left {
        float: left;
        width: 100px;
        height: 200px;
        background-color: red;
      }
    
      .right {
        float: right;
        width: 100px;
        height: 200px;
        background-color: yellow;
      }
    
      .main {
        background-color: green;
        height: 200px;
        overflow: hidden;
      }
    
      <p class="container">
        <p class="left"></p>
        <p class="right"></p>
        <p class="main"></p>
      </p>

Der Kern des Holy Grail Layouts ist die linke, mittlere und rechte Spalten Sie werden alle durch Float verschoben und dann durch negative Marge angepasst. Der erste Schritt besteht darin, einen Blick auf das Grundlayout zu werfen

    <style>
        .left {
            float: left;
            width: 100px;
            height: 200px;
            background-color: red;
        }
        .right {
            float: left;
            width: 100px;
            height: 200px;
            background-color: yellow;
        }
        .main {
            float: left;
            width: 100%;
            height: 200px;
            background-color: blue;
        }
    </style>
    <body>
        <p class="container">
            <p class="main"></p>
            <p class="left"></p>
            <p class="right"></p>
        </p>
    </body>
Der Effekt, den Sie zu diesem Zeitpunkt sehen, ist: die linke und rechte Spalte werden gequetscht Zweite Zeile. Dies liegt daran, dass die Breite von main 100 % beträgt. Als nächstes fügen wir die linke, mittlere und rechte Spalte in einer Zeile ein, indem wir die Ränder der linken und rechten Spalte anpassen:

Der zweite Schritt besteht darin, den linken Rand von links auf -100 % festzulegen. . Diese linke Spalte wird an den Anfang der ersten Zeile verschoben. Setzen Sie dann den linken Rand von rechts auf den negativen Wert seiner Breite: -100px, und die rechte Spalte wird ebenfalls in die gleiche Zeile wie die linke und mittlere Spalte verschoben:

        .left {
            float: left;
            width: 100px;
            height: 200px;
            margin-left: -100%;
            background-color: red;
        }
        .right {
            float: left;
            width: 100px;
            height: 200px;
            margin-left: -100px;
            background-color: yellow;
        }

Allerdings ist es noch nicht fertig. Versuchen wir, Text zum Haupttext hinzuzufügen:

    <body>
        <p class="container">
            <p class="main">fjlskdjflkasjdfljasdljlsjdljsdjflksadj</p>
            <p class="left"></p>
            <p class="right"></p>
        </p>
    </body>
Sie können sehen, dass der Text unterdrückt ist und wir ihn lösen müssen dieses Problem als nächstes.

Der dritte Schritt besteht darin, dem Container eine Polsterung zu geben. Die Polsterung sollte genau der Breite der linken und rechten Spalte entsprechen:

Die Ergebnisse, die Sie zu diesem Zeitpunkt sehen, sind Die linke, mittlere und rechte Spalte sind insgesamt verkleinert, der Text wird jedoch weiterhin unterdrückt.

        .container {
            padding-left: 100px;
            padding-right: 100px;
        }

Der vierte Schritt besteht darin, der linken und rechten Spalte ein relatives Layout hinzuzufügen und sie dann durch Festlegen der linken und rechten Werte nach außen zu verschieben:

So weit sind Sie fertig:

        .left {
            float: left;
            width: 100px;
            height: 200px;
            margin-left: -100%;
            position: relative;
            left: -100px;
            background-color: red;
        }
        .right {
            float: left;
            width: 100px;
            height: 200px;
            margin-left: -100px;
            position: relative;
            right: -100px;
            background-color: yellow;
        }

4. Doppelter Nurflügler-Layout

Die ersten beiden Schritte des Doubles Das Flying-Wing-Layout ist das gleiche wie das Holy Grail-Layout, aber die Lösung für das Problem, dass Teilinhalte in der mittleren Spalte blockiert werden, ist anders: Da der Inhalt im Hauptteil blockiert wird, fügen Sie einen weiteren Inhalt hinzu Wenn Sie innerhalb von „main“ den Rand festlegen, um eine Okklusion zu vermeiden, kann das Problem gelöst werden:

Das Einzige, was zu beachten ist, ist, dass Sie nach „main“ ein Element hinzufügen müssen, um den Float zu löschen.

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        .main {
        float: left;
        width: 100%;
        }
        .content {
        height: 200px;
        margin-left: 110px;
        margin-right: 220px;
        background-color: green;
        }
        
        .main::after {
        display: block;
        content: '';
        font-size: 0;
        height: 0;
        clear: both;
        zoom: 1;
        }
    .left {
        float: left;
        height: 200px;
        width: 100px;
        margin-left: -100%;
        background-color: red;
    }
    .right {
        width: 200px;
        height: 200px;
        float: left;
        margin-left: -200px;
        background-color: blue;
    }   
    </style>
</head>
<body>
    <p class="main">
        <p class="content"></p>
    </p>
    <p class="left"></p>
    <p class="right"></p>
</body>
</html>
5. Flex-Layout

Flex-Layout ist auch sehr einfach, um ein dreispaltiges Layout zu implementieren, aber Sie müssen darauf achten Browserkompatibilität:

Es gibt ein paar Punkte zu beachten:

  1. main要首先加载就必须写在第一位,但因为left需要显示在最左侧,所以需要设置left的order为-1

  2. flex属性的完整写法是:flex: flex-grow flex-shrink flex-basis 。这也是flex实现三栏布局的核心,main设置flex-grow为1,说明多余空间全部给main,而空间不够时,仅缩小left right部分,同时因为指定了left right部分的flex-basis,所以指定了两者的宽度,保证其显示效果

6. 绝对定位

绝对定位的方式也比较简单,而且可以优先加载主体:

        <style type="text/css">
            .container {
            }
            .middle {
                position: absolute;
                left: 200px;
                right: 200px;
                height: 300px;
                background-color: yellow;
            }
            .left {
                position: absolute;
                left: 0px;
                width: 200px;
                height: 300px;
                background-color: red;
            }
            .right {
                position: absolute;
                right: 0px;
                width: 200px;
                background-color: green;
                height: 300px;
            }
        </style>
    </head>
    <body>
        <p class="container">
            <p class="middle">fsdfjksdjflkasjdkfjsdkljfklsjadfkljaksdljfskljffjksldfjldsfdskjflsdjfkljsdlfjsldjfklsjdkflj</p>
            <p class="left"></p>
            <p class="right"></p>
        </p>
    </body>

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

CSS怪异盒模型和标准盒模型如何使用

CSS实现手风琴布局

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des dreispaltigen CSS-Layouts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn