Partage
  • Partager sur Facebook
  • Partager sur Twitter

Flexbox : Occuper tout l'espace horizontal

Sujet résolu
    10 octobre 2017 à 23:02:29

    Bonjour,

    J'essaye de garder le footer en bas de la page quoiqu'il advienne via la balise "position: abolute" et "bottom: 0", cependant et malgré l'ajout de l'option "flex: 1", mon footer n'occupe plus tout l'espace horizontal.

    site.html

    <!DOCTYPE html>
    
    <html>
    
      <head>
        <meta charset="utf-8">
        <link href="design.css" rel="stylesheet" type="text/css">
        <title>Test</title>
      </head>
    
      <body>
        <div class="main">
          <div class="first_section">
            <div class="main_header">
              <header>
                <h1>HEADER</h1>
              </header>
            </div>
    
            <div class="navBar">
              <nav>
                <ul>
                  <li><a href="#">WELCOME</a></li>
                  <li><a href="#">FIRST</a></li>
                  <li><a href="#">SECOND</a></li>
                  <li><a href="#">ABOUT</a></li>
                </ul>
              </nav>
            </div>
          </div>
    
          <article>
            <h1>ARTICLE</h1>
          </article>
    
          <aside>
          </aside>
    
          <div class="footer">
            <footer>
              <h1>FOOTER</h1>
            </footer>
          </div>
        </div>
      </body>
    
    </html>
    



    design.css

    body{
      background-color: white;
      margin-left: 80px;
      margin-right: 80px;
    }
    
    .main{
      display: flex;
      flex-direction: column;
      flex-wrap: wrap;
      font-family: sans-serif;
    }
    
    .first_section{
      display: flex;
      flex-direction: row;
    }
    
    .main_header{
      color: white;
      background-color: blue;
    }
    
    .navBar{
      flex: 1;
      background-color: black;
    }
    
    .navBar ul{
      display: inline-flex;
      font-size: 24px;
    }
    
    .navBar ul li{
      text-decoration: none;
      list-style: none;
      margin-left: 10px;
      margin-right: 10px;
    }
    
    .navBar ul li a{
      text-decoration: none;
      padding: 10px;
      color: white;
    }
    
    .navBar ul li a:hover {
      color: black;
      background-color: white;
    }
    .footer{ flex: 1; color: white; background-color: black; position: absolute; bottom: 0; }

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter

    Développeur Web autodidacte HTML5/CSS3/JS + C# (ASP.NET Core) / Python (Django)

      11 octobre 2017 à 6:13:32

      Bonjour,

      je te conseille cette lecture, notamment le point avec Flexbox : http://www.emmanuelbeziat.com/blog/un-site-qui-prend-toute-la-hauteur-disponible/

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        22 octobre 2017 à 12:49:56

        Bonjour Lamecarlate,

        Après quelques recherches j'ai trouvé la méthode suivante :

        site.html

        <!DOCTYPE html>
        <html>
          <head>
            <meta charset="utf-8"/>
            <link href="design.css" rel="stylesheet" type="text/css">
            <title>Test</title>
          </head>
        
          <body>
            <div class="container">
              <div class="top">
                <div class="header">
                  <header>
                    <p>HEADER</p>
                  </header>
                </div>
        
                <div class="navBar">
                  <nav>
                    <p>NAVBAR</p>
                  </nav>
                </div>
              </div>
        
              <div class="article">
                <article>
                  <p>ARTICLE</p>
                </article>
              </div>
        
              <div class="footer">
                <footer>
                  <p>FOOTER</p>
                </footer>
              </div>
        
            </div>
          </body>
        
        </html>
        

        design.css

        .container{
          min-height: 100vh;
          display: flex;
          flex-direction: column;
          font-size: 30px;
        }
        
        .top{
          display: flex;
          flex-direction: row;
        }
        
        .header {
          background-color: blue;
          color: white;
        }
        
        .navBar{
          background-color: cyan;
          color: black;
          flex: 1;
        }
        
        .article{
          background-color: yellow;
          color: black;
          flex: 1;
        }
        
        .footer{
          background-color: black;
          color: white;
        }
        


        En fait il suffit d'établir un "min-height: 100vh;" pour le container puis de passer un "flex: 1;" à la section article !

        Merci

        • Partager sur Facebook
        • Partager sur Twitter

        Développeur Web autodidacte HTML5/CSS3/JS + C# (ASP.NET Core) / Python (Django)

        Flexbox : Occuper tout l'espace horizontal

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown