Maison  >  Article  >  interface Web  >  Comment implémenter une disposition à deux colonnes en CSS

Comment implémenter une disposition à deux colonnes en CSS

青灯夜游
青灯夜游original
2021-07-22 15:33:426017parcourir

Méthode : 1. Définissez "dislpay:inline-block" sur les deux éléments de la boîte ; 2. Définissez les deux éléments de la boîte sur float 3. L'élément gauche à largeur fixe est flottant et l'élément droit est défini sur margin-left ; et la valeur est supérieure à la largeur fixe. La largeur de l'élément large ; 4. Flottant + BFC 5. Positionnement absolu + marge gauche, etc.

Comment implémenter une disposition à deux colonnes en CSS

L'environnement d'exploitation de ce tutoriel : système Windows7, version CSS3&&HTML5, ordinateur Dell G3.

1. Qu'est-ce qu'une mise en page à deux colonnes ?

Il existe deux types de mises en page à deux colonnes, l'une à largeur fixe à gauche et adaptative à droite, et l'autre est adaptative dans les deux colonnes (c'est-à-dire c'est-à-dire que la largeur à gauche est déterminée par l'enfant (l'élément est déterminé et l'espace restant est rempli sur le côté droit). Les questions d'entretien CSS sont des questions de test courantes et constituent également des compétences qu'un ingénieur de développement front-end doit maîtriser. Les méthodes de mise en œuvre seront présentées ci-dessous.

2. Comment obtenir une largeur fixe à gauche et un réglage adaptatif à droite ?

1. Double inline-block

  Principe : les deux éléments sont définis avec dislpay:inline-block Afin d'éliminer l'influence des espaces html, la taille de la police de l'élément parent doit être. défini sur 0 et le côté droit doit être défini sur 0. La largeur de l'élément adaptatif est calculée à l'aide de la fonction calc. Si les hauteurs des deux éléments sont différentes, vous pouvez définir le réglage vertical-align:top pour les éléments.

Inconvénients : Puisque l'élément parent a défini la taille de police à 0, le texte de l'élément enfant ne sera pas affiché

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
           *{
               padding: 0;
               margin: 0;
           }
            .box{
                height: 600px;
                width: 100%;
                font-size:0;
            }
            .left{
                display: inline-block;
                width: 100px;
                height: 200px;
                background-color: red;
                vertical-align: top;
                 
            }
            .right{
                display: inline-block;
                width: calc(100% - 100px);
                height: 400px;
                background-color: blue;
                vertical-align: top;
            }
             
        </style>
    </head>
    <body>
        <div class="box">
            <div class="left">
                <span>1234</span>
            </div>
            <div class="right">
                <span>1234</span>
            </div>
        </div>
    </body>
</html>

2 Double float

Principe : Les deux éléments sont définis. pour flotter, et le côté droit est défini pour flotter Utilisez la fonction calc pour calculer la largeur de l'élément adaptatif

Inconvénients : L'élément parent doit effacer le flotteur

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            .box{
                height: 600px;
                width: 100%;
 
            }
            .left{
                float: left;
                width: 100px;
                height: 200px;
                background-color: red;
            }
            .right{
                float: left;
                width: calc(100% - 100px);
                height: 400px;
                background-color: blue;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="left">
                <span>
                    123adadadddddddddddddddddddddddddddddddddddddddd
                </span>
            </div>
            <div class="right"></div>
        </div>
    </body>
</html>

3. Flotteur + marge

Principe : L'élément de largeur fixe à gauche est flottant et l'élément adaptatif à droite est défini avec une marge. La valeur de -left peut être supérieure à la largeur de l'élément à largeur fixe

Inconvénients : L'élément parent doit effacer le float

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            .box{
                height: 600px;
                width: 100%;
 
            }
            .left{
                float: left;
                width: 100px;
                height: 200px;
                background-color: red;
            }
            .right{
                margin-left: 100px;
                height: 400px;
                background-color: blue;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="left">
                <p>1234</p>
            </div>
            <div class="right">
                <p>1234</p>
            </div>
        </div>
    </body>
</html>

4. Flottant + BFC

Principe : L'élément parent définit le débordement : caché, gauche L'élément à largeur fixe flotte et l'élément adaptatif droit définit le débordement : auto pour créer BFC

  Inconvénient : Si le contenu de l'élément de gauche dépasse la largeur définie, il chevauchera l'élément de droite

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            .box{
                height: 600px;
                width: 100%;
                overflow: hidden;
            }
            .left{
                float: left;
                width: 100px;
                height: 200px;
                background-color: red;
            }
            .right{
                overflow: auto;
                height: 400px;
                background-color: blue;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="left">111111111111111111111111</div>
            <div class="right">111111111111111111111111111111111111111111111</div>
        </div>
        <div class="right"></div>
    </body>
</html>

5.absolute+margin -left

Principe : Le parent L'élément parent est positionné relativement, l'élément gauche est positionné de manière absolue et l'élément adaptatif droit définit la valeur de marge gauche pour qu'elle soit supérieure à la largeur de l'élément à largeur fixe

Inconvénients : L'élément parent est défini sur un positionnement relatif

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            .box{
                height: 600px;
                width: 100%;
                position: relative;
            }
            .left{
                position: absolute;
                width: 100px;
                height: 200px;
                background-color: red;
            }
            .right{
                margin-left: 100px;
                height: 400px;
                background-color: blue;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="left"></div>
            <div class="right"></div>
        </div>
    </body>
</html>

6.flex layout

Principe : affichage des ensembles d'éléments parents : flex, ensembles d'éléments adaptatifs flex : 1

Inconvénients : Il existe des problèmes de compatibilité, non pris en charge sous IE10

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            *{
                padding: 0;
                margin: 0;
            }
            .box{
                height: 600px;
                width: 100%;
                display: flex;
            }
            .left{
                width: 100px;
                height: 200px;
                background-color: red;
            }
            .right{
                flex: 1;
                height: 400px;
                background-color: blue;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="left"></div>
            <div class="right"></div>
        </div>
    </body>
</html>

3 . Les éléments sur les côtés gauche et droit sont tous deux adaptatifs

À proprement parler, cela ne signifie pas que les deux éléments sont adaptatifs, c'est juste que la largeur fixe ci-dessus est modifiée pour être étirée par les éléments enfants

1. . Flottant + BFC

Le principe est le même que ci-dessus, sauf que la largeur de l'élément gauche n'est pas définie et est étirée par les éléments enfants

2. element display: table, et l'élément de gauche est entouré d'un div autour de l'extérieur. Ce div est défini sur display: table-cell, width: 0,1% (largeur minimale garantie), margin-right est défini à l'intérieur de l'élément de gauche et display:table-cell est défini sur l’élément de droite. Inconvénients : IE7 et versions antérieures ne sont pas pris en charge. Lorsque display:table est utilisé, le remplissage n'est pas valide, l'attribut line-height de l'élément parent n'est pas valide et lorsque display:table-cell est utilisé, la marge n'est pas valide.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            .parent{
                display: table;
                width: 100%;
                 
            }
            .box{
                display: table-cell;
                width: 0.1%;
            }
            .left{
                margin-right: 20px;
                background-color: red;
                height: 200px;
            }   
            .right{
                display: table-cell;
                background-color: blue;
                height: 300px;
            }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="box">
                <div class="left">126545453dddddddd453453453</div>
            </div>
            <div class="right">12121</div>
        </div>
    </body>
</html>

3.flex layout

                      Le principe et les inconvénients d'Upover sont les mêmes que ceux des mises en page flexibles ci-dessus

4. 1fr; (Cet attribut définit la largeur de la colonne, et le mot-clé auto indique que le navigateur détermine la longueur. fr est une unité de taille relative, indiquant que l'espace restant est divisé de manière égale) grid-gap : 20px (interligne)

  Inconvénients : La compatibilité est trop mauvaise, IE11 n'est pas supporté, seul Google 57 ou supérieur peut être utilisé
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            .parent{
                display:grid;
                grid-template-columns:auto 1fr;
                grid-gap:20px
            } 
            .left{
                background-color: red;
                height: 200px;
            }
            .right{
                height:300px;
                background-color: blue;
            }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="left">1111111111111111111111111</div>
            <div class="right"></div>
        </div>
    </body>
</html>

(Partage vidéo d'apprentissage :

Tutoriel vidéo CSS)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn