2007年03月16日 19:00 [Edit]
CSS - スクロール可能なテーブル w/o JavaScript
これ、うまく行ったのはfirefoxだけでした。
スクロール可能なテーブルを作成するJavaScriptライブラリ「ScrollableTable」:phpspot開発日誌スクロール可能なテーブルを作成するJavaScriptライブラリ「ScrollableTable」。 次のようなスクロールしてもカラム名が消えず、小さいスペースで配置できるテーブルを作成できます。
Safariではスクロールバーそのものが表示されず、OperaではTableが丸ごと消えてしまいます。
そもそもこれならCSSだけで出来るのではということで試作してみたのが以下です。
Firefox, Safari, Operaではきちんと表示されます。IE5では横スクロールが表示されましたが、それ以外は当初の目的を満たしています。
| 日本語 | 中文 | English |
|---|
| 0 | ぜろ | 零 | zero |
|---|---|---|---|
| 1 | いち | 一 | one |
| 2 | に | 二 | two |
| 3 | さん | 三 | three |
| 4 | し | 四 | four |
| 5 | ご | 五 | five |
| 6 | ろく | 六 | six |
| 7 | なな | 七 | seven |
| 8 | はち | 八 | eight |
| 9 | きゅう | 九 | nine |
| 10 | じゅう | 十 | ten |
| 日本語 | 中文 | English |
|---|
詳しくは末尾のソースをご覧頂くとして、要点をまとめると、
- 本来一つのtableで表示するところを、三つのtableに分ける
- table一つ一つをdivで囲む
- 上下のdivには、thead,tfootに対応するtableをおく
- 真ん中のdivに、tbodyに対応するtableを置き、scrollの設定はdivで行う
- 上中下の各table内のtd,thは、一番右の要素を除いてwidthを指定する
この「一番右の要素を除いて」というところがミソです。
それにしても、CSSはJavaScript以上にブラウザー依存が激しくて大変です。デザイナーのみなさんはほんとすごいと思います。
Enjoy!
Dan the CSSphobia
HTML Source:
<style>
#scrollable th,td{ border: outset 1px; }
</style>
<div id="scrollable" style="width:320"><!-- table -->
<div style="margin:0;padding:0"><table width="100%"><!-- thead -->
<thead>
<tr style="text-align:left"><th width="32"></th><th width="64">日本語</th><th width="64">中文<th>English</th></tr>
</thead>
<tbody></tbody>
</table>
</div>
<div style="height:100px; overflow:auto"><table width="100%"><!-- thead -->
<tbody>
<tr><th width="32">0</th><td width="64">ぜろ</td><td width="64">零</td><td>zero</td></tr>
<tr><th>1</th><td>いち</td><td>一</td><td>one</td></tr>
<tr><th>2</th><td>に</td><td>二</td><td>two</td></tr>
<tr><th>3</th><td>さん</td><td>三</td><td>three</td></tr>
<tr><th>4</th><td>し</td><td>四</td><td>four</td></tr>
<tr><th>5</th><td>ご</td><td>五</td><td>five</td></tr>
<tr><th>6</th><td>ろく</td><td>六</td><td>six</td></tr>
<tr><th>7</th><td>なな</td><td>七</td><td>seven</td></tr>
<tr><th>8</th><td>はち</td><td>八</td><td>eight</td></tr>
<tr><th>9</th><td>きゅう</td><td>九</td><td>nine</td></tr>
<tr><th>10</th><td>じゅう</td><td>十</td><td>ten</td></tr>
</tbody>
</table></div>
<div style="margin:0;padding:0"><table width="100%"><!-- tfoot -->
<tbody></tbody>
<tfoot>
<tr style="text-align:left"><th width="32"></th><th width="64">日本語</th><th width="64">中文<th>English</th></tr>
</tfoot>
</table></div><!-- tfoot -->
</div><!-- /table -->
Posted by dankogai at 19:00│Comments(2)│TrackBack(4)
この記事へのトラックバックURL
この記事へのトラックバック
404 Blog Not Found:CSS - スクロール可能なテーブル w/o JavaScript そのHTMLは許せないので試行錯誤してみた。 hello hi goodbye test(0) aa(0) cols(0) test(1) aa(1) cols(1) test(2) aa(2) cols(2) test(3) aa(3) cols(3) test(4) aa(4) cols(4) test(5) aa(5) cols(5)
[HTML+CSS]tbodyをスクロール可能に【Sybianの日記】at 2007年03月17日 22:14
404 Blog Not Found:CSS - スクロール可能なテーブル w...
これはだめじゃないか > スクロール可能なテーブル【メモランダム】at 2007年03月19日 21:37
なかなか興味深いなあと思っていたら、Yahoo UI Libraryでできるらしい。- [404 Blog Not Found:CSS - スクロール可能なテーブル w/o JavaScript](http://blog.livedoor.jp/dankogai/archives/50787785.html)- [Sybianの日記 - tbodyをスクロール可能に](http://d.haten...
それ、yuiで
【memo-space】at 2007年03月27日 14:50
IE8 beta2対応版IETesterがリリースされたので、beta1では未対応だった table ヘッダ固定のCSS定義について再確認しました。 以前、当サイトで紹介した「IE5.5, IE6, IE7, IE8の確認が同時にできる -IETester」が、IE8 beta2に対応したv0.2.3をリリースしました。 IETester
[Javascript][CSS]IE8 beta2対応版IETesterでtableヘッダ固定のCSS定義を確認した【Cyokodog::Diary】at 2008年09月10日 03:07
この記事へのコメント
いいですね。と思って手元で試すと、なかなか難しいです。
テーブルを三つにわけているので、セル内の文字数が変わるとヘッダ・フッタとずれてみたり。IEでは、ですが。(そこを気合いでpxであわせるのがWEBデザイナ様?でもシステム埋め込みとかではぞっとする)
いい加減、何とかならないんでしょうかね、このブラウザでの無駄な苦労w。
あと、
<div id="scrollable" style="width:320"><!-- table -->
は
<div id="scrollable" style="width:320px"><!-- table -->
がCSSとしては正しいでしょうか。この違いでもだいぶ挙動(表示)が変わりそうです。
テーブルを三つにわけているので、セル内の文字数が変わるとヘッダ・フッタとずれてみたり。IEでは、ですが。(そこを気合いでpxであわせるのがWEBデザイナ様?でもシステム埋め込みとかではぞっとする)
いい加減、何とかならないんでしょうかね、このブラウザでの無駄な苦労w。
あと、
<div id="scrollable" style="width:320"><!-- table -->
は
<div id="scrollable" style="width:320px"><!-- table -->
がCSSとしては正しいでしょうか。この違いでもだいぶ挙動(表示)が変わりそうです。
Posted by souto at 2007年03月16日 20:41
thead, tbody, tfootをブラウザがうまい具合に処理してくれるといいんですけどね。
ん?JavaScriptでDanさんのに書き換えればいいのか!
ん?JavaScriptでDanさんのに書き換えればいいのか!
Posted by aoix at 2007年03月17日 01:19