Maison  >  Questions et réponses  >  le corps du texte

Les éléments Flexbox déborderont du conteneur lorsque la fenêtre est trop courte et la barre latérale ne pourra pas maintenir l'alignement inférieur.

J'essaie d'utiliser une mise en page flexible simple composée d'un en-tête, d'une grille de contenu 2x2, puis d'une barre latérale. Lorsque la largeur de la fenêtre est inférieure à une certaine taille, la barre latérale doit se déplacer vers le bas de l'écran.

Actuellement, une fois cette taille atteinte, si la hauteur de la fenêtre est trop petite, le contenu de la grille se chevauchera au-dessus de l'en-tête, mais je ne sais pas pourquoi cela se produit. L'écran ne doit avoir que la taille de la hauteur de la vue, mais le déplacement de la barre latérale l'agrandit.

@media (max-width:960px) {
    .main-screen {
      height: 100vh;
      display: flex;
      flex-direction: column-reverse;
      .toolbar {
        padding: 10px;
        height: 90px;
        width: auto;
      }
      .body {
        display: flex;
        .grid {
          flex: 1;
          max-height: 36vh;
        }
        .row1, .row2 {
          flex: 1;
          height: 10%;
          max-width: 100%;
        }
      }
    }
}

Voici le code complet dans jsfiddle

(Redimensionnez simplement la fenêtre pour voir comment la grille se chevauche au-dessus du titre)

P粉226642568P粉226642568186 Il y a quelques jours382

répondre à tous(1)je répondrai

  • P粉652495194

    P粉6524951942024-03-31 12:37:11

    Bonjour ^^ J'ai construit ça pour toi. c'est ce que tu veux?

    *{margin: 0px; padding: 0px;}
    html{height: 100%; width: 100%;}
    body{background-color: lightblue;}
    
    /* Header, Main Content, Nav/Sidebar */
    header{background-color: lightgray; height: 50px;}
    .Main{background-color: darkblue; display: grid; grid-template-columns: 1fr 80px;}
    nav{background-color: pink; width: 100%; outline: 5px solid white;}
    
    /* Rows */
    .Main .Row1, .Main .Row2{display: grid; grid-template-columns: 50% 50%; height: 120px;}
    /* Row 1 */
    .Main .Row1 .Div1{margin: 5px; background-color: lightgreen;}
    .Main .Row1 .Div2{margin: 5px; background-color: forestgreen;}
    /* Row 2 */
    .Main .Row2 .Div3{margin: 5px; background-color: forestgreen;}
    .Main .Row2 .Div4{margin: 5px; background-color: lightgreen;}
    
    /* Smaller Size */
    @media (max-width:960px) {
    .Main{background-color: blue; grid-template-columns: auto;}
    nav{height: 50px;}
    }
    <body>
    <header>
        <h1>Header</h1>
    </header>
    
    <section class="Main">
    <div>
        <div class="Row1">
            <div class="Div1">Div1</div>
            <div class="Div2">Div2</div>
        </div>
        <div class="Row2">
            <div class="Div3">Div3</div>
            <div class="Div4">Div4</div>
        </div>
    </div>
    
    <nav>
        <h1>Sidebar</h1>
    </nav>
    </section>
    </body>

    répondre
    0
  • Annulerrépondre