.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>
Meine Frage bezieht sich auf die HERE
im CSS markierte Zeile . Ich fand heraus, dass die Zeilen zu nahe beieinander liegen, und versuchte, einen unteren Rand hinzuzufügen, um sie zu trennen. Geht leider nicht. Ich muss die Ränder zu den Tabellenzellen hinzufügen, um die Zeilen zu trennen.
Was ist der Grund für dieses Verhalten?
Ist es auch in Ordnung, diese Strategie zu verwenden, um das Layout wie folgt durchzuführen:
[icon] - text [icon] - text
[icon] - text [icon] - text
oder gibt es eine bessere strategie?
Antworten:
Siehe CSS 2.1-Standard, Abschnitt 17.5.3. Bei Verwendung
display:table-row
wird die Höhe des DIV ausschließlich durch die Höhe der darin enthaltenentable-cell
Elemente bestimmt. Daher haben Rand, Polsterung und Höhe dieser Elemente keine Auswirkung.http://www.w3.org/TR/CSS2/tables.html
quelle
Wie ist das für eine Umgehung (unter Verwendung einer tatsächlichen Tabelle)?
Es ist nicht so dynamisch, da Sie die Farbe des Rahmens explizit festlegen müssen (es sei denn, es gibt auch einen Weg, dies zu umgehen), aber damit experimentiere ich in einem eigenen Projekt.
Bearbeiten , um Kommentare zu folgenden Themen aufzunehmen
transparent
:quelle
Das nächste, was ich gesehen habe, wäre,
border-spacing: 0 30px;
auf den Container div zu setzen. Dies lässt mir jedoch nur Platz am oberen Rand des Tisches, was den Zweck zunichte macht, da Sie Rand-unten wollten.quelle
line-height
margin: -30px 0
.Haben Sie versucht, den unteren Rand auf
.row div
"Ihre Zellen" einzustellen? Wenn Sie mit tatsächlichen HTML-Tabellen arbeiten, können Sie auch keine Zeilen für Zeilen festlegen - nur für Zellen.quelle
display: table
. Dies ist jedoch nicht ganz das Gleiche wie Marge ...Hierfür gibt es eine ziemlich einfache Lösung, an der die Attribute
border-spacing
undborder-collapse
CSS arbeitendisplay: table
.Sie können Folgendes verwenden, um Auffüllungen / Ränder in Ihren Zellen zu erhalten.
Beachten Sie, dass Sie haben müssen
Sonst funktioniert es nicht.
quelle
Geige
Dies kann eine andere Lösung sein
quelle
Fügen Sie eine Abstandsspanne zwischen zwei Elementen hinzu und machen Sie sie dann nicht sichtbar:
quelle
Works - Abstand zur Tabelle hinzufügen
quelle
Das Hinzufügen eines br-Tags zwischen den Divs hat funktioniert. Fügen Sie ein br-Tag zwischen zwei divs hinzu, die angezeigt werden: table-row in einem übergeordneten Element mit display: table
quelle