.container {
width: 850px;
padding: 0;
display: table;
margin-left: auto;
margin-right: auto;
}
.row {
display: table-row;
margin-bottom: 30px;
/* HERE */
}
.home_1 {
width: 64px;
height: 64px;
padding-right: 20px;
margin-right: 10px;
display: table-cell;
}
.home_2 {
width: 350px;
height: 64px;
padding: 0px;
vertical-align: middle;
font-size: 150%;
display: table-cell;
}
.home_3 {
width: 64px;
height: 64px;
padding-right: 20px;
margin-right: 10px;
display: table-cell;
}
.home_4 {
width: 350px;
height: 64px;
padding: 0px;
vertical-align: middle;
font-size: 150%;
display: table-cell;
}
<div class="container">
<div class="row">
<div class="home_1"></div>
<div class="home_2"></div>
<div class="home_3"></div>
<div class="home_4"></div>
</div>
<div class="row">
<div class="home_1"></div>
<div class="home_2"></div>
</div>
</div>
Moje pytanie dotyczy linii zaznaczonej HERE
w CSS. Okazało się, że rzędy są zbyt blisko siebie, więc spróbowałem dodać dolny margines, aby je rozdzielić. Niestety to nie działa. Muszę dodać marginesy do komórek tabeli, aby oddzielić wiersze.
Jaki jest powód takiego zachowania?
Ponadto, czy mogę użyć tej strategii do tworzenia układu, tak jak ja:
[icon] - text [icon] - text
[icon] - text [icon] - text
czy jest lepsza strategia?
Odpowiedzi:
Zobacz standard CSS 2.1, rozdział 17.5.3. Kiedy używasz
display:table-row
, wysokość DIV jest określana wyłącznie przez wysokość zawartych w nimtable-cell
elementów. W związku z tym margines, dopełnienie i wysokość tych elementów nie mają żadnego wpływu.http://www.w3.org/TR/CSS2/tables.html
źródło
Jak to jest obejść (przy użyciu rzeczywistej tabeli)?
Nie jest tak dynamiczny, ponieważ musisz wyraźnie ustawić kolor obramowania (chyba że jest na to sposób), ale jest to coś, z czym eksperymentuję w moim własnym projekcie.
Edytuj, aby uwzględnić komentarze dotyczące
transparent
:źródło
Najbliższą rzeczą, jaką widziałem, byłoby ustawienie
border-spacing: 0 30px;
elementu div kontenera. Jednak to pozostawia mi tylko miejsce na górnej krawędzi stołu, co mija się z celem, ponieważ chciałeś marginesu na dole.źródło
line-height
margin: -30px 0
.Czy próbowałeś ustawić dolny margines na
.row div
np. Swoje „komórki”? Podczas pracy z rzeczywistymi tabelami HTML nie można również ustawiać marginesów w wierszach - tylko w komórkach.źródło
display: table
. Jednak to nie to samo, co margines ...Jest na to dość prosta poprawka, działają atrybuty
border-spacing
iborder-collapse
CSSdisplay: table
.Możesz użyć poniższego, aby uzyskać dopełnienie / marginesy w swoich komórkach.
Należy pamiętać, że muszą mieć
W przeciwnym razie to nie zadziała.
źródło
Skrzypce
to może być inne rozwiązanie
źródło
Dodaj odstęp dystansowy między dwoma elementami, a następnie spraw, aby był niewidoczny:
źródło
Działa - dodaj odstępy do tabeli
źródło
Jeśli chcesz mieć określony margines, np. 20px, możesz umieścić tabelę wewnątrz div.
Więc #tableDiv ma margines 20px, ale sama tabela ma szerokość 100%, co powoduje, że tabela ma pełną szerokość, z wyjątkiem marginesów po obu stronach.
źródło
dodanie znacznika br między elementami div zadziałało. dodaj znacznik br między dwoma elementami div, które są display: table-row w elemencie nadrzędnym z display: table
źródło