Comment faire pour centrer un conteneur flex mais à gauche-align flex éléments
Je veux le flex éléments pour être centré mais quand nous avons une deuxième ligne, à avoir de 5 (à partir de l'image ci-dessous) sous 1 et pas centré dans le parent.
Voici un exemple de ce que j'ai:
CSS:
ul {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
margin: 0;
padding: 0;
}
li {
list-style-type: none;
border: 1px solid gray;
margin: 15px;
padding: 5px;
width: 200px;
}
HTML:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
http://jsfiddle.net/8jqbjese/2/
Vous devez vous connecter pour publier un commentaire.
Flexbox Défi & Limitation
Le défi est au centre d'un groupe de flex éléments de gauche et les aligner sur l'écharpe. Mais si il y a un nombre fixe de cases par ligne, et chaque boîte est de largeur fixe, ce n'est actuellement pas possible avec flexbox.
En utilisant le code affiché dans la question, on pourrait créer un nouveau conteneur flex qui enveloppe le flex conteneur (
ul
), ce qui nous permettrait de centre de laul
avecjustify-content: center
.Puis le flex éléments de la
ul
pourrait être aligné à gauche avecjustify-content: flex-start
.Cela crée une centrée sur un groupe d'aligné à gauche flex éléments.
Le problème avec cette méthode est que, à certaines tailles d'écran il y a un écart sur la droite de la
ul
, il n'a pas été plus centré.Cela se produit parce que dans flex mise en page (et, en fait, CSS en général) du conteneur:
La longueur maximale de l'espace sur la droite est la longueur de la flexion de l'élément dans le conteneur m'attendais à être là.
Dans la démonstration suivante, par re-dimensionnement de la fenêtre horizontalement, vous pouvez voir les espaces d'aller et venir.
DÉMO
Une Approche Plus Pratique
La mise en page souhaitée peut être obtenue sans flexbox à l'aide de
inline-block
et requêtes de média.HTML
CSS
Le code ci-dessus rend une à l'horizontale centrée sur le récipient avec de l'alignement à gauche des éléments d'enfant comme ceci:
DÉMO
Autres Options
Correctement dimensionnement et d'alignement de la flex élément(s) sur la dernière ligne
Desandro Maçonnerie
CSS de la Grille de Mise en page du Module de Niveau 1
Comme @michael a suggéré, c'est une limitation de courant flexbox. Mais si vous voulez toujours utiliser
flex
etjustify-content: center;
, alors on peut contourner ce problème en ajoutant un mannequinli
élément et attribuermargin-left
.Cochez cette le violon, les redimensionner et de les voir ) ou vidéo de référence
Un moyen pour obtenir le style désiré et avec des marges est de faire ce qui suit: