表の空白にさようなら! CSSで空のセルの罫線をスマートに表示する

2024-04-06

CSSで空のセルの罫線を表示する方法

方法

  1. 以下のコードをHTMLファイルに追加します。
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>空のセルの罫線を表示</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }
    td {
      border: 1px solid black;
      padding: 5px;
    }
  </style>
</head>
<body>
  <table>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td>データ</td>
      <td></td>
    </tr>
  </table>
</body>
</html>
  1. 上記のコードでは、table 要素に border-collapse: collapse; プロパティを設定しています。これは、テーブルのセル間の余白をなくすために必要です。
  2. 次に、td 要素に border: 1px solid black; プロパティを設定しています。これは、すべてのセルの罫線を1pxの黒線で表示します。
  3. 最後に、empty-cells プロパティを設定します。このプロパティは、空のセルの罫線を表示するかどうかを指定します。

empty-cells プロパティの値

  • show: 空のセルの罫線を表示します。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>空のセルの罫線を表示</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }
    td {
      border: 1px solid black;
      padding: 5px;
    }
    
    /* 空のセルの罫線を表示 */
    table {
      empty-cells: show;
    }
  </style>
</head>
<body>
  <table>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td>データ</td>
      <td></td>
    </tr>
  </table>
</body>
</html>

上記のように、empty-cells プロパティを show に設定すると、空のセルの罫線も表示されます。




<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>空のセルの罫線を表示</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }
    td {
      border: 1px solid black;
      padding: 5px;
    }
    
    /* 空のセルの罫線を表示 */
    table {
      empty-cells: show;
    }
  </style>
</head>
<body>
  <h2>空のセルの罫線を表示</h2>
  <table>
    <tr>
      <th></th>
      <th></th>
      <th></th>
    </tr>
    <tr>
      <td>データ</td>
      <td></td>
      <td>データ</td>
    </tr>
    <tr>
      <td></td>
      <td>データ</td>
      <td></td>
    </tr>
  </table>
  
  <h2>空のセルの罫線を表示しない</h2>
  <table>
    <tr>
      <th></th>
      <th></th>
      <th></th>
    </tr>
    <tr>
      <td>データ</td>
      <td></td>
      <td>データ</td>
    </tr>
    <tr>
      <td></td>
      <td>データ</td>
      <td></td>
    </tr>
  </table>
</body>
</html>

上記は、空のセルの罫線を表示するサンプルコードです。

  • 最初の table 要素には、empty-cells: show; プロパティを設定しています。これは、空のセルの罫線を表示します。

実行結果

上記コードを実行すると、以下のようになります。

補足

  • empty-cells プロパティは、IE 8 以前ではサポートされていません。
  • empty-cells プロパティは、border-collapse プロパティが collapse に設定されている場合のみ有効です。
  • empty-cells プロパティは、border-styleborder-widthborder-color などのプロパティと組み合わせて使用することができます。
  • empty-cells プロパティは、thead、tbody、tfoot 要素にも適用することができます。



空のセルの罫線を表示するその他の方法

  1. border-spacing プロパティを使う

border-spacing プロパティは、セルの間の余白を指定します。このプロパティを使って、セルの間の余白を0に設定することで、空のセルの罫線を表示することができます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>空のセルの罫線を表示</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
      border-spacing: 0;
    }
    td {
      border: 1px solid black;
      padding: 5px;
    }
  </style>
</head>
<body>
  <table>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td>データ</td>
      <td></td>
    </tr>
  </table>
</body>
</html>

上記のように、border-spacing プロパティを 0 に設定すると、セルの間の余白がなくなり、空のセルの罫線が表示されます。

::before 疑似要素を使って、空のセルにコンテンツを挿入することができます。このコンテンツには、罫線を表示するための要素を含めることができます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>空のセルの罫線を表示</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }
    td {
      border: 1px solid black;
      padding: 5px;
    }
    
    td::before {
      content: "";
      display: block;
      border-top: 1px solid black;
      width: 100%;
    }
  </style>
</head>
<body>
  <table>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td>データ</td>
      <td></td>
    </tr>
  </table>
</body>
</html>

上記のように、::before 疑似要素を使って、空のセルに上罫線を挿入することができます。

background-image プロパティを使って、空のセルの背景に罫線画像を設定することができます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>空のセルの罫線を表示</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }
    td {
      border: 1px solid black;
      padding: 5px;
    }
    
    td:empty {
      background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAOYktHRkMAAABKAAAACQBAAAUwAQAAAAkAAAB4mAAAADwAAAAoAAAAIAAAACgAAAAQAAAAIAAAACQAAAAEAAAACQAAAAEAAAACgAAAAQAAAAIAAAACQAAAAEAAAACQAAAAEAAAACgAAAAQAAAAIAAAACQAAAAEAAAACQAAAAEAAAACgAAAAQAAAAIAAAACQAAAAEAAAACQAAAAEAAAACgAAAAQAAAAIAAAACQAAAAEAAAACQAAAAEAAAACgAAAAQAAAAIAAAACQAAAAEAAAACQAAAAEAAAAC

css


【保存版】dl要素の横並びレイアウト:Flexbox、float & margin、display: table の詳細解説

方法1:Flexboxを使うFlexboxは、要素を柔軟にレイアウトするためのCSSレイアウトモジュールです。Flexboxを使ってdtとddを同じ行に配置するには、以下の手順を行います。dl要素にdisplay: flex;を設定します。...


CSSの奥深さ: 前の兄弟要素を選択する5つの方法とその注意点

しかし、いくつかのテクニックを組み合わせることで、前の兄弟要素を選択することが可能です。例:上記の例では、h1要素の直後に続くp要素を赤色にしています。2つ目の例では、h1要素が最後の要素ではない場合にのみ、その後のp要素を青色にしています。...


【超解説】HTML/CSSで長い単語をきれいに折り返す

word-break プロパティは、長い単語をどのように折り返すかを指定するために使用されます。以下の値を設定できます。normal: 単語は折り返されません。break-all: 単語は任意の位置で折り返されます。break-word: 単語はハイフンで区切って折り返されます。...


もう迷わない!IFRAMEコンテンツのCSS装飾:JavaScript&CSSで実現する2つの方法

Iframeは、別のWebページを埋め込むためのHTML要素です。しかし、Iframe内のコンテンツのスタイルを直接制御することはできません。これは、Iframe内のコンテンツが別々のドメインでホストされているためです。しかし、JavaScriptとCSSを使用して、Iframe内のコンテンツのボディスタイルをある程度オーバーライドすることは可能です。この方法は、Iframe内のコンテンツの外観を調整したり、特定の要素を非表示にしたりするのに役立ちます。...


親要素のサイズに関わらず中央に配置!position: absolute要素の配置方法

この方法は、親要素の基準点から子要素を相対的に配置します。HTMLCSSこの方法の利点は、親要素の高さが分からなくても中央に配置できることです。注意点子要素の幅と高さが固定されている必要があります。親要素に position: relative を設定する必要があります。...