Angenommen, ich habe ein Markup wie: http://jsfiddle.net/R8eCr/1/
<div class="container">
<div class="column">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<div class="column">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<div class="column">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
...
</div>
Dann CSS
.container {
display: table;
border-collapse: collapse;
}
.column {
float: left;
overflow: hidden;
width: 120px;
}
.cell {
display: table-cell;
border: 1px solid red;
width: 120px;
height: 20px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Ich habe das äußere Div mit display: table; border-collapse: collapse;
und Zellen mit display: table-cell
warum kollabieren sie immer noch nicht? Was vermisse ich hier?
Übrigens gibt es vielleicht eine variable Anzahl von Zellen in einer Spalte, so dass ich nicht nur Ränder auf einer Seite haben kann.
<table>
und Freunde für Tische?Antworten:
Hier ist eine Demo
Zuerst müssen Sie Ihren Syntaxfehler korrigieren
display: table-cell;
nicht
diaplay: table-cell;
.container { display: table; border-collapse:collapse } .column { display:table-row; } .cell { display: table-cell; border: 1px solid red; width: 120px; height: 20px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
quelle
Verwenden Sie einen einfachen negativen Rand anstelle einer Anzeigetabelle.
Aktualisiert in Geige JS Geige
.container { border-style: solid; border-color: red; border-width: 1px 0 0 1px; display: inline-block; } .column { float: left; overflow: hidden; } .cell { border: 1px solid red; width: 120px; height: 20px; margin:-1px 0 0 -1px; } .clearfix { clear:both; }
quelle
Verwenden Sie stattdessen
border
usebox-shadow
:box-shadow: 2px 0 0 0 #888, 0 2px 0 0 #888, 2px 2px 0 0 #888, /* Just to fix the corner */ 2px 0 0 0 #888 inset, 0 2px 0 0 #888 inset;
Demo: http://codepen.io/Hawkun/pen/rsIEp
quelle
box-shadow
wird ignoriert (verschwindet), wenn kontrastreiche Themen in Windows verwendet werden. Geben Sie daher immer eine Alternative an, wenn Sie sich für die Barrierefreiheit interessieren.Sie müssen
display: table-row
anstelle vonfloat: left;
zu Ihrer Spalte verwenden und natürlich als @Hushme Ihrediaplay: table-cell
zu korrigierendisplay: table-cell;
.container { display: table; border-collapse: collapse; } .column { display: table-row; overflow: hidden; width: 120px; } .cell { display: table-cell; border: 1px solid red; width: 120px; height: 20px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
Demo
quelle
Sie können auch negative Ränder verwenden:
.column { float: left; overflow: hidden; width: 120px; } .cell { border: 1px solid red; width: 120px; height: 20px; box-sizing: border-box; } .cell:not(:first-child) { margin-top: -1px; } .column:not(:first-child) > .cell { margin-left: -1px; }
<div class="container"> <div class="column"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <div class="column"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <div class="column"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <div class="column"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> <div class="column"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> </div>
quelle
border-top/left: 0;
. Ränder erzeugen Offsets.Warum nicht Gliederung verwenden? es ist das, was Sie Umriss wollen : 1px durchgehend rot;
quelle
Beispiel für die Verwendung von Border-Collapse: separate; wie
ol[type="I"]>li{ display: table; border-collapse: separate; border-spacing: 1rem; }
quelle