Przyczyna
Z dokumentacji MDN :
[Właściwość marginesu] dotyczy wszystkich elementów z wyjątkiem elementów o typach wyświetlania tabeli innych niż podpis tabeli, tabela i tabela wbudowana
Innymi słowy, margin
właściwość nie ma zastosowania do display:table-cell
elementów.
Rozwiązanie
border-spacing
Zamiast tego rozważ użycie właściwości.
Uwaga: należy go zastosować do elementu nadrzędnego z display:table
układem i border-collapse:separate
.
Na przykład:
HTML
<div class="table">
<div class="row">
<div class="cell">123</div>
<div class="cell">456</div>
<div class="cell">879</div>
</div>
</div>
CSS
.table {display:table;border-collapse:separate;border-spacing:5px;}
.row {display:table-row;}
.cell {display:table-cell;padding:5px;border:1px solid black;}
Różne marginesy w poziomie i w pionie
Jak wspomniał Diego Quirós, border-spacing
właściwość przyjmuje również dwie wartości, aby ustawić inny margines dla osi poziomej i pionowej.
Na przykład
.table {/*...*/border-spacing:3px 5px;} /* 3px horizontally, 5px vertically */
padding
można ustawić dla dowolnego niezbędnego selektora (np. Klasa lub identyfikator), jak zwykle. Jeśli masz na myśli odległośćmargin
między komórkami, możesz to ustawić osobno dla osi pionowej i poziomej, ustawiając dwie wartości naborder-spacing
, ale będzie to miało zastosowanie do całej tabeli, a nie do poszczególnych komórek.Możesz użyć wewnętrznych div, aby ustawić margines.
JS Fiddle
źródło
.inner-div { margin-right: 5px; } .outer-cell:last-child .inner-div { margin-right: 0; }
. Ale zwróć też uwagę na tę gotcha: czerwone i zielone tła w tym przykładzie niekoniecznie muszą odpowiadać wysokości, ponieważ nie znajdują się na komórkach.Komórki tabeli nie uwzględniają marginesów, ale zamiast tego można użyć przezroczystych ramek:
Uwaga: nie możesz tutaj użyć wartości procentowych ... :(
źródło
Jeśli masz div obok siebie w ten sposób
To powinno działać!
źródło