行とセルが2段階で浮き上がる立体テーブルを作る方法【HTML/CSS・サンプルコード付き】

テーブル

行とセルが2段階で浮き上がる立体テーブルを作る方法

行とセルが2段階で浮き上がる立体テーブルを作る方法を紹介します。このサンプルではHTMLとCSSを使用し、一覧表の各データ行へマウスカーソルを合わせると行全体が浮き上がり、さらに個別のセルへカーソルを合わせると、そのセルだけがもう一段階手前へ浮き上がるテーブルを作成します。通常の平面的な表とは異なり、影やグラデーションを組み合わせることで立体感のある見た目にしています。

テーブルには「名前」「部署」「役職」の3列を用意し、各行をカードのように分離して表示します。通常時から各行の下側へ厚みを感じる影を付け、行へマウスオーバーすると上方向へ移動して1段階目の浮き上がりを表現します。その状態でセルへカーソルを合わせると、対象セルだけがさらに上方向へ移動し、背景色と影も変化するため、現在見ているデータを視覚的に確認しやすくなります。

HTMLでは見出しや各セルの表示内容を変更でき、CSSではテーブル全体の横幅、行同士の間隔、セルの余白、背景色、角丸、影、浮き上がる距離、アニメーション速度などを調整できます。画面幅が狭い場合はテーブル部分を横方向へスクロールでき、640px以下ではセルの余白と文字サイズも小さくなるため、スマートフォン・タブレット・PCで利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

2段階で浮き上がる立体テーブル

行へマウスカーソルを合わせると1段階浮き上がり、セルへ合わせるとさらにもう1段階浮き上がります。

名前 部署 役職
山田 太郎 営業部 主任
佐藤 花子 総務部 担当
鈴木 一郎 開発部 リーダー

行全体が少し浮き上がったあと、カーソルを合わせたセルだけがさらに手前へ浮き上がります。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン表示対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>行とセルが2段階で浮き上がる立体テーブル</title>

  <!-- CSSファイルを読み込み -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- テーブル全体 -->
  <div class="three-dimensional-table_wrap">

    <!-- タイトル -->
    <div class="three-dimensional-table_title">
      2段階で浮き上がる立体テーブル
    </div>

    <!-- 説明文 -->
    <p class="three-dimensional-table_text">
      行へマウスカーソルを合わせると1段階浮き上がり、セルへ合わせるとさらにもう1段階浮き上がります。
    </p>

    <!-- テーブル表示エリア -->
    <div class="three-dimensional-table_area">

      <!-- 一覧表 -->
      <table class="three-dimensional-table">

        <!-- 見出し行 -->
        <thead>
          <tr>
            <th>名前</th>
            <th>部署</th>
            <th>役職</th>
          </tr>
        </thead>

        <!-- データ行 -->
        <tbody>

          <tr>
            <td>山田 太郎</td>
            <td>営業部</td>
            <td>主任</td>
          </tr>

          <tr>
            <td>佐藤 花子</td>
            <td>総務部</td>
            <td>担当</td>
          </tr>

          <tr>
            <td>鈴木 一郎</td>
            <td>開発部</td>
            <td>リーダー</td>
          </tr>

        </tbody>

      </table>

    </div>

  </div>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLでは「名前」「部署」「役職」の3列を持つテーブルを作成し、CSSではヘッダーや各データ行の色、影、角丸、行同士の間隔、マウスオーバー時の浮き上がりを設定します。行へマウスカーソルを合わせると行全体が1段階浮き上がり、そのまま個別のセルへ合わせると対象セルだけがさらにもう1段階浮き上がります。

sample/
├── index.html
└── style.css

各ファイルの役割
index.htmlはテーブル全体を構成するファイルです。タイトル、説明文、列見出し、各行の「名前」「部署」「役職」の内容を変更できます。行や列を追加したい場合も、theadやtbody内のtr、th、tdを編集して表示内容を調整できます。

style.cssはテーブル全体のデザインと浮き上がる動きを設定するファイルです。全体の横幅や余白、ヘッダーの色、各行の背景色、行同士の間隔、角丸、影、行とセルが浮き上がる距離、アニメーション速度などを変更できます。

設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置します。2つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。表示されたデータ行へマウスカーソルを合わせると行全体が上方向へ浮き上がります。その状態で各セルへカーソルを合わせると、対象セルだけがさらに上方向へ浮き上がります。

カスタマイズできる内容
index.htmlでは「2段階で浮き上がる立体テーブル」のタイトル、説明文、「名前」「部署」「役職」の列見出し、各セルの表示内容を変更できます。tbody内のtrを追加するとデータ行を増やすことができ、各tr内のtdを編集すると表示する内容を変更できます。

style.cssではテーブル全体の最大横幅、内側余白、背景色、ヘッダーのグラデーション、各行の背景色、セルの文字色、角丸、影を変更できます。また、行とセルに設定しているtranslateY()を変更すると浮き上がる距離を調整でき、transitionを変更すると動きの速さを調整できます。

数値調整
style.css
max-width:760px;
テーブル全体の最大横幅です。値を大きくすると全体が横に広がり、小さくするとコンパクトになります。

margin:40px auto;
テーブル全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。

padding:36px 32px 48px;
テーブル全体の内側余白です。上36px、左右32px、下48pxを変更すると、内容と外枠との間隔が変わります。

border-radius:18px;
テーブル全体を囲む部分の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

min-width:560px;
テーブル本体の最小横幅です。画面幅が560pxより狭い場合は、表示エリア内で横方向へスクロールして確認できます。

border-spacing:0 12px;
各データ行同士の縦方向の間隔です。12pxを大きくすると行同士の間隔が広がり、小さくすると近づきます。

padding:15px 18px;
見出しセルとデータセルの内側余白です。上下15pxを大きくすると行が高くなり、左右18pxを大きくすると文字とセル端の間隔が広がります。

border-bottom:5px solid #1e40af;
ヘッダー下側の厚みです。5pxを大きくするとヘッダーの立体感が強くなり、小さくすると薄く見えます。

drop-shadow(0 5px 0 #cbd5e1)
通常時のデータ行に付ける厚みです。5pxを大きくすると行の厚みが強く見え、小さくすると控えめになります。

transform:translateY(-5px);
行へマウスカーソルを合わせたときに上方向へ移動する距離です。5pxを大きくすると1段階目の浮き上がりが強くなり、小さくすると控えめになります。

drop-shadow(0 10px 0 #bfdbfe)
浮き上がった行の下側に表示する厚みです。10pxを大きくすると行がより高く浮いているように見えます。

transform:translateY(-4px);
セルへマウスカーソルを合わせたときに、浮き上がった行からさらに上方向へ移動する距離です。4pxを大きくすると2段階目の浮き上がりが強くなり、小さくすると控えめになります。

box-shadow:0 4px 0 #93c5fd, ...
浮き上がったセルの下側に付ける厚みと影です。4pxを大きくするとセルの厚みが強く見えます。

transition:transform .2s ease, filter .2s ease;
行が浮き上がる動きにかかる時間です。0.2秒で変化します。値を大きくするとゆっくり、小さくすると速く動きます。

transition:transform .2s ease, background .2s ease, box-shadow .2s ease;
セルの移動、背景色、影が切り替わる時間です。0.2秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:760pxにより、画面幅に合わせてテーブル全体が縮小されます。テーブル本体にはmin-width:560pxを設定し、表示エリアへoverflow-x:auto;を指定しているため、横幅が足りない場合は横方向へスクロールして確認できます。また、640px以下では全体の余白を28px 18px 38pxへ変更し、セルの余白を13px 14px、文字サイズを14pxへ変更しているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント