379 votes

Centrage dans la grille CSS

J'essaie de créer une page simple avec une grille CSS.

Ce que je ne parviens pas à faire, c'est centrer le texte du HTML dans les cellules respectives de la grille.

J'ai essayé de placer le contenu dans des endroits séparés div à l'intérieur et à l'extérieur de la left_bg y right_bg et en jouant avec certaines des propriétés CSS, sans résultat.

Comment dois-je m'y prendre ?

html,
body {
  margin: 0;
  padding: 0;
}

.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 100vh;
  grid-gap: 0px 0px;
}

.left_bg {
  display: subgrid;
  background-color: #3498db;
  grid-column: 1 / 1;
  grid-row: 1 / 1;
  z-index: 0;
}

.right_bg {
  display: subgrid;
  background-color: #ecf0f1;
  grid-column: 2 / 2;
  grid_row: 1 / 1;
  z-index: 0;
}

.left_text {
  grid-column: 1 / 1;
  grid-row: 1 / 1;
  position: relative;
  z-index: 1;
  justify-self: center;
  font-family: Raleway;
  font-size: large;
}

.right_text {
  grid-column: 2 / 2;
  grid_row: 1 / 1;
  position: relative;
  z-index: 1;
  justify-self: center;
  font-family: Raleway;
  font-size: large;
}

<div class="container">
  <!--everything on the page-->

  <div class="left_bg">
    <!--left background color of the page-->
  </div>
</div>

<div class="right_bg">
  <!--right background color of the page-->
</div>

<div class="left_text">
  <!--left side text content-->
  <p>Review my stuff</p>

  <div class="right_text">
    <!--right side text content-->
    <p>Hire me!</p>
  </div>
</div>

3 votes

Veuillez consulter le lien w3.org/Style/Exemples/007/center.fr.html J'espère que cela vous sera utile.

3voto

Kevin Muchwat Points 351

Faire du parent une grille et justify-content: center; y align-content: center;

<div class="parent">
  <div class="child">child</div>
</div>

.parent {
      height: 100px;
      width: 100px;
      border: 1px solid black;
      display: grid;
      justify-content: center;
      align-content: center;
}

.child {
      height: 20px;
      width: 20px;
      background-color: red;
}

2voto

Younis Ar M Points 715

Essayez d'utiliser flex :

Démonstration de Plunker : https://plnkr.co/edit/nk02ojKuXD2tAqZiWvf9

/* Styles go here */

html,
body {
  margin: 0;
  padding: 0;
}

.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 100vh;
  grid-gap: 0px 0px;
}

.left_bg {
  background-color: #3498db;
  grid-column: 1 / 1;
  grid-row: 1 / 1;
  z-index: 0;
  display: flex;
  justify-content: center;
  align-items: center;

}

.right_bg {
  background-color: #ecf0f1;
  grid-column: 2 / 2;
  grid_row: 1 / 1;
  z-index: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}

.text {
  font-family: Raleway;
  font-size: large;
  text-align: center;
}

HTML

    <div class="container">
  <!--everything on the page-->

  <div class="left_bg">
    <!--left background color of the page-->
    <div class="text">
      <!--left side text content-->
      <p>Review my stuff</p>
    </div>
  </div>

  <div class="right_bg">
    <!--right background color of the page-->
    <div class="text">
      <!--right side text content-->
      <p>Hire me!</p>
    </div>
  </div>
</div>

0voto

Cela a marché pour moi :

.d-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid black;
  border-left: 1px solid black;
}

.d-grid div {
  height: 50px;
  display: flex;
  border-bottom: 1px solid black;
  border-right: 1px solid black;
  align-items: center;
  justify-content: center;
}

<div class="d-grid">
  <div>text 1</div>
  <div>text 2</div>
  <div>text 3</div>
  <div>text 4</div>
  <div>text 5</div>
  <div>text 6</div>
</div>

-1voto

Aft3rL1f3 Points 482

Je sais que cette question date de quelques années, mais je suis surpris de constater que personne ne l'a suggérée :

   text-align: center;

Il s'agit d'une propriété plus universelle que justify-content, et elle n'est certainement pas propre à la grille, mais je trouve que lorsqu'il s'agit de texte, ce qui est le sujet de cette question, elle aligne le texte au centre sans affecter l'espace entre les éléments de la grille, ou le centrage vertical. Il centre le texte horizontalement là où il se trouve sur son axe vertical. Je trouve également qu'il supprime une couche de complexité que justify-content et align-items ajoutent. justify-content et align-items affectent le ou les éléments entiers de la grille, text-align centre le texte sans affecter le conteneur dans lequel il se trouve. J'espère que cela vous aidera.

-4voto

Renato siqueira Points 22

Tu veux ça ?

html,
body {
  margin: 0;
  padding: 0;
}

.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 100vh;
  grid-gap: 0px 0px;
}

.left_bg {
  display: subgrid;
  background-color: #3498db;
  grid-column: 1 / 1;
  grid-row: 1 / 1;
  z-index: 0;
}

.right_bg {
  display: subgrid;
  background-color: #ecf0f1;
  grid-column: 2 / 2;
  grid_row: 1 / 1;
  z-index: 0;
}

.text {
  font-family: Raleway;
  font-size: large;
  text-align: center;
}

<div class="container">
  <!--everything on the page-->

  <div class="left_bg">
    <!--left background color of the page-->
    <div class="text">
      <!--left side text content-->
      <p>Review my stuff</p>
    </div>
  </div>

  <div class="right_bg">
    <!--right background color of the page-->
    <div class="text">
      <!--right side text content-->
      <p>Hire me!</p>
    </div>
  </div>
</div>

1 votes

Pas tout à fait. Le texte doit aussi être aligné verticalement.

0 votes

Utilisez .text{ font-family: Raleway; font-size: large; text-align: center; -webkit-transform: rotate(-90deg); -moz-transform: rotate(-90deg); }

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