フレーム内の100%幅table:その2(IE6)

[新着] Webテンプレートを仮オープンしました



0   名前: 皆川 : 2005/05/24 02:39
たびたび質問しまして申し訳ございません。
此度もflame内の100%幅TABLEについてなのですが
前回の問題「右側の隙間」自体はご助力頂いたお陰で解決に至りましたので
スレを分けさせて頂きました。

------------
<frameset framespacing="0" border="FALSE" frameborder="0" cols="600,*">
 <frame name="main" scrolling="auto" src=main.html" marginwidth="0" marginheight="0" frameborder="NO">
 <frame name="side" scrolling="side" src=main.html" marginwidth="0" marginheight="0" frameborder="NO" noresize >
</frameset>
------------

[↓main.html]

<style type="text/css">
#main { margin: 0px; text-align: center }
table.tbl { width: 100%; margin: 0px auto }
</style>

------------
<body>
<div id="main">
 <table class="tbl">
 <tr><td>テーブル
 </td></tr></table>
</div>
</body>
------------

上記のhtmlをブラウザで表示し、縦方向をテーブルの高さ以下まで狭めると
縦方向のスクロールバーが表示されます。
この時、mozilla系、Saffari、MacIEでは
スクロールバーの幅を差し引き、その内側の幅の100%で
テーブルを表示しているように見えますが
WIN IEのみ、テーブルサイズが変化しません。
(TDの中のセンタリングされた文字の位置も動きません)
結果、WIN IEのみ横方向のスクロールバーが表示されることとなります。

これを回避する方法(=縦方向のスクロールバーが表示された時
その内側の幅を100%としてテーブルを表示する方法)は
ありませんでしょうか。
横方向のスクロールバーは、場合によっては必要なこともあるので
強制的に表示させない方法は避けたいと思います。宜しくお願い致します。

1   名前: 皆川 : 2005/05/24 02:39
自己解決致しましたのでご報告申し上げます。
お目汚し誠に失礼致しました。

その後引き続き原因を調べていたのですが
比較的よく挙がる問題であったようですね。
こちらでも類似例が既出であったようで、
調査不足で書き込みまして、失礼致しました。
要は、WINIE6の標準モード+フレームで、
フレーム内頁に横スクロールが表示されてしまう、という問題と同質で
body内の要素が、縦スクロールバーの幅を引き忘れたまま
算出されてしまう為の現象のようで…。
http://www.airemix.com/pukiwiki/pukiwiki.php?[[IETips]]#content_1_4

DOCTYPEが標準モード+SCROLLING=AUTOで起こるとのことですが
かといって、後方互換モードに戻しますと
前回の「右端の隙間問題」が復活してしまいます。
http://www.tagindex.com/cgi-lib/q2bbs/patio.cgi?mode=view&no=27
なので、SCROLLING=yes or auto+スタイルシートでhtml { overflow-y: scroll }
として、縦方向のスクロールバーを「表示させる」という方法をとりました。

半透明色の縦スクロールバーがフレーム内に常時表示されることになりますが
WINIEは1枚モノのHTMLを表示する時も、その長い短いに関わらず
常時同様の縦スクロールバーが表示されるので、別にいいかなと…。
ちなみに、Mozilla系やSafariは、SCROLLING=yesでも
スクロールの必要のない長さのページであれば
スクロールバーは表示されないようです
(MacIEは、縦横にスクロールバーのない領域が表示されます)。

案を捻って下さっていた方がいらっしゃいましたら、申し訳ございません。
お心砕き有難うございました。
無論、今回の私の妥協案のほかに
何かよいTipsがありましたら、お聞かせ頂けましたら幸いです。

一覧へ戻る