Ich habe folgenden Code:
<div class="table">
<div class="row">
<div class="cell">Cell</div>
<div class="cell">Cell</div>
</div>
<div class="row">
<div class="cell colspan2">Cell</div>
</div>
</div>
<style>
.table {
display: table;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
}
.colspan2 {
/* What to do here? */
}
</style>
Ziemlich einfach. Wie füge ich einen Colspan (oder das Äquivalent von Colspan) für Elemente mit hinzu display: table-cell
?
display: table-cell
.Antworten:
Soweit ich weiß, ist das Fehlen von Colspan / Rowspan nur eine der Einschränkungen von
display:table
. Siehe diesen Beitrag:http://www.onenaught.com/posts/201/use-css-displaytable-for-layout
quelle
Da OP nicht ausdrücklich vorschreibt, dass die Lösung reines CSS sein muss, werde ich hartnäckig sein und meine Problemumgehung einsetzen, die ich heute herausgefunden habe, zumal sie viel eleganter ist als eine Tabelle in einer Tabelle.
Beispiel entspricht <Tabelle> mit zwei Zellen pro Zeile und zwei Zeilen, wobei die Zelle in der zweiten Zeile ein td mit ist
colspan="2"
.Ich habe dies mit Iceweasel 20, Firefox 23 und IE 10 getestet.
Live-Action (Demo) hier .
BEARBEITEN: Ich habe den Code feiner eingestellt, um druckerfreundlicher zu sein, da Hintergrundfarben standardmäßig weggelassen werden. Ich habe auch eine Rowspan-Demo erstellt , inspiriert von der späten Antwort hier.
quelle
<div class="cell"></div>
funktioniert (zumindest mit Firefox). Bei diesem Design müssen Sie mit leeren Zellen auffüllen. Wenn Sie es beispielsweise so hätten, dass Zelle 7 colspan = 3 und Zelle 8 normal wäre, würden Sie zwei leere Zellen zwischen den Zellen 7 und 8 benötigen, es sei denn, Sie würden etwas anderes entwerfen (Ränder? Single customized div?) . Auch die Breite von 100px und 5 Zellen macht die Sache schwierig, da Wörter CSS-Zellen dehnen und Überlaufeinstellungen keinen Unterschied zu machen scheinen. Sie müssen auch neu zu berechnenwidth
fürdiv.colspan>div>div
.div.colspan{border-left:1px solid red}
. Es muss irgendwo unterhalb der Regel platziert werden, die div.colspan grenzenlos setzt, sonst wird es außer Kraft gesetzt.Eine einfachere Lösung, die für mich in Chrome 30 funktioniert:
Colspan kann emuliert werden, indem
display: table
anstelle vondisplay: table-row
für die Zeilen Folgendes verwendet wird :Die einzige Gefahr besteht darin, dass die Zellen gestapelter Zeilen nicht vertikal ausgerichtet werden, da sie aus verschiedenen Tabellen stammen.
quelle
Wenn Sie nach einer direkten CSS-Methode suchen, um einen Colspan zu simulieren, können Sie diese verwenden
display: table-caption
.quelle
Verwenden Sie einfach eine
table
.Tabellen werden nur verpönt, wenn sie für Layoutzwecke verwendet werden.
Dies scheint tabellarische Daten (Datenzeilen / -spalten) zu sein. Daher würde ich die Verwendung eines empfehlen
table
.Weitere Informationen finden Sie in meiner Antwort auf diese Frage :
Mit divs als Tabellen dasselbe erstellen
quelle
tr
/td
Spam ist nicht das schönste HTML, aber ist das der einzige Grund? Alle sagen, Tabellen seien nicht für die Formatierung "gedacht", aber HTML selbst sei nicht "gedacht", um die Hälfte der Dinge zu tun, die wir nach heutigen Standards für akzeptabel halten, einschließlich Webanwendungen.Hier ist eine Möglichkeit, Spalten in CSS zu überspannen, die ich für meine eigene Situation verwendet habe.
https://jsfiddle.net/mb8npttu/
quelle
.colspan
mitwhite-space: nowrap;
dem Ergebnis zu erhalten ich wollte, aber es funktionierte großartig.Es gibt eine Lösung, um den Colspan zur Breite der gesamten Tabelle zu machen. Sie können diese Technik nicht verwenden, um einen Teil der Tabelle zu überspannen.
Code:
Erläuterung:
Wir verwenden die absolute Position auf dem Colspan, um die volle Breite der Tabelle zu erreichen. Die Tabelle selbst benötigt eine relative Position. Wir verwenden eine Dummy-Zelle, um die Höhe der Zeilen beizubehalten. Die absolute Position folgt nicht dem Fluss des Dokuments.
Natürlich können Sie heutzutage auch Flexbox und Grid verwenden, um dieses Problem zu lösen.
quelle
CSS
HTML
Code
quelle
Dies kann nur mit reinem CSS erfolgen und den Text über den "falschen" Colspan zentrieren.
Der Trick besteht darin, die Zeilen auf zu setzen
position:relative
und dann "leere Divs" an der Stelle zu platzieren,row
an der Sie die erstellen möchtencolspan
(sie müssen vorhanden seinheight
, damit sie funktionieren), die Stelle festzulegen , an der sichcell
der Inhalt befindetdisplay:grid
, und schließlichposition:absolute
auf das Element anzuwenden innerhalb der Zelle (und zentrieren Sie sie, wie Sie jedes andere absolute Element zentrieren können).quelle
Durch Verwendung der entsprechenden div-Klassen und CSS-Attribute können Sie die gewünschten Effekte von colspan und rowspan nachahmen.
Hier ist das CSS
Hier ist das Beispiel-HTML
Was ich sowohl in den Fragen als auch in den meisten Antworten sehe, ist, dass die Leute zu vergessen scheinen, dass Sie in jedem Div, das als "Tabellenzelle" fungiert, ein anderes Div einfügen können, das sich wie eine eingebettete Tabelle verhält, und den Prozess starten können Über.
*** Es ist nicht glamourös, aber es funktioniert für diejenigen, die nach dieser Art der Formatierung suchen und die TABELLEN vermeiden möchten. Wenn es sich um DATA LAYOUT handelt, funktionieren TABLEs weiterhin in HTML5.
Hoffentlich hilft das jemandem.
quelle
<table>
- es ist nur so, dass die Leute es vermeiden sollten , es für die visuelle Formatierung zu verwenden . Wenn Sie es zum Anzeigen strukturierter Daten verwenden , sollten Sie es verwenden , es sei denn, etwas anderes (z<ul>
. B. als bloßes Beispiel) passt besser für die Aufgabe. Zweitens, Alter, 4 Tische. Sie bringen interessante Fragen auf den Tisch (Zeilenbereich), aber Ihre Antwort schreit nach Verwendung<table>
. Ich muss sehen, wie meine Lösung hier funktioniert ...Sie können die Position des Colspan-Inhalts wie folgt als "relativ" und die Zeile als "absolut" festlegen:
quelle
Das können Sie derzeit nicht erreichen.
AFAIK würde dies durch CSS-Tabellen abgedeckt , eine Spezifikation, die sich derzeit im Status "in Arbeit" zu befinden scheint.
quelle
Sie können diese Lösung ausprobieren, in der Sie mithilfe von div https://codepen.io/pkachhia/pen/JyWMxY erfahren, wie Sie Colspan anwenden
HTML:
CSS:
quelle
Auch wenn dies eine alte Frage ist, möchte ich meine Lösung für dieses Problem mitteilen.
Hier ist eine Geige . Es ist nicht wirklich eine Zeitspanne, und die Lösung ist ein bisschen hacky, aber es ist in einigen Situationen nützlich. Getestet auf Chrome 46, Firefox 31 und IE 11.
In meinem Fall musste ich einige nicht tabellarische Daten tabellarisch darstellen, wobei die Breite der Spalten beibehalten und Unterabschnitte der Daten mit einem Titel versehen wurden.
quelle
Verwenden Sie verschachtelte Tabellen, um Spaltenbereiche zu verschachteln ...
Oder verwenden Sie 2 Tabellen, in denen die Spaltenspanne die gesamte Zeile abdeckt ...
quelle