レスポンシブデザインのサイトで、表(Table)の扱いは頭を悩ませるところです。
今回は、そういったテーブルをjQueryプラグイン「Basic Table」を用いて比較的手軽にレスポンシブ化する方法の紹介です。
この記事では、以下のような通常のテーブルを
以下のような表示にするWordpressのカスタマイズ方法を紹介します。
目次
Basic Tableとは
Basic Tableは、見出しセルを複製しデータ並び替えることで、狭い画面でも見やすくテーブルを表示してくれる、jQueryプラグインです。
デモページの表で説明すると、以下のようなテーブルを
以下のように表示させることができます。
jQueryでオプションを指定することで、レスポンシブ表示するブレークポイントを指定したり、テーブルが長くなりすぎることを防ぐため、レスポンシブ後のテーブルの高さなどを制限したりすることができます。
Basic Tableの使い方
Basic TableをWordpressで利用するには、主に以下の手順が必要です。
- Basic Tableのダウンロード&設置
- CSSファイルの呼び出し
- スクリプトの呼び出し
- レスポンシブテーブルのスタイルを設定
複雑な、jQueryコードなどは書く必要がないので、自前でコードを書くよりは簡単に設置できるかと思います。
Basic Tableのダウンロード&設置
まずは、jerrylow/basictableから、zipファイルをダウンロードします。
ダウンロードが完了したら、zipファイルを解凍し、中にある以下のファイルを使用します。
- basictable.css
- jquery.basictable.min.js
今回の例では、これらのファイルを以下のように設置しました。
- 子テーマフォルダ/css/basictable.css
- 子テーマフォルダ/js/jquery.basictable.min.js
CSSファイルの呼び出し
次に、<head></head>内でCSSファイルを呼び出します。
呼び出すコードは、以下のようになります。
<!-- 子テーマで呼び出すとき --> <link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(); ?>/css/basictable.css" /> <!-- 親テーマで呼び出すとき --> <!-- <link rel="stylesheet" type="text/css" href="<?php echo get_template_directory_uri(); ?>/css/basictable.css" /> -->
コメントアウトしてあるところは、親テーマで利用する場合のコードです。環境に合わせて利用し、不要なら削除してください。
スクリプトの呼び出し
次に、フッターの</body>手前に、以下のように書き込みます。
<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri(); ?>/js/jquery.basictable.min.js"></script> <!-- 親テーマで呼び出すとき --> <!-- <script type="text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/jquery.basictable.min.js"></script> --> <script type="text/javascript"> jQuery(document).ready(function() { jQuery('#table').basictable(); }); </script>
こちらでは、Basic Tableのスクリプトファイルを呼び出し、テーブルをレスポンシブ化する実行コードを書きます。コメントアウトしてある部分は、環境に合わせて利用もしくは削除してください。
簡単に説明しておくと、以下の部分でJavaScriptファイルを読み込んでいます。
<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri(); ?>/js/jquery.basictable.min.js"></script>
で、以下の部分が実行コードです。今回の例では、IDが"table"のテーブルをレスポンシブ化するように設定しています。
<script type="text/javascript"> jQuery(document).ready(function() { jQuery('#table').basictable(); }); </script>
ページが読み込まれた時点で、テーブルのレスポンシブ化を実行します。
レスポンシブテーブルのスタイルを設定
最後に、レスポンシブ化されたテーブル用のスタイルをstyle.cssあたりに以下のように設定します。
/*レスポンシブテーブルの行*/ table.bt tbody tr{ border: 1px solid #ccc; } /*レスポンシブテーブルの見出しとなるヘッダーセルとなる部分*/ table.bt tbody td::before{ background-color: #eee; margin-right: 10px; padding: 2px 10px; } /*レスポンシブテーブルの行となる部分*/ table.bt tbody td{ padding: 0; } /*レスポンシブテーブルのデータセルとなる部分*/ table.bt tbody td .bt-content{ padding-right: 10px; }
Basic Tableでは、複製されたヘッダーセルには、通常の<th>のスタイルなどは適用されないので、自前で設定する必要があります。
上記は、当サイトのテーブルスタイルに合わせた表示にしてあります。これらのスタイルは、それぞれのサイトのテーブルスタイルに合わせる必要があります。
動作確認
Basic Tableを利用するには、IDが"table"のテーブルを以下のように書く必要があります。
<table id="table"> <thead> <tr> <th>姓名</th> <th>統率</th> <th>武勇</th> <th>知略</th> <th>政治</th> <th>総合</th> </tr> </thead> <tbody> <tr> <td>武田信玄</td> <td>110</td> <td>82</td> <td>96</td> <td>94</td> <td>382</td> </tr> <tr> <td>織田信長</td> <td>100</td> <td>89</td> <td>94</td> <td>97</td> <td>380</td> </tr> <!-- 省略 --> </tbody> </table>
ここで注意しなくてはいけないのは、先頭行のみにヘッダーセル(th)を使い、その見出しとなる行を<thead></thead>で囲みます。
<thead>で、先頭の見出し行を囲まないとレスポンシブ表示させたときに、消えるべき通常テーブルの見出しが表示されたままになってしまいます。
あと、見出し行以外に<th>を利用すると、表示が崩れてしまうので注意が必要です。
実際のレスポンシブテーブル
で、実際のテーブルが以下です。
姓名 | 統率 | 武勇 | 知略 | 政治 | 総合 |
---|---|---|---|---|---|
武田信玄 | 110 | 82 | 96 | 94 | 382 |
織田信長 | 100 | 89 | 94 | 97 | 380 |
徳川家康 | 96 | 87 | 94 | 100 | 377 |
太田道灌 | 99 | 88 | 99 | 90 | 376 |
北条氏康 | 96 | 79 | 94 | 107 | 376 |
北条早雲 | 97 | 69 | 98 | 105 | 369 |
伊達政宗 | 96 | 86 | 92 | 93 | 367 |
毛利元就 | 93 | 69 | 105 | 98 | 365 |
真田昌幸 | 97 | 76 | 98 | 91 | 362 |
明智光秀 | 88 | 85 | 92 | 96 | 361 |
今川氏親 | 89 | 79 | 95 | 97 | 360 |
斎藤道三 | 85 | 79 | 100 | 95 | 359 |
佐竹義重 | 94 | 86 | 88 | 89 | 357 |
羽柴秀吉 | 87 | 73 | 93 | 104 | 357 |
長宗我部元親 | 93 | 86 | 93 | 84 | 356 |
上杉謙信 | 120 | 105 | 66 | 62 | 353 |
データ:信長の野望 天道 武将データ
モバイル端末(568ピクセル以下)などで表示させると、レスポンシブ表示されると思います。
オプションなど
Basic Tableのオプションとして、以下のようにブレークポイントを設定したりできます。(デフォルトは568px)
jQuery('#table-breakpoint').basictable({ breakpoint: 768, });
以下のように書くことで、長くなりがちなレスポンシブテーブルの高さを制限するなんて使い方もできます。
jQuery('#table-max-height').basictable({ tableWrapper: true });
オプションについて詳しくは以下を参照してください。
まとめ
Basic Tableを使うと、見出しセルを複製するタイプのレスポンシブテーブルを比較的手軽に作ることができます。
また、オプションを指定することで、レスポンシブ化すると長くなりがちなテーブル表示の高さも制限することができ、表示も多少カスタマイズすることができます。
モバイルユーザーが多いサイトで、画面幅も狭い端末でも、テーブルを綺麗に表示させたい場合には、なかなか良さそうです。
関連トピック。
「Basic Table」の設定方法がわからない。