web-dev-qa-db-fra.com

min-hauteur 100vh crée une barre de défilement verticale même si le contenu est plus petit que la fenêtre d'affichage

J'applique min-height: 100vh; vers un conteneur flexbox et j'obtiens une barre de défilement verticale lorsque j'utilise justify-content: space-around;

Je ne veux pas forcer la hauteur, mais je ne comprends pas pourquoi la barre de défilement est là car le contenu a des dimensions plus petites que la fenêtre d'affichage.

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}
body {
  margin: 0;
  padding: 0;
}
.wrapper {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: space-around;
}
<link href="https://necolas.github.io/normalize.css/5.0.0/normalize.css" rel="stylesheet"/>
<div class="wrapper">
  <div>
    <h1>min-height: 100vh;</h1>
    <h2>why is there a scrollbar here?</h2>
  </div>
  <div>
    Be sure to expand window. 
    <a href="#">skill one</a>
    <a href="#">skill one</a>
    <a href="#">skill one</a>
    <a href="#">skill one</a>
  </div>
</div>
12
George Katsanos

L'ajout de flex-grow semble faire l'affaire:

body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.wrapper {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  justify-content: space-around;
}

https://jsfiddle.net/uxgaaccr/2/

Je ne sais pas pourquoi, mais height: 100% sur .wrapper ne semble pas suffire, il a besoin de flex-grow au lieu. Je pense qu'il y avait un espace blanc supplémentaire provenant de justify-content: space-around qui ajoutait à la hauteur. Pas confiant dans mon raisonnement, mais il semble fonctionner ...

6
Jazcash

Sur la base de la réponse de @ Jazcash ci-dessus, cela peut être encore plus simplifié.

Essentiellement, nous devons déplacer le min-height: 100vh à l'élément parent et appliquez display: flex à elle. flex-grow n'est pas requis.

https://jsfiddle.net/gkatsanos/uxgaaccr/3/

* {
  box-sizing: border-box;
}

body {
  min-height: 100vh;
  display: flex;
}

.wrapper {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
}
<link href="https://necolas.github.io/normalize.css/5.0.0/normalize.css" rel="stylesheet"/>
<div class="wrapper">
  <div>
    <h1>min-height: 100vh;</h1>
    <h2>why is there a scrollbar here?</h2>
  </div>
  <div>
    Be sure to expand window. 
    <a href="#">skill one</a>
    <a href="#">skill one</a>
    <a href="#">skill one</a>
    <a href="#">skill one</a>
  </div>
</div>
2
George Katsanos