TIPSWEB制作の備忘録

ホーム > WEB制作の備忘録 > tableセルに斜線を入れてみる

tableセルに斜線を入れてみる

公開:2026.04.17 

今回は、tableのセルに斜線を入れる方法をご紹介します。
次のtableのような仕上がりになります。

こちらがth こちらがtd
こちらがth2 こちらがtd2 こちらがtd2-2
こちらがth3 こちらがtd3 こちらがtd3-2

このtableを作るためのHTMLとCSSはこちらです。
では、簡単に解説していきます。

HTML
<table class="table-defo table-border-all">
  <tbody>
    <tr>
      <th>こちらがth</th>
      <td>こちらがtd</td>
      <td class="table-defo-diagonal-line"></td>
    </tr>
    <tr>
      <th>こちらがth2</th>
      <td>こちらがtd2</td>
      <td>こちらがtd2-2</td>
    </tr>
    <tr>
      <th>こちらがth3</th>
      <td>こちらがtd3</td>
      <td>こちらがtd3-2</td>
    </tr>
  </tbody>
</table>
CSS
.table-defo-diagonal-line {
  background-image: linear-gradient(to left top, transparent calc(50% - 0.5px), #777 50%, #777 calc(50% + 0.5px), transparent calc(50% + 1px)) !important;
}

HTMLについて

斜線をつけたいセルに「.table-defo-diagonal-line」というクラスを設定しています。

クラスは使わずに「:empty」という擬似要素で斜線をつける設定でも作れます。
ですが、空白のセルだけどここは斜線を引きたくないな~というときに不便だったりするので、今回はクラスで設定しました。

HTML
<table class="table-defo table-border-all">
  <tbody>
    <tr>
      <th>こちらがth</th>
      <td>こちらがtd</td>
      <td class="table-defo-diagonal-line"></td><!--斜線にする-->
    </tr>
    <tr>
      <th>こちらがth2</th>
      <td>こちらがtd2</td>
      <td>こちらがtd2-2</td>
    </tr>
    <tr>
      <th>こちらがth3</th>
      <td>こちらがtd3</td>
      <td>こちらがtd3-2</td>
    </tr>
  </tbody>
</table>

tableの斜線用CSS

「background-image」の「linear-gradient」で斜線を作成しています。
「linear-gradient」の()の中で、どのような設定をしているか簡単に説明していきます。

CSS
.table-defo-diagonal-line {
  background-image: linear-gradient(to left top, transparent calc(50% - 0.5px), #777 50%, #777 calc(50% + 0.5px), transparent calc(50% + 1px)) !important;
}

線を引く方向の設定

()内の「to left top」は、グラデーションが進む方向を指定しています。
今回は「左上に向かって」進むように設定しました。
始点が右下、左上に向かってグラデーションになる状態です。
実際にグラデーションにしてみると、こんな感じになります。↓

光の三原色~と思って色を設定したけど、某掃除機みたいな色になっちゃったな。
赤:始点右下、青:中間、緑:終点左上…というグラデーションです。
この「青:中間」が、左下から右上に向かって斜めになっています。
これが、今回作成する線を引く方向になっています。

線の色と太さの設定

次に、線の色と太さを設定します。

  • transparent calc(50% – 0.5px)
    始点(右下)から中間(50%)のわずか手前までを「透明」にします。
  • #777 50%
    中間(50%)の地点で色をグレー(#777)にします。
    これがなくても斜線は引けるのですが、なんか色薄くね?と思ったので色を濃くするために入れています。
  • #777 calc(50% + 0.5px)
    中央から0.5px進んだ地点までグレーを維持します。
    これにより、中央付近で合計1px分(-0.5pxから+0.5pxまで)のグレーの厚みが生まれます。
  • transparent calc(50% + 1px)
    そこから先を再び「透明」にします。

最後の「!important」は、あってもなくてもどちらでもいいです。
他のbackgroundの指定に負けないようにつけていますが、不要であれば消してください。

斜線を引く方向を変える場合

次のCSSのように、「left top」を「right top」に変更してください。

CSS
.table-defo-diagonal-line-reverse {
  background-image: linear-gradient(to right top, transparent calc(50% - 0.5px), #777 50%, #777 calc(50% + 0.5px), transparent calc(50% + 1px)) !important;
}

このように、左上から右下への斜線に変わります。

こちらがth こちらがtd
こちらがth2 こちらがtd2 こちらがtd2-2
こちらがth3 こちらがtd3 こちらがtd3-2

まとめ

正直あまりつかうことはないと思うんですけどね。私も実務で使ったのは一回きりでしたし。
当時どうやって斜線入れるんだ~??と困ったので、備忘録として残しておこうと思います。

今回はクラスで斜線のセルを指定しましたが、空白のセルは全て斜線にしたい場合は「:empty」を使ってみてください。
「:empty」を使う場合、スペースで空白が入力されていないか注意が必要です。

他にもtable関連の記事を作っていますので、よろしければご参考にどうぞ。