J'essaie d'obtenir une disposition en grille avec 6 éléments centrés sur la page comme suit:
Mais je n'arrive pas à obtenir la grille au centre des images, aucune idée?
<div class="grid-container"> <div class="grid-item one">1</div> <div class="grid-item two">2</div> <div class="grid-item three">3</div> <div class="grid-item four">4</div> <div class="grid-item five">5</div> <div class="grid-item six">6</div> </div>
.grid-container { display: grid; grid-template-columns: auto auto auto; background-color: #999999; padding: 10px; } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; &.one{ background-image: url("img/mainmeu/e.png"); } &.two{ background-image: url("img/mainmeu/b.png"); } }
3 Réponses :
Utilisez column-gap
et row-gap
pour l'espacement de la grille.
Utilisez les propriétés background-image
pour centrer l'image à l'intérieur de la grille
<div class="grid-container"> <div class="grid-item one">1</div> <div class="grid-item two">2</div> <div class="grid-item three">3</div> <div class="grid-item four">4</div> <div class="grid-item five">5</div> <div class="grid-item six">6</div> </div>
.grid-container { display: grid; grid-template-columns: auto auto auto; background-color: #999; column-gap: 10px; padding: 10px; row-gap: 30px; justify-items: left; align-items: center; } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; width: 120px; height: 120px; align-content: center; display: inline-grid; } .grid-item.one { background-image: url("https://via.placeholder.com/200x200"); background-size: cover; background-position: center; background-repeat: no-repeat; } .grid-item.two { background-image: url("https://via.placeholder.com/200x200"); background-size: cover; background-position: center; background-repeat: no-repeat; }
La mise en page est attachée aux bords gauche de l'écran, au lieu d'être une grille centrée
Puisque vous ne définissez pas de tailles, utilisez inline-grid
et centrez-la en utilisant text-align: center
sur le parent.
<div class="grid-container"> <div class="grid-item one">1</div> <div class="grid-item two">2</div> <div class="grid-item three">3</div> <div class="grid-item four">4</div> <div class="grid-item five">5</div> <div class="grid-item six">6</div> </div>
body { text-align: center; } .grid-container { display: inline-grid; grid-template-columns: auto auto auto; background-color: #999999; padding: 10px; grid-gap: 10px; } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; }
Utilisez simplement justify-content: center
pour centrer les éléments de la grille . Utilisez également des valeurs grid-gap
pour obtenir la mise en page requise. Voir la démo ci-dessous:
<div class="grid-container"> <div class="grid-item one">1</div> <div class="grid-item two">2</div> <div class="grid-item three">3</div> <div class="grid-item four">4</div> <div class="grid-item five">5</div> <div class="grid-item six">6</div> </div>
.grid-container { display: grid; grid-template-columns: auto auto auto; background-color: #999999; padding: 10px; grid-row-gap: 20px; /* added */ grid-column-gap: 10px; /* added */ justify-content: center; /* added */ } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; background-image: url("https://via.placeholder.com/200"); background-size: cover; /* image as cover */ box-sizing: border-box; /* added width */ width: 20vw; /* center inner content using flexbox */ display: flex; justify-content: center; align-items: center; } .grid-item:after { padding-top: 60%; /* according to your aspect ratio */ content: ''; display: block; }
Si vous souhaitez faire varier les tailles de élément de grille , vous pouvez les dimensions relatives en utilisant le padding
(car il est toujours basé sur la largeur). Dans la démo ci-dessous, j'ai utilisé padding-top: 60%
(si vous utilisez 100%, vous obtiendrez un élément de grille carré):
<div class="grid-container"> <div class="grid-item one">1</div> <div class="grid-item two">2</div> <div class="grid-item three">3</div> <div class="grid-item four">4</div> <div class="grid-item five">5</div> <div class="grid-item six">6</div> </div>
.grid-container { display: grid; grid-template-columns: auto auto auto; background-color: #999999; padding: 10px; grid-row-gap: 20px; /* added */ grid-column-gap: 10px; /* added */ justify-content: center; /* added */ } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; background-image: url("https://via.placeholder.com/200"); background-size: cover; /* image as cover */ }
Pardon, pouvez-vous élaborer? Quelle partie n'est pas centrée? Ou le problème est-il lié aux images?
vérifiez les ans mis à jour.