Flexbox ile, oluklar oluşturmak, özellikle sarma söz konusu olduğunda bir acıdır.
Negatif kenar boşlukları kullanmanız gerekir ( soruda gösterildiği gibi ):
#box {
display: flex;
width: 100px;
margin: 0 -5px;
}
... veya HTML'yi ( başka bir cevapta gösterildiği gibi ):
<div class='flex-wrapper'>
<div class='flex'>
<div class='box'></div>
<div class='box'></div>
...
</div>
</div>
... veya başka bir şey.
Her durumda, çalışması için çirkin bir saldırıya ihtiyacınız var çünkü flexbox bir "flex-gap
" özelliği ( en azından şimdilik ).
Bununla birlikte, oluklar sorunu CSS Izgara Düzeni ile basit ve kolaydır.
Grid özelliği, öğeler ve kap arasındaki boşluğu yok sayarken, ızgara öğeleri arasında boşluk oluşturan özellikler sağlar. Bu özellikler:
grid-column-gap
grid-row-gap
grid-gap
(yukarıdaki her iki özellik için kısayol)
Son zamanlarda, teknik özellik tüm kutu modellerinde kullanılmak üzere bir dizi hizalama özelliği sağlayan CSS Kutu Hizalama Modülüne uyacak şekilde güncellendi . Yani özellikler şimdi:
column-gap
row-gap
gap
(kısa gösterim)
Ancak, Grid destekleyen tüm tarayıcılar daha yeni özellikleri desteklemediğinden, aşağıdaki demoda orijinal sürümleri kullanacağım.
Ayrıca, öğeler ve kap arasında boşluk gerekliyse padding
, kapta iyi çalışır (aşağıdaki demoda üçüncü örneğe bakın).
Spec'ten:
10.1. Oluk: row-gap
, column-gap
, ve gap
özellikleri
row-gap
Ve column-gap
özellikleri (ve gap
bir ızgara kap belirtilen zaman kısaltılmış), ızgara satır ve sütunlar arasındaki ızgara olukları tanımlar. Sözdizimleri CSS Kutu Hizalaması 3 §8 Kutular Arasındaki Boşluklar .
Bu özelliklerin etkisi, etkilenen ızgara çizgilerinin elde ettiği kalınlık gibidir: iki ızgara çizgisi arasındaki ızgara izi, onları temsil eden oluklar arasındaki boşluktur.
.box {
display: inline-grid;
grid-auto-rows: 50px;
grid-template-columns: repeat(4, 50px);
border: 1px solid black;
}
.one {
grid-column-gap: 5px;
}
.two {
grid-column-gap: 10px;
grid-row-gap: 10px;
}
.three {
grid-gap: 10px;
padding: 10px;
}
.item {
background: lightgray;
}
<div class='box one'>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
</div>
<hr>
<div class='box two'>
<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>
<hr>
<div class='box three'>
<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>
Daha fazla bilgi: