お世話になります。
IE限定の質問です。
テーブルのヘッダを固定してスクロールバーを右に付けるとします。
↓例↓
===================================
<html>
<head>
<style type="text/css">
.FreezHeader
{
background-color:#ffffff;
position:relative;
top:expression(this.offsetParent.scrollTop);
z-index:10;
}
</style>
</head>
<body>
<div id="divFrame" style="overflow:auto; position:relative; width:100%; height:100px;">
<table cellspacing="0" cellpadding="0" width="100%" border="1">
<tr class="FreezHeader"><th>あ</th><th>か</th><th>さ</th></tr>
<tr><td>い</td><td>き</td><td>し</td></tr>
<tr><td>う</td><td>く</td><td>す</td></tr>
<tr><td>え</td><td>け</td><td>せ</td></tr>
<tr><td>お</td><td>こ</td><td>そ</td></tr>
<tr><td>あ</td><td>か</td><td>さ</td></tr>
<tr><td>い</td><td>き</td><td>し</td></tr>
<tr><td>う</td><td>く</td><td>す</td></tr>
<tr><td>え</td><td>け</td><td>せ</td></tr>
<tr><td>お</td><td>こ</td><td>そ</td></tr>
</table>
</div>
</body>
</html>
===================================
上記のような HTML を書いた場合,
【下の図】↓の「A」のように表示されます。
「A」のようにではなく
スクロールバーの位置(TOPの位置)をヘッダの下から開始させたいのです。
できれば 【下の図】↓の「B」のような感じで
それが難しいとした場合, 【下の図】↓の「C」のような感じです。
このように表示させる方法を教えていただきたく思います。
IEのみで使えれば良いので,
他のブラウザでの見え方は考えなくて良いです。
ただ,
IE 5.5 や 6 などなるべく低いバージョンでも見えるようにと
なるべく JavaScript の使用は避けて
なおかつ,なるべくシンプルな方法が希望です。
No.5ベストアンサー
- 回答日時:
結論です。
IEでは簡単には無理です。参考サイトは最後に書いておきます。まず、データの多いtableは、<thead><tfoot><tbody>でマークアップすべきです。これは印刷したとき(ユーザーエージェントがページ媒体であるとき)に、それぞれのページに見出しを表示すべきだからです。先の回答を実際に印刷すると明白です。ページ媒体でスクロールは出来ませんから、overflowにscrollないしautoを指定した場合は、スタイルシートでスクリーン端末のみ適用されるよう記述することは必須です。スタイルシートのデフォルトはall(仕様書ではscreenですが、実装はallになっています。HTML5では allに変更される)
期待のように表示させるためには、本来はtbodyにoverflowを指定すればよいのですが、これはtable要素には使えないことになっています。(IEにはバグあり使えそうに見えます)
そのため、スタイルシートでtbodyをblockに変換してやる必要があります。しかしその時点でIEは、tbodyの高さをtrに継承してしまうバグがあります。またスクロールバー自体が表示されません。
IEで期待通りの表らしき形にしたいのなら、table以外でマークアップしてすべての要素table,thead,tfoot,tbody,tr,td,th,col,cilgroup・・をブロックに下からスタイルシートで配置しなおさないとなりません。
当然ですが、スタイルシートを読まないブラウザ(テキストブラウザ、点字端末、読み上げソフト、そしてプリンター)や他の端末、検索エンジンには意味が通じないことになります。
仕方なく、table全体を<div>で囲って、thead部分をfixedで固定する方法も試したのですが、IEのみfixedで位置を決めない場合は影も形も消えうせてしまいます。--もちろん標準ブラウザではきちんと整形されます。
{IEのみで使えれば良いので,}
は、印刷やその他すべてを犠牲にすれば、表の見出しと本体を別のtableにするなど、文書構造を無視したマークアップ・・あるいは、リストなどでマークアップすることになりますが、決してすべきではない邪道になります。
☆tbodyをscrollさせる方法は下記サイトをご覧ください。
Tableのヘッダ(thead)を固定して、<tbody>内をスクロールさせる方法 » 株式会社ジラフィー(Giraffy) ( http://giraffy.jp/blog/2009/09/11/css/107/ )
今回は質問ありがとうございます。自分自身よい勉強になりました。IEがクソであることも再確認できたし・(笑)
ORUKA1951 さん,
何度も回答してくださり感謝の気持ちでいっぱいです。
また お礼 が遅れましたことをお詫びいたします。
最初の ANo.1 の回答をくださったときに
その先を自力で作成しようと思ってあがいてみたのですが
自力では何ともできず,その日は途方にくれておりました。
ANo.4 の回答を見て
初めてどうするのかがわかった次第でして...。
シンプルな記述でできるものなのですね。
びっくりしました。& 助かりました。
私,JavaScript (言語自体) は少々得意ですし,
ActionScript は結構得意な方なのですが,
HTML とか CSS とかは,本当難しい(じゃじゃ馬ならしみたい)ですね。。。
本当にありがとうございました。
No.4
- 回答日時:
役立ちそうなスタイルなので、個人的にも調べてみました。
IEどのバージョンも、tableに関して致命的なバグがあるため、ウェブ標準(HTML4.01strict+CSS2.1)で作成し、他のブラウザすべてで同じに表示できる当たり前のことが出来ません。(opera,safari,firefox、IE5~10で確認)
そのため、(想像したとおり)先に示したようにリストなど他のマークアップをしたものをblockで配置する以外に期待のことはできないと思われます。いまだにウェブデザイナーを悩まし続けるIE---。この世から消えてしまえばよいのに。
下記HTMLは、ウェブ標準です。リストでマークアップしたものとtableでマークアップしたものです。いずれも同じように表示されるべきですが、下のtableでのマークアップは、IEはすべてのバージョンでうまく表示できないのではないかと思います。
結論から言うと、本来はtable、特にthead,tbodyを使ってマークアップすべきででありながら、tableが使えません。theadやtbodyは印刷して2ページに分かれるような大きなtable--スクロールが必要なデータであっても、「tbodyのみスクロールさせることが不可能なのです」--実際に大きなデータの表を作成して印刷してみてください。
★Another HTML-lint gateway( http://openlab.ring.gr.jp/k16/htmllint/htmllint. … )
★The W3C Markup Validation Service( http://validator.w3.org/#validate_by_input )
でチェック済み
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
_<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
_<title>サンプル</title>
_<meta name="author" content="ORUKA1951">
_<meta http-equiv="Content-Style-Type" content="text/css">
_<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
_<link rel="START" href="../index.html">
_<style type="text/css" media="screen">
<!--
ol.table,ol.table ul,ol.table li{display:block;padding:0;margin:0;line-height:30px;list-style:none;}
ol.table{width:410px;}
ol.table li ul li{width:100px;border:solid 1px gray;float:left;}
ol.table li{clear:left;}
ol.table li ul li{clear:none;}
ol.table li.head ul li{text-align:center;font-weight:bold;}
ol.table li.body{height:94px;overflow:auto;width:426px;border-bottom:1px gray solid;}
ol.table li.body ul li{padding:0 5px;width:90px;}
ol.table li.body ul{clear:left;}
table.scroll,table.scroll *{display:block;border:solid gray 1px;margin: 0;padding:0;line-height:30px;}
table.scroll,table.scroll tr{width:410px;border:none;}
table.scroll{margin-top:50px;border-bottom:1px solid gray;}
table.scroll thead,table.scroll tbody{width:100%;border:none;}
table.scroll tbody{height:94px;overflow:auto;width:428px;}
table.scroll thead th,table.scroll tbody td{float:left;width:100px;}
table.scroll tbody,table.scroll tbody tr{clear:left;}
-->
_</style>
</head>
<body>
_<h1>サンプル</h1>
_<ol class="table">
__<li class="head">
___<ul>
____<li>あ行</li><li>か行</li><li>さ行</li><li>た行</li>
___</ul>
__</li>
__<li class="body">
___<ul>
____<li>あ</li><li>か</li><li>さ</li><li>た</li>
___</ul>
___<ul>
____<li>い</li><li>き</li><li>し</li><li>ち</li>
___</ul>
___<ul>
____<li>う</li><li>く</li><li>す</li><li>つ</li>
___</ul>
___<ul>
____<li>え</li><li>け</li><li>せ</li><li>て</li>
___</ul>
___<ul>
____<li>お</li><li>こ</li><li>そ</li><li>と</li>
___</ul>
___<ul>
____<li>あ</li><li>か</li><li>さ</li><li>た</li>
___</ul>
___<ul>
____<li>い</li><li>き</li><li>し</li><li>ち</li>
___</ul>
___<ul>
____<li>う</li><li>く</li><li>す</li><li>つ</li>
___</ul>
___<ul>
____<li>え</li><li>け</li><li>せ</li><li>て</li>
___</ul>
___<ul>
____<li>お</li><li>こ</li><li>そ</li><li>と</li>
___</ul>
__</li>
_</ol>
_<table class="scroll" summary="scrollTbody">
__<thead>
___<tr>
____<th>あ行</th><th>か行</th><th>さ行</th><th>た行</th>
___</tr>
__</thead>
__<tbody>
___<tr>
____<td>あ</td><td>か</td><td>さ</td><td>た</td>
___</tr>
___<tr>
____<td>い</td><td>き</td><td>し</td><td>ち</td>
___</tr>
___<tr>
____<td>う</td><td>く</td><td>す</td><td>つ</td>
___</tr>
___<tr>
____<td>え</td><td>け</td><td>せ</td><td>て</td>
___</tr>
___<tr>
____<td>お</td><td>こ</td><td>そ</td><td>と</td>
___</tr>
___<tr>
____<td>あ</td><td>か</td><td>さ</td><td>た</td>
___</tr>
___<tr>
____<td>い</td><td>き</td><td>し</td><td>ち</td>
___</tr>
___<tr>
____<td>う</td><td>く</td><td>す</td><td>つ</td>
___</tr>
___<tr>
____<td>え</td><td>け</td><td>せ</td><td>て</td>
___</tr>
___<tr>
____<td>お</td><td>こ</td><td>そ</td><td>と</td>
___</tr>
__</tbody>
_</table>
</body>
</html>
No.2
- 回答日時:
画像添付忘れてました。
IE6以降対応、ウェブ標準ですから他のブラウザもOK
★table関連要素にoverflowは使えないので・・blockにしましょう。
IE5にはサイズ計算でバグがあるため、tbodyに当たる部分が縮みます。
★スクロールバーを最後の列に入れると最後の列の巾が狭くなるので、入れないほうが良いでしょう。(左下)
No.1
- 回答日時:
table要素にoverflowは使えません。
Applies to: _block-level and replaced elements
11.1.1 はみ出した内容の扱い(Overflow: the 'overflow' property) ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )
リストでマークアップして、ブロックにしましょう。
_<ol class="table">
__<li class="body">
___<ul>
____<li>あ</li><li>か</li><li>さ</li><li>た</li>
___</ul>
___<ul>
____<li>い</li><li>き</li><li>し</li><li>ち</li>
___</ul>
___<ul>
____<li>う</li><li>く</li><li>す</li><li>つ</li>
___</ul>
___<ul>
____<li>え</li><li>け</li><li>せ</li><li>て</li>
___</ul>
___<ul>
____<li>お</li><li>こ</li><li>そ</li><li>と</li>
___</ul>
__</li>
__<li class="head">
___<ul>
____<li>あ行</li><li>か行</li><li>さ行</li><li>た行</li>
___</ul>
__</li>
_</table>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- Perl PERL 1 2022/04/26 14:15
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
テーブルの一部分のセルだけにスクロールバーを付けたいのですが、うまくいきません。
HTML・CSS
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tableにul,または,olを入れられ...
-
テーブルの行を折りたたみたい...
-
TRタグの余白をcssで設定するには
-
テーブルのヘッダとボディの幅...
-
テーブルの任意の列を非表示に...
-
tableでcolspanを使うと次行以...
-
EXCELからhtmlへの変換で罫線が...
-
値が0なら非表示にしたい
-
文字の中央そろえを一括で指定...
-
テーブルの行の高さを指定する...
-
cssで、表示されるテキストによ...
-
テーブルの1列目だけ背景色をつ...
-
テーブル内でdivを使った時に改...
-
テーブルをスクロールさせると...
-
【CSS】:hasで可能? imgを含む...
-
スタイルシートで colspan=3と...
-
tableにtableをネストした場合
-
tableの中で<p>タグを使うと…
-
HTML <td></td>タグ セル内余...
-
DreamWeaverで複数ワードを一気...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルの行を折りたたみたい...
-
TRタグの余白をcssで設定するには
-
tableにul,または,olを入れられ...
-
cssで、表示されるテキストによ...
-
テーブルの任意の列を非表示に...
-
掲示板//インラインフレーム内...
-
テーブルのセルに画像をピッタ...
-
HTMLのテーブルで桁をそろ...
-
中に<table></table>が使えるア...
-
テーブルのヘッダとボディの幅...
-
逆L字の表(table)組み
-
ホームページ 表の上の余白を...
-
文字列が入っているtdを削除せ...
-
テーブルの行の高さを指定する...
-
HTMLで文とテーブルの間が空く。
-
EXCELからhtmlへの変換で罫線が...
-
CSSだけで<table>の<td>や<tr>...
-
テーブルの表示がずれます
-
テーブルの装飾
-
値が0なら非表示にしたい
おすすめ情報