Comment contrôler le nombre d'éléments par ligne à l'aide de requêtes de média dans Flexbox?
Imaginez donc j'ai le texte suivant Balisage
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
Et suivants styles (SASS)
@mixin max-width($width) {
@media screen and (max-width: $width) {
@content;
}
}
.container {
display: flex;
@include max-width(992px) {
number: 4; //Hypothetical property that is supposed to control number per row
}
@include max-width(640px) {
number: 2; //Hypothetical property that is supposed to control number per row
}
}
.item {
background-color: tomato;
padding: 20px;
margin-right: 20px;
flex: 1;
}
Est-il un véritable Flexbox CSS alternative à mon hypothétique number
propriété qui permet de contrôler le nombre d'éléments à afficher par ligne ?
Le flotteur grille était pratique parce que vous pourriez tenir illimité .items
par un .row
en raison de la width
. Mais avec flexbox-je utiliser des solutions de contournement comme de nombreux .row
classes pour le contrôle de la mise en page et le nombre d'objets à différentes largeur. J'ai eu de la chance jusqu'à présent, mais il y a un certain type de mise en page qui va échouer avec une telle approche.
- Eh bien, vous pouvez toujours utiliser un peu la largeur de contrôler le nombre d'articles que vous obtiendrez par ligne – via
flex-basis
... - Grille CSS serait la chose pour résoudre ce dans un straight-forward manière aujourd'hui: developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/...
Vous devez vous connecter pour publier un commentaire.
Je devais me débarrasser de la marge de contourner les blocs, car le pourcentage des largeurs sont difficiles à proprement appliquer à des éléments avec des marges, mais vous pouvez voir les changements à http://codepen.io/anon/pen/jPeLYb?editors=110 :
Les pièces importantes sont ici:
flex-flow: row wrap
qui permet à la flexbox pour apparaître sur plusieurs lignes (la valeur par défaut estnowrap
)flex-basis
qui est l'équivalent dewidth
dans ce casposition: relative
qui fait de la largeur par rapport au conteneur, plutôt que le corps (ce serait gâcher de l'arrondi)margin-right: 100px
et cela a fonctionné. Aucun débordement comme dans flotter mises en page. Merci pour la réponse, exactement ce dont j'avais besoin. Forgout à propos de cette propriéténumber: 4;
(il peut s'avérer impossible de pure flex) comme indiqué dans l'exemple de code. Le nombre d'éléments par ligne est toujours dépend entièrement de la largeur des éléments. Si je change leur largeur à une valeur définie et puis à d'autres valeurs, je peut encore causer des différents chefs d'éléments dans chaque ligne. Peut-être que je n'ai pas compris la question comme il était destiné à être comprise.