Betere manier om afstand tussen flexbox items in te stellen
Om de minimale afstand tussen flexbox items in te stellen gebruik ik margin: 0 5px
op .item
en margin: 0 -5px
op container. Voor mij lijkt het een hack, maar ik kan'geen betere manier vinden om dit te doen.
[Example][1]
#box {
display: flex;
width: 100px;
margin: 0 -5px;
}
.item {
background: gray;
width: 50px;
height: 50px;
margin: 0 5px;
}
<div id='box'>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
</div>
648
3
border-spacing
voor tabellen (behalve de CSS eigenschapgap
die niet goed ondersteund wordt in de meeste browsers, caniuse)Daarom is het bereiken van wat je vraagt een beetje moeilijker.
In mijn ervaring is de "cleanest" manier die geen gebruik maakt van
:first-child
/:last-child
en werkt zonder enige aanpassing aanflex-wrap:wrap
, ompadding:5px
in te stellen op de container enmargin:5px
op de children. Dat geeft een10px
ruimte tussen de kinderen onderling en tussen de kinderen en hun ouder.[Demo](http://jsfiddle.net/7XD8s/)
U kunt transparante randen gebruiken.
Ik heb over deze kwestie nagedacht toen ik probeerde een flex grid model te bouwen dat kan terugvallen op een tabel + tabel-cel model voor oudere browsers. En randen voor kolomgoten leken mij de meest geschikte keuze. D.w.z. tabelcellen hebben geen marges.
bijv.
Merk ook op dat je
min-width: 50px;
nodig hebt voor flexbox. Het flex model zal niet omgaan met vaste maten, tenzij jeflex: none;
doet op het specifieke child element dat je als vast wilt en dus uitgesloten wilt hebben van"flexi"
. http://jsfiddle.net/GLpUp/4/ Maar alle kolommen samen metflex:none;
is niet langer een flex model. Hier is iets wat dichter bij een flex model komt: http://jsfiddle.net/GLpUp/5/Je kunt dus eigenlijk normaal marges gebruiken als je de table-cell fallback voor oudere browsers niet nodig hebt. http://jsfiddle.net/GLpUp/3/
Het instellen van
background-clip: padding-box;
zal nodig zijn als je een achtergrond gebruikt, omdat anders de achtergrond in het transparante randgebied zal vloeien.De makkelijkste manier om dit te doen is met percentages en de marge op de breedte te laten aansluiten
Dit betekent dat je eindigt met iets als dit als je jouw voorbeeld gebruikt
Dit betekent wel dat je waarden gebaseerd zijn op de breedte, wat misschien niet voor iedereen goed is.