In meinem HTML-Dokument habe ich eine Tabelle mit zwei Spalten und mehreren Zeilen. Wie kann ich mit CSS den Abstand zwischen der ersten und zweiten Spalte vergrößern? Ich habe versucht, "margin-right: 10px;" zu jeder der Zellen auf der linken Seite, aber ohne Wirkung.
95
Antworten:
Wenden Sie dies auf Ihre erste an
<td>
:HTML-Beispiel:
quelle
border-collapse: separate
(es gab einen Tippfehler in derseparate
obigen Schreibweise )border-spacing: 5px;
border-spacing
Fügt auch Platz zwischen Zeilen hinzu. Leider gibt es keine separate Eigenschaft für den vertikalen und horizontalen Abstand.border-spacing
nimmt zwei Argumente - eines für horizontal und eines für vertikal.Ein Wort der Warnung: Obwohl dies
padding-right
Ihr spezielles (visuelles) Problem lösen könnte, ist es nicht der richtige Weg, den Abstand zwischen Tabellenzellen zu erhöhen. Waspadding-right
für eine Zelle funktioniert, ähnelt dem für die meisten anderen Elemente: Es fügt Platz innerhalb der Zelle hinzu. Wenn die Zellen keinen Rand oder keine Hintergrundfarbe haben oder etwas anderes, das das Spiel verrät, kann dies den Effekt des Einstellens des Abstands zwischen den Zellen nachahmen, aber nicht anders.Wie bereits erwähnt, werden Randspezifikationen für Tabellenzellen ignoriert:
CSS 2.1-Spezifikation - Tabellen - Visuelles Layout des Tabelleninhalts
Was ist dann der "richtige" Weg? Wenn Sie das
cellspacing
Attribut der Tabelle ersetzen möchten, istborder-spacing
(mitborder-collapse
deaktiviert) ein Ersatz. Wenn jedoch "Ränder" pro Zelle erforderlich sind, bin ich mir nicht sicher, wie dies mit CSS korrekt erreicht werden kann. Der einzige Hack, an den ich denken kann, ist zu verwendenpadding
vorstellen wie oben zu verwenden, jegliches Styling der Zellen (Hintergrundfarben, Rahmen usw.) zu vermeiden und stattdessen Container-DIVs in den Zellen zu verwenden, um ein solches Styling zu implementieren.Ich bin kein CSS-Experte, daher könnte ich mich in den obigen Punkten irren (was sehr gut zu wissen wäre! Auch ich hätte gerne eine CSS-Lösung mit Tabellenzellenrand).
Prost!
quelle
Wenn Sie keine Auffüllung verwenden können (z. B. haben Sie Ränder in td), versuchen Sie dies
quelle
Mir ist klar, dass dies ziemlich verspätet ist, aber für den Datensatz können Sie auch CSS-Selektoren verwenden, um dies zu tun (ohne dass Inline-Stile erforderlich sind). Dieses CSS wendet Auffüllungen auf die erste Spalte jeder Zeile an:
Und das wäre Ihr HTML, ohne CSS!:
Dies ermöglicht ein viel eleganteres Markup, insbesondere in Fällen, in denen Sie viele spezifische Formatierungen mit CSS vornehmen müssen.
quelle
Der Rand funktioniert leider nicht für einzelne Zellen. Sie können jedoch zusätzliche Spalten zwischen den beiden Zellen einfügen, zwischen denen Sie ein Leerzeichen einfügen möchten. Eine andere Option ist die Verwendung eines Rahmens mit derselben Farbe wie der Hintergrund.
quelle
Sie können das einfach tun:
Es ist kein CSS erforderlich :) Diese 10px ist Ihr Platz.
quelle
Versuchen Sie es
padding-right
. Du darfst nichtmargin
zwischen Zellen setzen.quelle
Mit border-collapse: trennen;hat bei mir nicht funktioniert, weil ich nur einen Rand zwischen den Tabellenzellen brauche, nicht an den Seiten der Tabelle.
Ich habe die nächste Lösung gefunden:
- CSS
- HTML
quelle
Diese Lösung funktioniert für
td
diejenigen, die sowohlborder
als auchpadding
für das Styling benötigen .(Getestet auf Chrome 32, IE 11, Firefox 25)
Aktualisiert 2016
Firefox unterstützt es jetzt ohne
inline-block
und ohne Setwidth
quelle
Auf diese Weise können Sie einzelne Spalten in einer Zelle nicht herausgreifen. Meiner Meinung nach ist es am besten, ein
style='padding-left:10px'
in die zweite Spalte einzufügen und die Stile auf ein internes div oder Element anzuwenden. Auf diese Weise können Sie die Illusion eines größeren Raums erreichen.quelle
Wenn Sie die Breite der Tabelle steuern können, fügen Sie in alle Tabellenzellen einen linken Abstand und in die gesamte Tabelle einen negativen linken Rand ein.
Beachten Sie, dass die Breite der Tabelle die Auffüll- / Randbreite enthalten muss. Am obigen Beispiel beträgt die visuelle Breite der Tabelle 700 Pixel.
Dies ist nicht die beste Lösung, wenn Sie Rahmen für Ihre Tabellenzellen verwenden.
quelle
LÖSUNG
Ich fand, der beste Weg, um dieses Problem zu lösen, war eine Kombination aus Versuch und Irrtum und Lesen dessen, was vor mir geschrieben stand:
http://jsfiddle.net/MG4hD/
Wie Sie sehen können, habe ich einige ziemlich knifflige Dinge im Gange ... aber der Hauptkicker dafür, dass dies gut aussieht, sind:
ELTERNELEMENT (UL): Grenzkollaps: getrennt; Randabstand: .25em; Rand links: -.25em;
KINDERELEMENTE (LI): Anzeige: Tabellenzelle; vertikal ausrichten: Mitte;
HTML
CSS
quelle
Nach Cians Lösung, einen Rand anstelle eines Randes festzulegen, habe ich festgestellt, dass Sie die Rahmenfarbe auf transparent setzen können, um zu vermeiden, dass die Farbe farblich an den Hintergrund angepasst werden muss. Funktioniert in FF17, IE9, Chrome v23. Scheint eine anständige Lösung zu sein, vorausgesetzt, Sie brauchen nicht auch eine tatsächliche Grenze.
quelle
Die Verwendung von Polstern ist nicht die richtige Vorgehensweise. Sie kann das Aussehen ändern, ist aber nicht das, was Sie wollten. Dies kann Ihr Problem lösen.
quelle
Sie können beide verwenden:
Aber es ist besser, mit % zu verwenden .
quelle
%
Wenn das Auffüllen für Sie nicht funktioniert, können Sie auch zusätzliche Spalten hinzufügen und mithilfe der Breite einen Rand festlegen
<colgroup>
. Keine der oben genannten Polsterungslösungen funktionierte für mich, als ich versuchte, dem Zellrand selbst einen Rand zu geben, und dies löste am Ende das Problem:Gestalten Sie die Ränder der Tabellenzellen mit: n-tes Kind so, dass die zweite und dritte Spalte eine einzelne Spalte zu sein scheinen.
quelle