3 votes

Ajuster les lignes à la hauteur du contenu dans une grille de hauteur dynamique

Je veux créer une page web avec CSS Grid Layout.

Je fais face à un problème concernant la hauteur des lignes.

Je veux que la hauteur de chaque ligne s'ajuste en fonction du contenu.

Actuellement, la hauteur est fixe. S'il n'y a pas de contenu, beaucoup d'espace libre est affiché. Existe-t-il un moyen de gérer cela?

Je veux les résultats dans ces captures d'écran:

Capture d'écran option1

aussi

Capture d'écran option2

body,
html {
  height: 100%;
  margin: 0;
  padding: 0;
  font-family: arial;
}

.wrapper {
  height: 100%;
  display: grid;
  grid-template-rows: 40px auto 40px;
  grid-template-areas: "header  header  header" "content content content" "footer  footer  footer";
  grid-gap: 5px;
}

header {
  grid-area: header;
  background-color: black;
  color: white;
  padding: 10px;
}

footer {
  grid-area: footer;
  background-color: black;
  color: white;
  padding: 10px;
}

.container {
  grid-area: content;
  display: grid;
  grid-template-columns: 820px 1fr;
  grid-template-rows: 480px 213px;
  grid-gap: 5px;
  padding: 0 5px;
}

.grid-item-1 {
  color: #fff;
  text-align: center;
  padding: 10px;
  background-color: #009036;
  grid-area: 1 / span 1 / 1 / span 1;
}

.grid-item-2 {
  color: #fff;
  text-align: center;
  padding: 10px;
  background-color: #772164;
  grid-area: 2 / span 1 / 2 / span 1;
}

.grid-item-3 {
  color: #fff;
  text-align: center;
  background-color: #C91B18;
  grid-area: 1 / 2 / span 3 / span 3;
}

  Header

    La hauteur de cette ligne s'adapte en fonction des données.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

      La hauteur de cette ligne s'adapte en fonction des données.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    3

  Footer

option 4

1voto

Michael_B Points 15556

Pour les deux éléments de contenu, utilisez min-content pour chaque ligne. Cela dimensionnera chaque ligne en fonction d'un algorithme de "réduction à la taille".

Pour donner à la colonne de droite une hauteur complète, ajoutez une ligne implicite vide.

body {
  margin: 0; font-family: arial;
}
* { box-sizing: border-box; }

.wrapper {
  height: 100vh;
  display: grid;
  grid-template-rows: 40px 1fr 40px;
  grid-gap: 5px;  
  grid-template-areas: "header  header  header" 
                       "content content content"
                       "footer  footer  footer";

}

header {
  grid-area: header;
  background-color: black;
  color: white;
  padding: 10px;
}

footer {
  grid-area: footer;
  background-color: black;
  color: white;
  padding: 10px;
}

.container {
  grid-area: content;
  display: grid;
  grid-template-columns: 820px 1fr;
  grid-template-rows: min-content min-content; /* shrink-to-fit */
  grid-gap: 5px;
  padding: 0 5px;
  grid-template-areas: "green red" 
                       "purple red"
                       "   .    red"; /* ligne implicite; pour la hauteur complète du rouge */

}

.grid-item-1 {
  grid-area: green;
  color: #fff;
  text-align: center;
  padding: 10px;
  background-color: #009036;
}

.grid-item-2 {
  grid-area: purple;
  color: #fff;
  text-align: center;
  padding: 10px;
  background-color: #772164;
}

.grid-item-3 {
  grid-area: red;
  color: #fff;
  text-align: center;
  background-color: #C91B18;
}

  Header

    Cette hauteur de ligne s'adapte en fonction des données.

      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
      dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

      Cette hauteur de ligne s'adapte en fonction des données.

      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
      dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    3

  Footer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X