CSSでセルパディングとセルスペースを設定しますか?


3317

HTMLテーブルでは、cellpaddingおよびcellspacingは次のように設定できます。

<table cellspacing="1" cellpadding="1">

CSSを使用して同じことをどのように達成できますか?


6
一般的な提案ですが、これらのソリューションを試す前に、style.cssがテーブルを「リセット」するかどうかを確認してください。例:あなたがに設定されたテーブルがない場合はwidth:auto、次にborder-collapse期待通りに動作しない場合がありますが。
PJ Brunet 2016

1
テーブルではborder-spacingを、tdではパディングを使用します。
Anubhav 2017年

回答:


3555

基本

CSSで「セルパディング」を制御するにはpadding、テーブルセルで単純に使用できます。たとえば、10pxの "cellpadding"の場合:

td { 
    padding: 10px;
}

「セルスペース」の場合、border-spacingCSSプロパティをテーブルに適用できます。たとえば、「セルスペース」の10pxの場合:

table { 
    border-spacing: 10px;
    border-collapse: separate;
}

このプロパティでは、水平方向と垂直方向の間隔を個別に設定することもできます。これは、昔ながらの「セルスペース」ではできなかったものです。

IEの問題<= 7

これはInternet Explorer 7までのInternet Explorerを除き、ほとんどすべての一般的なブラウザーで機能します。これらのブラウザborder-collapseは、隣接するテーブルセルの境界線をマージするプロパティをサポートしているため、「ほぼ」と言います。セルスペースを削除しようとしている場合(つまり、cellspacing="0"border-collapse:collapse、同じ効果が得られます:テーブルのセル間にスペースがありません。ただし、このサポートはcellspacing、table要素の既存のHTML属性を上書きしないため、バグがあります。

つまり、Internet Explorer 5〜7以外のブラウザの場合border-spacingは、あなたに対応します。Internet Explorerの場合、状況が正しい(セルスペースが0で、テーブルにまだ定義されていない)場合は、を使用できますborder-collapse:collapse

table { 
    border-spacing: 0;
    border-collapse: collapse;
}

注:テーブルに適用できるCSSプロパティの概要と、どのブラウザーについては、この素晴らしいQuirksmodeページを参照してください


27
cellpadding = "0"は、テーブルにborder-collapse:collapseおよびborder-spacingが適用されている場合でも、Chrome 13.0.782.215で違いを生む可能性があります。
ホイットニーランド、2011

7
パディングを設定する必要がある@LeeWhitney:テーブルセルに0。
MartinØrding-Thomsen、

7
少し外れたトピックですが、HTML5ではcellpadding属性とcellspacing属性が削除されているため、CSSが唯一の方法です。
Ignas2526 2013年

12
こんにちは、みんな。わかりやすくするために、セルパディングに関するセクションを含めて、答えを明確に更新しました(「パディング」を使用するだけです)。それが今より便利であることを願っています。
Eric Nguyen

4
確かに、@ vapcguy、テーブルをスタイリングしている可能性のある他の無限に変化する状況では、より具体的なセレクターを定義する必要があります。上記は例としてマークされています。
Eric Nguyen

942

デフォルト

ブラウザのデフォルトの動作は次と同等です。

table {border-collapse: collapse;}
td    {padding: 0px;}

         ここに画像の説明を入力してください

セルパディング

セルの内容とセルの壁の間のスペースの量を設定します

table {border-collapse: collapse;}
td    {padding: 6px;}

        ここに画像の説明を入力してください

セルスペース

表のセル間のスペースを制御します

table {border-spacing: 2px;}
td    {padding: 0px;}

        ここに画像の説明を入力してください

どちらも

table {border-spacing: 2px;}
td    {padding: 6px;}

        ここに画像の説明を入力してください

両方(特別)

table {border-spacing: 8px 2px;}
td    {padding: 6px;}

        ここに画像の説明を入力してください

注:border-spacing設定されている場合border-collapse、テーブルのプロパティがであることを示しますseparate

ぜひお試しください!

ここでは、これを実現する古いHTMLの方法を見つけることができます。


1
テーブルの周りのスペースはどのように消えていますか?私は「国境の間隔を設定する場合:!。8px 12ピクセルを、それは間が、表の境界線と外側の細胞の間だけではない間隔追加されます。しかし、ここでの画像に描かれていない。彼らは左揃えです
カズ

1
@ 2astalavistaそして残念ながら、誰かが外部の間隔の効果を削除したい場合、これらのCSS属性ではこのように機能しません。
Kaz

@Kaz迷惑な部分を隠すために負のマージンを使用する必要があるかもしれません。

2
TDのデフォルトのパディングは通常0ではなく1pxです
Jan M

341
table
{
    border-collapse: collapse; /* 'cellspacing' equivalent */
}

table td, table th
{
    padding: 0; /* 'cellpadding' equivalent */
}

2
これは実際には私が作業できる唯一のことですが、過度に一般的であることを避けるためにIDに情報を適用しました。
Kzqai

20
それはcellspacing=0同等です。の同等物cellspacing=1は完全に異なります。受け入れられた答えを見てください。
TRiG

3
べきではないtable tdtable thだけあることtdth、それぞれ?どちらの方法でも機能しますが、セレクターが小さいほど、マッチングがわずかに速くなります
Cole Johnson

1
@Cole実は、私はそれがあるべきだと思うtable > tr > tdtable > tr > th。これはtrおよびとほぼ同じ速度でth、ネストされたテーブルがある場合に機能することが保証されています。Just my 2c
leviathanbadger 2013

@ aboveyou00しかし、tableセレクターは必要ですか?IIRC、<td>は内にない限り無効<tr>です。
Cole Johnson

114

テーブルセルにマージンを設定しても、私の知る限り実際には効果がありません。に対応する本当のCSS cellspacingborder-spacing-ですが、Internet Explorerでは機能しません。

を使用border-collapse: collapseしてセルの間隔を確実に0に設定することはできますが、他の値については、ブラウザー間での唯一の方法はcellspacing属性を使い続けることだと思います。


47
今日の時代では、現実はN番目の程度の吸引力です。
ジョンK

7
これはほぼ正しいですがborder-collapse、テーブルにまだcellspacing属性が定義されていない場合にのみIE 5-7で機能します。役立つ場合に備えて、このページの他の回答のすべての正しい部分をマージする包括的な回答を書きました。
エリックグエン

正直なところ、誰がInternet Explorerを気にしていますか?それを使用する人は誰でも、壊れたWebサイトが彼らの責任であることを知っているはずです- そのような低品質のブラウザを使用するために。Webサイトはこれに対処する必要はありません。Internet Explorerが失われるようにします。それのサポートを忘れてください。私たちはそれを必要としません、そしてそれは開発するのが苦痛です。

99

このハックは、Internet Explorer 6以降、Google Chrome、Firefox、Operaで機能します

table {
    border-collapse: separate;
    border-spacing: 10px; /* cellspacing */
    *border-collapse: expression('separate', cellSpacing = '10px');
}

table td, table th {
    padding: 10px; /* cellpadding */
}

*宣言は、Internet Explorer 6および7のためであり、他のブラウザでは正しくそれを無視します。

expression('separate', cellSpacing = '10px')が返さ'separate'れますが、JavaScriptの場合のように両方のステートメントが実行され、予想よりも多くの引数を渡すことができ、それらすべてが評価されます。


応答メールをしようとするものであり、*は見通しによって認識されないことに注意してください2007+(レンダリングエンジンとしての用途・ワード)のためのcampaignmonitor.com/css
PTIM

71

ゼロ以外のセルスペース値が必要な場合は、次のCSSでうまくいきましたが、Firefoxでしかテストできません。

互換性の詳細については、他の場所掲載されているQuirksmodeリンクを参照してください。古いバージョンのInternet Explorerでは動作しない可能性があります。

table {
    border-collapse: separate;
    border-spacing: 2px;
}

54

この問題の簡単な解決策は次のとおりです。

table
{
    border: 1px solid #000000;
    border-collapse: collapse;
    border-spacing: 0px;
}
table td
{
    padding: 8px 8px;
}

49

また、必要に応じてcellspacing="0"、スタイルシートに追加することborder-collapse: collapseを忘れないでくださいtable


43

セルの内容をdivでラップすると、好きなことができますが、列のすべてのセルをラップして均一な効果を得る必要があります。たとえば、左右のマージンを広くするには、次のようにします。

CSSは

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>

はい、それは面倒です。はい、Internet Explorerで動作します。実際、私はこれをInternet Explorerでのみテストしました。これは、私たちが仕事で使用できるすべてのことだからです。


もっと賛成したいと思います...他のユーザーを繰り返さなかった最初の例と、ページ上のすべてのセルではなく、単一のテーブルまたはセルに効果を制限する方法を示す1つの例!!!
vapcguy 2015

23

ちょうどborder-collapse: collapseあなたのテーブルのpaddingために、thまたはのために使用してくださいtd


21

このスタイルは、テーブルセルパディングセルスペース、および境界線)を完全にリセットするためのものです。

私は自分のreset.cssファイルにこのスタイルがありました:

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 */
}

20

TBH。CSSのすべての狂気についてcellpadding="0" cellspacing="0"は、非推奨ではないため、単に使用することもできます...

のマージンを示唆している他の誰も<td>がこれを試したことはありません。


35
これらは実際にはhtml5では非推奨です。
Kzqai


17

テーブルデータでCSSパディングルールを使用するだけです。

td { 
    padding: 20px;
}

そしてボーダーの間隔について:

table { 
    border-spacing: 1px;
    border-collapse: collapse;
}

ただし、ボックスモデルのdiff実装のため、Internet Explorerなどの古いバージョンのブラウザーでは問題が発生する可能性があります。


15

W3Cの分類から私が理解していることから、は<table>データを「のみ」表示することを目的としています。

これに基づい<div>て、背景などを使用してを作成し、データをフロートさせたテーブルを使用してposition: absolute;background: transparent;...

Chrome、Internet Explorer(6以降)、Mozilla Firefox(2以降)で動作します。

マージンはコンテナ要素、等の間のスペーサーを作成するために使用される(またはとにかく意味する)され<table><div>そして<form>、ではない<tr><td><span>または<input>。コンテナ要素以外に使用すると、将来のブラウザの更新に合わせてWebサイトを調整するのに忙しくなります。


7
OPは、彼が何のためにテーブルを使用していたのかを述べたことはありません。
アルファブラボ


12

CSSのpaddingプロパティを使用して、テーブルセル内のパディングを簡単に設定できます。これは、テーブルのcellpadding属性と同じ効果を生み出す有効な方法です。

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>

同様に、CSSのborder-spacingプロパティを使用して、cellspacing属性のように、隣接するテーブルセルの境界線の間隔を適用できます。ただし、border-spacingを機能させるには、border-collapseプロパティの値を個別に設定する必要があります。これがデフォルトです。

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>


10

これを試して:

table {
    border-collapse: separate;
    border-spacing: 10px;
}
table td, table th {
    padding: 10px;
}

またはこれを試してください:

table {
    border-collapse: collapse;
}
table td, table th {
    padding: 10px;
}

9

!importantはボーダー崩壊の後に使用しました

border-collapse: collapse !important;

IE7で動作します。Cellspacing属性をオーバーライドするようです。


9
!important複雑な状況で他のCSS設定をオーバーライドする場合にのみ必要です(そして、それでもほとんどの場合、間違ったアプローチです)。
Jukka K. Korpela、2013年

1
また、Danの回答の繰り返しです!important。別の回答の代わりにコメントとして含めることができたを追加するだけです。
vapcguy 2015

8
<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-paddingpaddingCSS で指定できますが、テーブルのcell-spacing設定で設定できborder-spacingます。

table {
    border-spacing: 10px;
}
td {
    padding: 10px;
}

フィドル


6
td {
    padding: npx; /* For cellpadding */
    margin: npx; /* For cellspacing */
    border-collapse: collapse; /* For showing borders in a better shape. */
}

場合はmargin仕事しませんでした、設定しようとするdisplaytrに対してblock、次にマージンが動作します。


5

テーブルの場合、cellspacingとcellpaddingはHTML 5では廃止されました。

今度はセルスペースの場合は、ボーダースペースを使用する必要があります。そして、セルパディングのためには、border-collapseを使用する必要があります。

また、これをHTML5コードで使用しないでください。これらの値は常にCSS 3ファイルで使用するようにしてください。



4

HTMLテーブルでは、cellpaddingおよびcellspacingは次のように設定できます。

以下のためのセルのパディング

単純なtd/thセルを呼び出すだけpaddingです。

例:

table {
    border-collapse: collapse;
}

td {
  border: 1px solid red;
  padding: 10px;
}

以下のためのセル間隔

単純に電話する table border-spacing

例:

/********* Cell-Spacing   ********/
table {
    border-spacing: 10px;
    border-collapse: separate;
}

td {
  border: 1px solid red;
}

CSSソースリンクの詳細なテーブルリンクここに、CSSの詳細なテーブルスタイルがあります


3

あなたは、単に使用して、あなたのCSSでこのような何かを行うことができますborder-spacingし、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>


ボーダーが縮小されている場合、ボーダー間隔ルールは無視されます。
dgrogan 2017

0

スタイルをテーブル自体に直接追加してみませんか?これはtableCSS で使用するのではなく、ページに複数のテーブルがある場合の悪いアプローチです。

<table style="border-collapse: separate;border-spacing: 2px;">
    <tr>
        <td style="padding: 4px 4px;">Some Text</td>
    </tr>
</table>

2
スタイルをコンテンツから分離する必要があるため、テーブルタグに「スタイル」を配置することは、CSSに「table#someId」を配置するよりも悪いです。しかし、問題の主なポイントは、非推奨のhtmlを適切なcssに変換する方法です。あなたは正しく行いましたが、答えに何も追加しておらず、無関係な問題に焦点を当てています。
Teepeemm 2015年

1
何も追加されていませんか?!私が追加したのは、ここでの他のすべての回答が基本的にtd { padding: ... }or を使用するように言っていることに焦点table { border-spacing: ... }を当てることでした。それらは何も追加しません。すでに述べたように、ページに複数のテーブルがあり、それらに影響を与えたくない場合は、これを望まないでしょう。「スタイルシートを使用してください!」という回答のページ全体を必要としないのは、たぶんそれが最後に必要な場合です。1つのセルまたはテーブルの書式設定だけが必要なためです。それはそれを適用するtabletd望ましくない場合であり、そのためのまったく新しいクラスを作成することはやり過ぎです。
vapcguy 2015年

1
元の質問は「CSSでこれを行うにはどうすればよいですか」であったため、他のすべての回答ではスタイルシートを使用しています。「CSSでこの1つのテーブルだけに影響を与えるにはどうすればよいですか」という質問だった場合は、あなたの答えがより適切になります(ただし、私はそれでも支持しますtable#someId)。
Teepeemm 2015年

2
技術的には、インラインスタイル設定はCSSであり、スタイルシートを使用しないだけですが、私はあなたの要点を理解します。
vapcguy 2015

1
クラスの背後にあるアイデアは再利用性のためです。一回限りの場合、それはほとんど意味がなく、やり過ぎです、IMHO。
vapcguy 2015

0

これと特定のテーブルのすべてのセルが影響を受けることをお勧めします。

table.tbl_classname td, th {
    padding: 5px 5px 5px 4px   ;
 }


0

以下のコードをチェックして、を作成しindex.htmlて実行するだけです。

<!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>

出力:

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.