Hatena::ブログ(Diary)

TsutomuUchimaの日記 このページをアンテナに追加 RSSフィード

iPhoneでYouTubeの再生が遅い場合の対処はこちらから。

2009-11-20

[] テーブルのヘッダを固定してエクセル風に表示する Super Tables  テーブルのヘッダを固定してエクセル風に表示する Super Tablesを含むブックマーク  テーブルのヘッダを固定してエクセル風に表示する Super Tablesのブックマークコメント

大量のデータを使用するテーブルをHTMLで書くと画面をスクロールする事になりますが、その際にヘッダも一緒にスクロールされてしまい現在見ている項目が何なのか確認する事が出来ない時があります。

そんな時は Super Tables を使えばエクセルのようにヘッダを固定して表示する事が出来ます。縦横のヘッダを同時に固定させる事も可能です。サンプルを作ってみました。ついでにデータ入力可能にしてみました。

エクセル風入力可能なテーブル

http://www.geocities.jp/uchblog/supertables/mySuperTablesDemo01.html

f:id:TsutomuUchima:20091120174632j:image

ソースは以下のような感じで。

<div class="fakeContainer">
<table id="demoTable" class="demoTable">
<tr>
<th>Account</th>
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
<th>State</th>
<th>Email Address</th>
<th>Favorite Color</th>
<th>Favorite Season</th>
</tr>
<tr>
<td>account0001</td>
<td>Jim</td>
<td>Bo</td>
<td>25</td>
<td>Delaware</td>
<td>Jim.Bo@gmail.com</td>
<td>Blue</td>
<td>Winter</td>
</tr>
〜
</table>
</div>

<div id="testDiv" style="position:absolute;top:0px;right:0px;display:block;border:1px solid #adadad;width:300px;height:80px;padding:8px;background-color:#f6f6f6;"></div>

<script type="text/javascript" src="javascripts/superTables.js"></script>
<script type="text/javascript">
//<![CDATA[

(function() {
	var mySt = new superTable("demoTable", {
		cssSkin : "sSky",
		fixedCols : 1,
		headerRows : 1,
		onStart : function () {
			this.start = new Date();
		},
		onFinish : function () {
			document.getElementById("testDiv").innerHTML += "Finished...<br>" + ((new Date()) - this.start) + "ms.<br>";
		}
	});
})();

//]]>
</script>

通常のテーブルを書いてsuperTables.jsを読み込み数行の初期設定を書けばOK。テーブルを書くのに特別な事をしなくて良いのが嬉しいですね。

私は自作のTeedaアプリでこのスクリプトを使用しています。本当に便利!

Super Tables - HTML Tables with Fixed Headers and More - Matt's 411 - Javascript, CSS, HTML and more

http://www.matts411.com/post/super_tables/

TsutomuUchimaTsutomuUchima 2009/12/04 11:55 MOONGIFTで紹介されてた。http://www.moongift.jp/2009/12/super_tables/

ボ 2010/01/25 14:57 デモサイトで、生徒40の費用1から、タブキーで項目移動し続けると、デザインが崩れてしまいます。
解決方法をご存知でしょうか?

TsutomuUchimaTsutomuUchima 2010/02/08 11:39 ブラウザによっては最後の行でタブを押し続け移動すると最後のテキスト入力欄を越えると確かに崩れますね。解決はSuper Tablesを修正する必要があります。すぐには出来そうにないかも。
回避策として一番最後のテキストボックスにフォーカスしたら次のフォーカスへ移動しない、または意図的に別の要素へフォーカスするなどのスクリプトを書く必要があるかと。