Antworten:
Grundlagen
Zur Steuerung von "Cellpadding" in CSS können Sie einfach padding
Tabellenzellen verwenden. ZB für 10px "Cellpadding":
td {
padding: 10px;
}
Für "Zellenabstand" können Sie die border-spacing
CSS-Eigenschaft auf Ihre Tabelle anwenden . ZB für 10px "Zellabstand":
table {
border-spacing: 10px;
border-collapse: separate;
}
Diese Eigenschaft ermöglicht sogar getrennte horizontale und vertikale Abstände, was mit dem "Zellenabstand" der alten Schule nicht möglich ist.
Probleme im IE <= 7
Dies funktioniert in fast allen gängigen Browsern, mit Ausnahme von Internet Explorer bis Internet Explorer 7, wo Sie fast kein Glück haben. Ich sage "fast", weil diese Browser immer noch die border-collapse
Eigenschaft unterstützen, die die Ränder benachbarter Tabellenzellen zusammenführt. Wenn Sie versuchen, den Zellabstand zu eliminieren (d. H. cellspacing="0"
) , Sollte border-collapse:collapse
dies den gleichen Effekt haben: Kein Leerzeichen zwischen Tabellenzellen. Diese Unterstützung ist jedoch fehlerhaft, da sie ein vorhandenes cellspacing
HTML-Attribut für das Tabellenelement nicht überschreibt .
Kurz gesagt: Für Nicht-Internet Explorer 5-7-Browser werden border-spacing
Sie behandelt. Wenn Ihre Situation für Internet Explorer genau richtig ist (Sie möchten einen Zellenabstand von 0 und Ihre Tabelle hat ihn noch nicht definiert), können Sie ihn verwenden border-collapse:collapse
.
table {
border-spacing: 0;
border-collapse: collapse;
}
Hinweis: Eine großartige Übersicht über CSS-Eigenschaften, die auf Tabellen und für welche Browser angewendet werden können, finden Sie auf dieser fantastischen Quirksmode-Seite .
Das Standardverhalten des Browsers entspricht:
table {border-collapse: collapse;}
td {padding: 0px;}
Legt den Abstand zwischen dem Inhalt der Zelle und der Zellwand fest
table {border-collapse: collapse;}
td {padding: 6px;}
Steuert den Abstand zwischen Tabellenzellen
table {border-spacing: 2px;}
td {padding: 0px;}
table {border-spacing: 2px;}
td {padding: 6px;}
table {border-spacing: 8px 2px;}
td {padding: 6px;}
Hinweis: Wenn
border-spacing
festgelegt, wird dieborder-collapse
Eigenschaft der Tabelle angezeigtseparate
.
Hier finden Sie den alten HTML-Weg, um dies zu erreichen.
table
{
border-collapse: collapse; /* 'cellspacing' equivalent */
}
table td, table th
{
padding: 0; /* 'cellpadding' equivalent */
}
cellspacing=0
gleichwertig. Das Äquivalent für cellspacing=1
ist völlig anders. Siehe die akzeptierte Antwort.
table td
und table th
werden nur td
und th
jeweils? Es funktioniert so oder so, aber ein kleinerer Selektor bedeutet etwas schnelleres Matching
table > tr > td
und table > tr > th
. Dies ist fast so schnell wie tr
und th
und funktioniert garantiert, wenn Sie eine verschachtelte Tabelle haben. Nur mein 2c
table
Selektor benötigt? IIRC, a <td>
ist ungültig, es sei denn, innerhalb von a <tr>
.
Das Festlegen von Rändern für Tabellenzellen hat meines Wissens keine wirklichen Auswirkungen. Das wahre CSS-Äquivalent für cellspacing
ist border-spacing
- aber es funktioniert nicht in Internet Explorer.
Sie können verwenden border-collapse: collapse
, um den Zellenabstand wie erwähnt zuverlässig auf 0 zu setzen, aber für jeden anderen Wert denke ich, dass der einzige browserübergreifende Weg darin besteht, das cellspacing
Attribut weiterhin zu verwenden.
border-collapse
funktioniert jedoch nur in IE 5-7, wenn für die Tabelle noch kein cellspacing
Attribut definiert ist. Ich habe eine umfassende Antwort geschrieben, in der alle korrekten Teile der anderen Antworten auf dieser Seite zusammengeführt werden, falls dies hilfreich ist.
Dieser Hack funktioniert für Internet Explorer 6 und höher, Google Chrome , Firefox und Opera :
table {
border-collapse: separate;
border-spacing: 10px; /* cellspacing */
*border-collapse: expression('separate', cellSpacing = '10px');
}
table td, table th {
padding: 10px; /* cellpadding */
}
Die *
Deklaration gilt für Internet Explorer 6 und 7, und andere Browser ignorieren sie ordnungsgemäß.
expression('separate', cellSpacing = '10px')
Gibt zurück 'separate'
, aber beide Anweisungen werden ausgeführt, da Sie in JavaScript mehr Argumente als erwartet übergeben können und alle ausgewertet werden.
Für diejenigen, die einen Zellabstandswert ungleich Null wünschen, hat das folgende CSS für mich funktioniert, aber ich kann es nur in Firefox testen.
Weitere Informationen zur Kompatibilität finden Sie unter dem Quirksmode- Link an anderer Stelle . Es scheint, dass es mit älteren Internet Explorer-Versionen möglicherweise nicht funktioniert.
table {
border-collapse: separate;
border-spacing: 2px;
}
Die einfache Lösung für dieses Problem lautet:
table
{
border: 1px solid #000000;
border-collapse: collapse;
border-spacing: 0px;
}
table td
{
padding: 8px 8px;
}
Wickeln Sie den Inhalt der Zelle mit einem div ein und Sie können alles tun, was Sie wollen, aber Sie müssen jede Zelle in eine Spalte einschließen, um einen einheitlichen Effekt zu erzielen. Zum Beispiel, um nur einen breiteren linken und rechten Rand zu erhalten:
So wird das CSS sein,
div.cellwidener {
margin: 0px 15px 0px 15px;
}
td.tight {
padding: 0px;
}
<table border="0">
<tr>
<td class="tight">
<div class="cellwidener">My content</div>
</td>
</tr>
</table>
Ja, es ist ein Ärger. Ja, es funktioniert mit Internet Explorer. Tatsächlich habe ich dies nur mit Internet Explorer getestet, da dies alles ist, was wir bei der Arbeit verwenden dürfen.
Dieser Stil ist für vollständigen Reset für Tabellen - cellpadding , Cellspacing und Grenzen .
Ich hatte diesen Stil in meiner reset.css-Datei:
table{
border:0; /* Replace border */
border-spacing: 0px; /* Replace cellspacing */
border-collapse: collapse; /* Patch for Internet Explorer 6 and Internet Explorer 7 */
}
table td{
padding: 0px; /* Replace cellpadding */
}
table th,td {
padding: 8px 2px;
}
table {
border-collapse: separate;
border-spacing: 2px;
}
Verwenden Sie einfach CSS-Auffüllregeln mit Tabellendaten:
td {
padding: 20px;
}
Und für den Randabstand:
table {
border-spacing: 1px;
border-collapse: collapse;
}
In älteren Versionen von Browsern wie Internet Explorer können jedoch aufgrund der unterschiedlichen Implementierung des Box-Modells Probleme auftreten.
Aus den W3C-Klassifikationen geht hervor, dass <table>
s nur zur Anzeige von Daten gedacht sind.
Basierend auf , dass ich fand es viel einfacher , eine zu schaffen <div>
mit den Hintergründen und all das und hat eine Tabelle mit Daten schwebend über sie mit position: absolute;
und background: transparent;
...
Es funktioniert unter Chrome, Internet Explorer (6 und höher) und Mozilla Firefox (2 und höher).
Pannen werden verwendet (oder bedeuten sowieso) einen Abstandshalter zwischen den Behälterelementen zu schaffen, wie <table>
, <div>
und <form>
nicht <tr>
, <td>
, <span>
oder <input>
. Wenn Sie es für andere Zwecke als Containerelemente verwenden, können Sie Ihre Website für zukünftige Browser-Updates anpassen.
CSS:
selector{
padding:0 0 10px 0; // Top left bottom right
}
Mit der CSS-Auffüllungseigenschaft können Sie das Auffüllen in den Tabellenzellen einfach festlegen. Dies ist eine gültige Methode, um den gleichen Effekt wie das Cellpadding-Attribut der Tabelle zu erzielen.
table,
th,
td {
border: 1px solid #666;
}
table th,
table td {
padding: 10px;
/* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Set Cellpadding in CSS</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Row</th>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Clark</td>
<td>Kent</td>
<td>clarkkent@mail.com</td>
</tr>
<tr>
<td>2</td>
<td>Peter</td>
<td>Parker</td>
<td>peterparker@mail.com</td>
</tr>
<tr>
<td>3</td>
<td>John</td>
<td>Rambo</td>
<td>johnrambo@mail.com</td>
</tr>
</tbody>
</table>
</body>
</html>
In ähnlicher Weise können Sie die Eigenschaft CSS-Rahmenabstand verwenden, um den Abstand zwischen benachbarten Tabellenzellenrändern wie das Zellenabstandsattribut anzuwenden. Um jedoch den Randabstand zu bearbeiten, muss der Wert der Eigenschaft "Randkollaps" getrennt sein, was standardmäßig der Fall ist.
table {
border-collapse: separate;
border-spacing: 10px;
/* Apply cell spacing */
}
table,
th,
td {
border: 1px solid #666;
}
table th,
table td {
padding: 5px;
/* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Set Cellspacing in CSS</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Row</th>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Clark</td>
<td>Kent</td>
<td>clarkkent@mail.com</td>
</tr>
<tr>
<td>2</td>
<td>Peter</td>
<td>Parker</td>
<td>peterparker@mail.com</td>
</tr>
<tr>
<td>3</td>
<td>John</td>
<td>Rambo</td>
<td>johnrambo@mail.com</td>
</tr>
</tbody>
</table>
</body>
</html>
Versuche dies:
table {
border-collapse: separate;
border-spacing: 10px;
}
table td, table th {
padding: 10px;
}
Oder versuchen Sie Folgendes:
table {
border-collapse: collapse;
}
table td, table th {
padding: 10px;
}
Ich benutzte !important
nach dem Grenzkollaps gerne
border-collapse: collapse !important;
und es funktioniert bei mir in IE7. Es scheint das Zellabstandsattribut zu überschreiben.
!important
wäre nur erforderlich, um andere CSS-Einstellungen in einer komplexen Situation zu überschreiben (und selbst dann meistens einen falschen Ansatz).
!important
, die als Kommentar anstelle einer anderen Antwort hätte eingefügt werden können.
<table>
<tr>
<th>Col 1</th>
<th>Col 2</th>
<th>Col 3</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
cell-padding
kann padding
in CSS angegeben werden, während cell-spacing
dies durch Festlegen der border-spacing
Tabelle festgelegt werden kann.
table {
border-spacing: 10px;
}
td {
padding: 10px;
}
Geige .
td {
padding: npx; /* For cellpadding */
margin: npx; /* For cellspacing */
border-collapse: collapse; /* For showing borders in a better shape. */
}
Wenn margin
nicht funktioniert, versuchen Sie , Set display
von tr
auf block
und dann wird Marge arbeiten.
Bei Tabellen sind Cellspace und Cellpadding in HTML 5 veraltet.
Für den Zellenabstand müssen Sie jetzt den Randabstand verwenden. Und für das Cellpadding müssen Sie Border-Collapse verwenden.
Und stellen Sie sicher, dass Sie dies nicht in Ihrem HTML5-Code verwenden. Versuchen Sie immer, diese Werte in einer CSS 3-Datei zu verwenden.
table {
border-spacing: 4px;
color: #000;
background: #ccc;
}
td {
padding-left: 4px;
}
In einer HTML-Tabelle kann das cellpadding
und cellspacing
wie folgt festgelegt werden:
Zum Auffüllen von Zellen :
Rufen Sie einfach td/th
eine einfache Zelle an padding
.
Beispiel:
table {
border-collapse: collapse;
}
td {
border: 1px solid red;
padding: 10px;
}
Für den Zellabstand
Einfach anrufen table
border-spacing
Beispiel:
/********* Cell-Spacing ********/
table {
border-spacing: 10px;
border-collapse: separate;
}
td {
border: 1px solid red;
}
Mehr Tabellenstil durch CSS-Quelllink Hier erhalten Sie mehr Tabellenstil durch CSS .
Sie können einfach so etwas in Ihrem CSS tun, indem Sie border-spacing
und padding
:
table {
border-collapse: collapse;
}
td, th {
padding: 1em;
border: 1px solid blue;
}
<table>
<tr>
<th>head_1</th>
<th>head_2</th>
<th>head_3</th>
<th>head_4</th>
</tr>
<tr>
<td>txt_1</td>
<td>txt_2</td>
<td>txt_3</td>
<td>txt_4</td>
</tr>
</table>
Wie wäre es, wenn Sie den Stil direkt zur Tabelle selbst hinzufügen? Dies wird nicht table
in Ihrem CSS verwendet. Dies ist ein schlechter Ansatz, wenn Sie mehrere Tabellen auf Ihrer Seite haben:
<table style="border-collapse: separate;border-spacing: 2px;">
<tr>
<td style="padding: 4px 4px;">Some Text</td>
</tr>
</table>
td { padding: ... }
oder table { border-spacing: ... }
, statt sie direkt an den Tisch anwenden. Die fügen nichts hinzu. Wie gesagt, wenn Sie mehrere Tabellen auf Ihrer Seite haben und diese nicht beeinflussen möchten, möchten Sie dies nicht! Wir brauchen keine ganze Seite mit Antworten mit der Aufschrift "Verwenden Sie das Stylesheet!", Wenn dies möglicherweise das Letzte ist, was Sie möchten, da Sie nur eine Zelle oder Tabelle formatieren möchten. Das ist, wenn es angewendet wird table
oder td
unerwünscht ist und das Erstellen einer ganz neuen Klasse dafür ist übertrieben.
table#someId
).
Ich schlage vor, dass dies und alle Zellen für die bestimmte Tabelle betroffen sind.
table.tbl_classname td, th {
padding: 5px 5px 5px 4px ;
}
Sie können den folgenden Code überprüfen, indem Sie einfach einen erstellen index.html
und ausführen.
<!DOCTYPE html>
<html>
<head>
<style>
table{
border-spacing:10px;
}
td{
padding:10px;
}
</style>
</head>
<body>
<table cellspacing="0" cellpadding="0">
<th>Col 1</th>
<th>Col 2</th>
<th>Col 3</th>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
</body>
</html>
AUSGABE :
width:auto
dannborder-collapse
möglicherweise nicht wie erwartet.