Was ist der Browser und können Sie einen Ausschnitt Ihres Codes (html / css) bereitstellen?
Patrick Desjardins
Nun, ich benutze ff3, da ich weiß, dass es angeblich Regeln unterstützt, aber im Moment versuche ich, es in ff3 zu beheben. Ich habe versucht, Abstand und Polsterung bisher kein Glück. productlistingitem ist die Haupttabelle <table class = "productListingItem" border = "0" cellpadding = "10" cellspacing = "0"> <tr> <tr> <td class = "dragItem">
Marin
1
Vielleicht liegt es daran, dass border-spacingein Attribut damit zusammenhängt tableund nicht tr. Versuchen Sie es table.classname {border-spacing:5em}. Note: IE8 unterstützt die Eigenschaft "Randabstand", wenn ein! DOCTYPE angegeben ist.
Varun Natraaj
Ich verwende die Zeilenhöhe, wenn keine Ränder vorhanden sind.
Sie müssen Ihre tdElemente auffüllen . So etwas sollte den Trick machen. Sie können natürlich das gleiche Ergebnis erzielen, wenn Sie eine obere Polsterung anstelle einer unteren Polsterung verwenden.
Im folgenden CSS-Code bedeutet das Größer-als-Zeichen, dass das Auffüllen nur auf tdElemente angewendet wird , die den trElementen mit der Klasse direkt untergeordnet sind spaceUnder. Dadurch können verschachtelte Tabellen verwendet werden. (Zelle C und D im Beispielcode.) Ich bin mir nicht sicher, ob der Browser die direkte untergeordnete Auswahl unterstützt (denken Sie an IE 6), aber er sollte den Code in keinem modernen Browser beschädigen.
/* Apply padding to td elements that are direct children of the tr elements with class spaceUnder. */
tr.spaceUnder>td {padding-bottom:1em;}
Dies löst das Problem jedoch überhaupt nicht, wenn Ihre Zeilen eine Hintergrundfarbe haben und Sie tatsächlich WHITESPACE zwischen Ihren Zeilen möchten.
Simon East
6
@ Simon: Leerzeichen beziehen sich normalerweise auf Leerzeichen und nicht speziell auf die Farbe Weiß. Wenn Sie den Abstand zwischen den Zeilen einfärben möchten, können Sie es mit der CSS-Eigenschaft <code> border-bottom </ code> für die td-Elemente versuchen. Das wird wahrscheinlich nur mit einem 1px-Rand korrekt gerendert. Eine andere, aber nicht so elegante Lösung wäre die Verwendung einer leeren Zeile.
Jan Aagaard
18
@ Jan: Ja, genau mein Punkt ... Es ist ziemlich schwierig, transparenten Leerraum zwischen Zeilen zu setzen. Ihre Lösung hilft in einigen Fällen, löst dieses Problem jedoch nicht. Das Einfügen einer leeren Tabellenzeile mag funktionieren, ist aber schwierig. Ein bottom-borderSet auf transparent könnte auch funktionieren, aber ich bin mir nicht sicher, wie browserübergreifend es ist.
Versuchen Sie in der übergeordneten Tabelle die Einstellung
border-collapse:separate;
border-spacing:5em;
Plus eine Grenzerklärung, und prüfen Sie, ob dies Ihren gewünschten Effekt erzielt. Beachten Sie jedoch, dass der IE das Modell der "getrennten Grenzen" nicht unterstützt.
Ja, diese Methode wäre ideal, außer dass IE 7 sie nicht unterstützt. Informationen zur
Simon East
7
Außerdem wird der Abstand über alle Zeilen in der Tabelle gesteuert. Sie können den Zeilenabstand nicht für einzelne Zeilen festlegen (was das OP möglicherweise erreichen möchte).
Simon East
1
Dies ist zwischen Chrome und Firefox nicht konsistent. Wenn Sie ein theadund haben tbody, wird border-spacingin Chrome ein Doppel zwischen diesen gerendert (in Firefox jedoch ein Einzel).
Camilo Martin
91
Dies ist die eigentliche Antwort, die speziell festgelegt wurde border-spacing: 0 1em, um den Abstand zwischen nur Zeilen zu ermitteln.
Igneosaurier
1
@igneosaur Ich habe versucht, das zu tun, was du gesagt hast, aber es hat immer noch den Abstand zwischen allen Zeilen und nicht nur den ersten beiden hinzugefügt. Können Sie eine funktionierende jsfiddle bereitstellen?
user3281466
184
Sie haben eine Tabelle mit ID-Alben mit beliebigen Daten ... Ich habe die trs und tds weggelassen
das hat bei mir gut funktioniert. Das erste Argument des Randabstands ist der horizontale Abstand zwischen den Zellen und das zweite der vertikale Abstand.
Es muss nicht immer ausgefallenes CSS sein, wenn gutes altes HTML den Job machen kann :)
ist es möglich, sich nur für das tr inside "tbody" zu bewerben?
Jaison
129
Da ich ein Hintergrundbild hinter dem Tisch habe, würde es nicht funktionieren, es mit weißer Polsterung vorzutäuschen. Ich habe mich dafür entschieden, eine leere Zeile zwischen jede Inhaltszeile zu setzen:
<trclass="spacer"><td></td></tr>
Verwenden Sie dann CSS, um den Abstandsreihen eine bestimmte Höhe und einen transparenten Hintergrund zu geben.
Das ist wahrscheinlich flexibler, würde ich denken. Sie können nicht immer steuern, wann Sie im Voraus Speicherplatz benötigen (dynamisch generierte Seiten).
Stefan Kendall
10
Dies erinnert mich an die 90er Jahre, als es fast keine CSS-Unterstützung gab und für die meisten Layouts Tabellen verwendet wurden. Ich gebe es aber immer noch +1, weil die anderen "Antworten" nicht besser sind, wenn es darum geht, tatsächlich Platz zwischen Tabellenzeilen zu schaffen.
Labyrinth
@ Labyrinth Seit den 90ern hat sich nicht viel geändert. In Bezug auf HTML ist alles viel leistungsfähiger und unordentlicher geworden.
Die CSS-Eigenschaft für den Randabstand gibt den Abstand zwischen den Rändern benachbarter Zellen an (nur für das Modell mit getrennten Rändern). Dies entspricht dem Zellenabstandsattribut in HTML-Präsentationen. Ein optionaler zweiter Wert kann jedoch verwendet werden, um unterschiedliche horizontale und vertikale Abstände festzulegen .
Dieser letzte Teil wird oft übersehen. Beispiel:
.your-table {
border-collapse: separate;/* allow spacing between cell borders */
border-spacing:05px;/* NOTE: syntax is <horizontal value> <vertical value> */
AKTUALISIEREN
Ich verstehe jetzt, dass das OP möchte, dass bestimmte, separate Zeilen einen größeren Abstand haben. Ich habe ein Setup mit tbodyElementen hinzugefügt , das dies erreicht, ohne die Semantik zu ruinieren. Ich bin mir jedoch nicht sicher, ob es von allen Browsern unterstützt wird. Ich habe es in Chrome gemacht.
Das folgende Beispiel zeigt, wie Sie es so aussehen lassen können, als ob die Tabelle aus separaten Zeilen und ausgewachsener CSS-Süße besteht. Auch gab die erste Reihe mehr Abstand mit dem tbodySetup. Fühlen Sie sich frei zu benutzen!
Support-Hinweis: IE8 +, Chrome, Firefox, Safari, Opera 4+
Wenn ich einen vertikalen Abstand zwischen zwei bestimmten Zeilen haben wollte, habe ich gerade eine Abstandsreihe <tr> <td colspan = "2" style = "padding-bottom: 1em;"> </ td> </ tr> hinzugefügt
Paul Taylor
Das würde funktionieren, ist aber semantisch falsch (wie in, Ihre Trennzeile ist keine tatsächliche Zeile mit Daten wie die anderen Zeilen. Dies kann für Benutzer von Bildschirmleseprogrammen oder anderen Hilfsgeräten sowie für Indizierungszwecke und die Es macht vielleicht keinen großen Unterschied, aber es ist gut, es bei der Entwicklung einer Website im Kopf zu behalten :)
Justus Romijn
Das ist wahr, wenn er tatsächlich eine Tabelle verwendet, um eine Tabelle darzustellen. Wenn er nur eine Tabelle verwendet, um Daten tabellarisch anzuzeigen, ist es meiner Meinung nach sinnvoller, eine Zeile einzufügen, um eine Lücke zwischen zwei Elementen darzustellen, als nur einen Abstand zu den obigen Elementen hinzuzufügen oder unterhalb der Linie, da der Benutzer zwischen zwei Zeilen Platz hinzufügen und nicht die Größe von Elementen innerhalb einer Zeile erhöhen möchte.
Paul Taylor
53
Sie können versuchen, eine Trennzeile hinzuzufügen:
Für IE würde tr ohne Körper nicht erkannt werden. füge auch ein Dummy-td-Tag hinzu.
Nap
Das Problem ist, dass der W3C-Validator in HTML5 den Fehler "Eine Tabellenzeile war 0 Spalten breit, was weniger als die in der ersten Zeile festgelegte Spaltenanzahl ist" ausgibt.
David Grayson
Schön, ich hatte ein weiteres <tr>, <td> und <p> hinzugefügt und die Sichtbarkeit des p-Tags auf versteckt gesetzt. Funktioniert auch. :-)
Jeppe
47
Sie können den Rand einer Tabellenzelle nicht ändern. Sie können jedoch die Polsterung ändern. Ändern Sie die Auffüllung des TD, wodurch die Zelle größer wird, und schieben Sie den Text mit der erhöhten Auffüllung von der Seite weg. Wenn Sie jedoch Grenzlinien haben, ist dies immer noch nicht genau das, was Sie möchten.
<table><tr><td>Some text - 1</td><td>Some text - 1</td></tr><tr><td>Some text - 2</td><td>Some text - 2</td></tr><tr><td>Some text - 3</td><td>Some text - 3</td></tr></table>
Stellen Sie sicher, dass die Hintergrundfarbe auf dem td und nicht auf der Zeile eingestellt ist. Dies sollte in den meisten Browsern funktionieren ... (Chrome, dh & ff getestet)
Dies führt zu seltsamen Problemen bei der vertikalen Ausrichtung, zumindest in Firefox
Cjohansson,
20
Sie müssen border-collapse: separate;auf den Tisch setzen; Die meisten Standard-Stylesheets für Browser beginnen bei border-collapse: collapse;, wodurch der Randabstand verringert wird.
Vielen Dank. Ich habe mich zuvor im Kommentar-Fix bedankt, aber ein übereifriger Redakteur, der meinen Stil ändern wollte und dabei den Code gebrochen hat, hat auch mein Dankeschön entfernt. Ich lege es jetzt hier ab, wo es nicht bearbeitet werden kann.
John Haugeland
18
Sie können die Zeilenhöhe in der Tabelle verwenden:
Das ist unheimlich. Dies setzt die displayEigenschaft blockfür die Zeile auf. Dadurch kann die Zeile einen Rand haben. Vertikaler Rand " Gilt für: alle Elemente außer denen mit anderen Tabellenanzeigetypen als Tabellenbeschriftung, Tabelle und Inline-Tabelle ". Da table-rowes keine dieser Ausnahmen gibt, zählt es nicht. Sie könnten wahrscheinlich den gleichen Effekt erzielen, wenn Sie dies tun. tr {display:block;}Aber ich wäre vorsichtig, wenn Sie eine dieser Methoden in einer komplizierten Tabelle verwenden würden. Es wird wahrscheinlich nicht zu dem führen, was Sie erwarten.
Sholsinger
Das ist beängstigend, aber es hat funktioniert. Nicht in IE7, aber der Zellabstand direkt in der Tabelle funktioniert in IE7.
Liko
Das Schweben von Zeilen ist keine gute Lösung. Dies gilt insbesondere dann, wenn Ihre Seite größer als das Zweifache der Zeilenbreite ist. füge das width-Attribut beiden Tags hinzu
AndreaCi
11
Um eine Illusion von Abständen zwischen Zeilen zu erzeugen, wenden Sie Hintergrundfarbe auf die Zeile an und erstellen Sie dann einen dicken Rand mit weißer Farbe, sodass ein "Leerzeichen" erstellt wird :)
Sie können dies über CSS tun, was meiner Meinung nach "korrekter" ist (abgesehen von der Tatsache, dass es eleganter ist, spart das Verschieben des Stils von Markup zu CSS Bandbreite).
Camilo Martin
2
Es spart keine Bandbreite. Ich benutze eigentlich mehr. Angenommen, Sie fügen nicht nur dafür ein Stylesheet hinzu, müssen Sie dieser Tabelle einen Selektor und möglicherweise eine ID oder einen Namen hinzufügen. Das sind mehr Bytes, nicht weniger.
Majinnaibu
9
Ich bin darauf gestoßen, als ich mit einem ähnlichen Problem zu kämpfen hatte. Ich habe Varun Natraajs Antwort als sehr hilfreich empfunden, aber ich würde stattdessen einen transparenten Rand verwenden.
Funktioniert für die meisten neuesten Browser im Jahr 2015. Einfache Lösung. Es funktioniert nicht für transparent, aber im Gegensatz zu Thoronwens Antwort kann ich nicht transparent werden, um mit irgendeiner Größe zu rendern.
Mir ist klar, dass dies eine Antwort auf einen alten Thread ist und möglicherweise nicht die angeforderte Lösung ist, aber obwohl alle vorgeschlagenen Lösungen nicht das taten, was ich brauchte, funktionierte diese Lösung für mich.
Ich hatte 2 Tabellenzellen, eine mit Hintergrundfarbe, die andere mit einer Randfarbe. Die obigen Lösungen entfernen den Rand, sodass die Zelle rechts in der Luft zu schweben scheint. Die Lösung, die den Trick tat , war das zu ersetzen table, trund tdmit divs und entsprechenden Klassen: Tabelle wäre div id="table_replacer", würde tr sein div class="tr_replacer"und td wäre div class="td_replacer"(ändern Tags zu divs als auch offensichtlich zu schließen)
Um die Lösung für mein Problem zu erhalten, lautet das CSS:
#table_replacer{display:table;}.tr_replacer {border:1px solid #123456;margin-bottom: 5px;}/*DO NOT USE display:table-row! It will destroy the border and the margin*/.td_replacer{display:table-cell;}
Imho, diese Lösung entspricht der Verwendung der regulären Tabelle, tr, td Muster und Stil tr {display: block;}, die ich versucht habe. Problem: Die Tabelle sieht anders aus, da die td-Elemente nicht auf die Tabellenbreite gerendert werden, sondern links im tr schweben. Das heißt, die td-Elemente aller Zeilen sind nicht mehr vertikal ausgerichtet.
Andreas Stankewitz
0
Sie können die <td /> -Elemente mit <div /> -Elementen füllen und den gewünschten Divs einen beliebigen Rand zuweisen. Für einen visuellen Raum zwischen den Zeilen können Sie ein sich wiederholendes Hintergrundbild für das <tr /> -Element verwenden. (Dies war die Lösung, die ich heute verwendet habe, und sie scheint sowohl in IE6 als auch in FireFox 3 zu funktionieren, obwohl ich sie nicht weiter getestet habe.)
Wenn Sie es ablehnen, Ihren Servercode so zu ändern, dass <div /> s in die <td /> s eingefügt werden, können Sie mit jQuery (oder ähnlichem) den <td /> -Inhalt dynamisch in ein <div / einbinden >, damit Sie das CSS wie gewünscht anwenden können.
Hier ist eine einfache und elegante Lösung mit ein paar Einschränkungen:
Sie können die Lücken nicht wirklich transparent machen, sondern müssen ihnen eine bestimmte Farbe geben.
Sie können die Ecken der Ränder über und unter den Lücken nicht abrunden
Sie müssen den Abstand und die Ränder Ihrer Tabellenzellen kennen
Versuchen Sie in diesem Sinne Folgendes:
td {padding:5px8px;border:2px solid blue;background:#E0E0E0}/* lets say the cells all have this padding and border, and the gaps should be white */
tr.gapbefore td {overflow:visible}
tr.gapbefore td::before,
tr.gapbefore th::before
{
content:"";
display:block;
position:relative;
z-index:1;
width:auto;
height:0;
padding:0;
margin:-5px-10px5px;/* 5px = cell top padding, 10px = (cell side padding)+(cell side border width)+(table side border width) */
border-top:16px solid white;/* the size & color of the gap you want */
border-bottom:2px solid blue;/* this replaces the cell's top border, so should be the same as that. DOUBLE IT if using border-collapse:separate */}
Was Sie tatsächlich tun, ist, einen rechteckigen ::beforeBlock oben in alle Zellen in der Zeile einzufügen, denen eine Lücke vorangestellt werden soll. Diese Blöcke ragen etwas aus den Zellen heraus, um die vorhandenen Ränder zu überlappen und sie auszublenden. Diese Blöcke sind nur ein oberer und ein unterer Rand, die zusammengefügt sind: Der obere Rand bildet die Lücke, und der untere Rand erzeugt das Erscheinungsbild des ursprünglichen oberen Randes der Zellen.
Beachten Sie, dass Sie den horizontalen Rand Ihrer 'Blöcke' weiter vergrößern müssen, wenn Sie einen Rand um die Tabelle selbst sowie die Zellen haben. Für einen 4px-Tabellenrand würden Sie stattdessen Folgendes verwenden:
margin:-5px-12px5px;/* 14px = original 10px + 2px for 'uncollapsed' part of table border */
Und wenn Ihre Tabelle border-collapse:separateanstelle von verwendet border-collapse:collapse, müssen Sie (a) die volle Breite des Tabellenrahmens verwenden:
margin:-5px-14px5px;/* 14px = original 10px + 4px full width of table border */
... und auch (b) die doppelte Breite des Rahmens ersetzen, der jetzt unter der Lücke erscheinen muss:
border-bottom:4px solid blue;/* i.e. 4px = cell top border + previous row's bottom border */
Die Technik lässt sich leicht an eine .gapafter-Version anpassen, wenn Sie dies bevorzugen, oder vertikale (Spalten-) Lücken anstelle von Zeilenlücken erstellen.
Funktioniert das tatsächlich? Ich habe div.el { display: table-row; margin: 10px; }und Margin macht nichts. Ich weiß, es ist ein wenig anders als ein tatsächlicher Tisch, aber es sollte nicht sein ...
border-spacing
ein Attribut damit zusammenhängttable
und nichttr
. Versuchen Sie estable.classname {border-spacing:5em}
.Note
: IE8 unterstützt die Eigenschaft "Randabstand", wenn ein! DOCTYPE angegeben ist.Antworten:
Sie müssen Ihre
td
Elemente auffüllen . So etwas sollte den Trick machen. Sie können natürlich das gleiche Ergebnis erzielen, wenn Sie eine obere Polsterung anstelle einer unteren Polsterung verwenden.Im folgenden CSS-Code bedeutet das Größer-als-Zeichen, dass das Auffüllen nur auf
td
Elemente angewendet wird , die dentr
Elementen mit der Klasse direkt untergeordnet sindspaceUnder
. Dadurch können verschachtelte Tabellen verwendet werden. (Zelle C und D im Beispielcode.) Ich bin mir nicht sicher, ob der Browser die direkte untergeordnete Auswahl unterstützt (denken Sie an IE 6), aber er sollte den Code in keinem modernen Browser beschädigen.Dies sollte ungefähr so aussehen:
quelle
bottom-border
Set auf transparent könnte auch funktionieren, aber ich bin mir nicht sicher, wie browserübergreifend es ist.Versuchen Sie in der übergeordneten Tabelle die Einstellung
Plus eine Grenzerklärung, und prüfen Sie, ob dies Ihren gewünschten Effekt erzielt. Beachten Sie jedoch, dass der IE das Modell der "getrennten Grenzen" nicht unterstützt.
quelle
thead
und habentbody
, wirdborder-spacing
in Chrome ein Doppel zwischen diesen gerendert (in Firefox jedoch ein Einzel).border-spacing: 0 1em
, um den Abstand zwischen nur Zeilen zu ermitteln.Sie haben eine Tabelle mit ID-Alben mit beliebigen Daten ... Ich habe die trs und tds weggelassen
In der CSS:
quelle
cellspacing
Attribut <Tabelle> wird in HTML5 nicht unterstützt.Da ich ein Hintergrundbild hinter dem Tisch habe, würde es nicht funktionieren, es mit weißer Polsterung vorzutäuschen. Ich habe mich dafür entschieden, eine leere Zeile zwischen jede Inhaltszeile zu setzen:
Verwenden Sie dann CSS, um den Abstandsreihen eine bestimmte Höhe und einen transparenten Hintergrund zu geben.
quelle
Aus dem Mozilla Developer Network :
Dieser letzte Teil wird oft übersehen. Beispiel:
AKTUALISIEREN
Ich verstehe jetzt, dass das OP möchte, dass bestimmte, separate Zeilen einen größeren Abstand haben. Ich habe ein Setup mit
tbody
Elementen hinzugefügt , das dies erreicht, ohne die Semantik zu ruinieren. Ich bin mir jedoch nicht sicher, ob es von allen Browsern unterstützt wird. Ich habe es in Chrome gemacht.Das folgende Beispiel zeigt, wie Sie es so aussehen lassen können, als ob die Tabelle aus separaten Zeilen und ausgewachsener CSS-Süße besteht. Auch gab die erste Reihe mehr Abstand mit dem
tbody
Setup. Fühlen Sie sich frei zu benutzen!Support-Hinweis: IE8 +, Chrome, Firefox, Safari, Opera 4+
quelle
Sie können versuchen, eine Trennzeile hinzuzufügen:
html:
CSS:
quelle
Sie können den Rand einer Tabellenzelle nicht ändern. Sie können jedoch die Polsterung ändern. Ändern Sie die Auffüllung des TD, wodurch die Zelle größer wird, und schieben Sie den Text mit der erhöhten Auffüllung von der Seite weg. Wenn Sie jedoch Grenzlinien haben, ist dies immer noch nicht genau das, was Sie möchten.
quelle
border-bottom
undpadding-bottom
bedeutet , dass der Rand unter der Polsterung ist.Sehen Sie sich das Border-Collapse an: separates Attribut (Standard) und die Border-Spacing- Eigenschaft.
Zuerst müssen Sie trennen sie mit border-collapse , dann können Sie die definieren Abstand zwischen den Spalten und Zeilen mit Grenzabstand .
Diese beiden CSS-Eigenschaften werden in jedem Browser gut unterstützt, siehe hier .
quelle
Ok, das kannst du machen
Stellen Sie sicher, dass die Hintergrundfarbe auf dem td und nicht auf der Zeile eingestellt ist. Dies sollte in den meisten Browsern funktionieren ... (Chrome, dh & ff getestet)
quelle
Sie müssen
border-collapse: separate;
auf den Tisch setzen; Die meisten Standard-Stylesheets für Browser beginnen beiborder-collapse: collapse;
, wodurch der Randabstand verringert wird.Auch Randabstand: geht auf die
TD
, nicht dieTR
.Versuchen:
quelle
Sie können die Zeilenhöhe in der Tabelle verwenden:
quelle
quelle
Eine zu späte Antwort :)
Wenn Sie float auf
tr
Elemente anwenden , können Sie zwischen zwei Zeilen mitmargin
Attribut platzieren.quelle
display
Eigenschaftblock
für die Zeile auf. Dadurch kann die Zeile einen Rand haben. Vertikaler Rand " Gilt für: alle Elemente außer denen mit anderen Tabellenanzeigetypen als Tabellenbeschriftung, Tabelle und Inline-Tabelle ". Datable-row
es keine dieser Ausnahmen gibt, zählt es nicht. Sie könnten wahrscheinlich den gleichen Effekt erzielen, wenn Sie dies tun.tr {display:block;}
Aber ich wäre vorsichtig, wenn Sie eine dieser Methoden in einer komplizierten Tabelle verwenden würden. Es wird wahrscheinlich nicht zu dem führen, was Sie erwarten.Um eine Illusion von Abständen zwischen Zeilen zu erzeugen, wenden Sie Hintergrundfarbe auf die Zeile an und erstellen Sie dann einen dicken Rand mit weißer Farbe, sodass ein "Leerzeichen" erstellt wird :)
quelle
Der richtige Weg, um Abstände für Tabellen anzugeben, ist die Verwendung von Cellpadding und Cellspacing, z
quelle
Ich bin darauf gestoßen, als ich mit einem ähnlichen Problem zu kämpfen hatte. Ich habe Varun Natraajs Antwort als sehr hilfreich empfunden, aber ich würde stattdessen einen transparenten Rand verwenden.
Transparente Ränder haben noch Breite.
quelle
Funktioniert für die meisten neuesten Browser im Jahr 2015. Einfache Lösung. Es funktioniert nicht für transparent, aber im Gegensatz zu Thoronwens Antwort kann ich nicht transparent werden, um mit irgendeiner Größe zu rendern.
quelle
Einfach
div
in dietd
und setzen Sie die folgenden Stile vondiv
:quelle
Mir ist klar, dass dies eine Antwort auf einen alten Thread ist und möglicherweise nicht die angeforderte Lösung ist, aber obwohl alle vorgeschlagenen Lösungen nicht das taten, was ich brauchte, funktionierte diese Lösung für mich.
Ich hatte 2 Tabellenzellen, eine mit Hintergrundfarbe, die andere mit einer Randfarbe. Die obigen Lösungen entfernen den Rand, sodass die Zelle rechts in der Luft zu schweben scheint. Die Lösung, die den Trick tat , war das zu ersetzen
table
,tr
undtd
mit divs und entsprechenden Klassen: Tabelle wärediv id="table_replacer"
, würde tr seindiv class="tr_replacer"
und td wärediv class="td_replacer"
(ändern Tags zu divs als auch offensichtlich zu schließen)Um die Lösung für mein Problem zu erhalten, lautet das CSS:
Hoffe das hilft jemandem.
quelle
Sie können die <td /> -Elemente mit <div /> -Elementen füllen und den gewünschten Divs einen beliebigen Rand zuweisen. Für einen visuellen Raum zwischen den Zeilen können Sie ein sich wiederholendes Hintergrundbild für das <tr /> -Element verwenden. (Dies war die Lösung, die ich heute verwendet habe, und sie scheint sowohl in IE6 als auch in FireFox 3 zu funktionieren, obwohl ich sie nicht weiter getestet habe.)
Wenn Sie es ablehnen, Ihren Servercode so zu ändern, dass <div /> s in die <td /> s eingefügt werden, können Sie mit jQuery (oder ähnlichem) den <td /> -Inhalt dynamisch in ein <div / einbinden >, damit Sie das CSS wie gewünscht anwenden können.
quelle
Oder fügen Sie einfach ein Leerzeichen mit der Höhe des Randes zwischen den Zeilen hinzu, für die Sie den Abstand hinzufügen möchten
quelle
Hier ist eine einfache und elegante Lösung mit ein paar Einschränkungen:
Versuchen Sie in diesem Sinne Folgendes:
Was Sie tatsächlich tun, ist, einen rechteckigen
::before
Block oben in alle Zellen in der Zeile einzufügen, denen eine Lücke vorangestellt werden soll. Diese Blöcke ragen etwas aus den Zellen heraus, um die vorhandenen Ränder zu überlappen und sie auszublenden. Diese Blöcke sind nur ein oberer und ein unterer Rand, die zusammengefügt sind: Der obere Rand bildet die Lücke, und der untere Rand erzeugt das Erscheinungsbild des ursprünglichen oberen Randes der Zellen.Beachten Sie, dass Sie den horizontalen Rand Ihrer 'Blöcke' weiter vergrößern müssen, wenn Sie einen Rand um die Tabelle selbst sowie die Zellen haben. Für einen 4px-Tabellenrand würden Sie stattdessen Folgendes verwenden:
Und wenn Ihre Tabelle
border-collapse:separate
anstelle von verwendetborder-collapse:collapse
, müssen Sie (a) die volle Breite des Tabellenrahmens verwenden:... und auch (b) die doppelte Breite des Rahmens ersetzen, der jetzt unter der Lücke erscheinen muss:
Die Technik lässt sich leicht an eine .gapafter-Version anpassen, wenn Sie dies bevorzugen, oder vertikale (Spalten-) Lücken anstelle von Zeilenlücken erstellen.
Hier ist ein Codepen, in dem Sie ihn in Aktion sehen können: https://codepen.io/anon/pen/agqPpW
quelle
Hier funktioniert das reibungslos:
Ich nehme an, Sie könnten ein feinkörnigeres Layout erarbeiten, indem Sie angeben, welches td bei Bedarf erforderlich ist.
quelle
dies oben gezeigt ...
Entfernt die vertikale Spaltenausrichtung. Seien Sie also vorsichtig, wie Sie sie verwenden
quelle
Hast du es versucht:
Alternativ kann jeder td auch angepasst werden:
oder
quelle
div.el { display: table-row; margin: 10px; }
und Margin macht nichts. Ich weiß, es ist ein wenig anders als ein tatsächlicher Tisch, aber es sollte nicht sein ...