フレーム内に100%幅のtableは不可?(IE6)

[統計] HTMLからXHTMLへの移行を進めていますか?



0   名前: 皆川 : 2005/05/20 01:55
はじめまして。もし宜しければお知恵を拝借できないでしょうか。
現在、以下のように3つにフレーム分けされたページを作成しております。

 左上     |
――――――――|
        | 右
 左下(メイン)|
        |
この、左下のメインフレーム内に、100%幅(フレーム境界とのマージンなし)の
tableを配置しなければなりません。
そこで、フレーム内のマージンを0と指定した上で
width="100%"のtableを配置したのですが
WIN IE6.0で見たところ、右側に20px〜25px程度の隙間が
どうしてもできてしまいます。
具体的に示しますと、以下のようになります。
[WIN XP+IE6のスクリーンショット]http://www.yotteke.net/test/ie6.gif
[WIN XP+FireFoxのスクリーンショット]http://www.yotteke.net/test/ff.gif
[MacOS X+Netscapeのスクリーンショット]http://www.yotteke.net/test/m.gif
[htmlファイル]http://www.yotteke.net/test/index2.html

tableに限らず、divやhrやh1など、ブロック化された要素は概ねこうなるようです。
IEの癖をつかみかねており、おはずかしいのですが、
もしやWIN IEの「幅100%」は、
縦のスクロールバーが入る幅をあらかじめ除いて算出されるのでしょうか?
(スクロールバーが表示されていない時も、そのスペースがキープされるのでしょうか)
IE6で、上記FireFoxのスクリーンショットのように表示する方法があれば
お教え頂きたく存じます。
希望としてはhtmlファイルの[4]のように、ウィンドウ幅の縮小に伴ってフレーム幅が狭められても
tableのサイズをある程度維持したいのですが、
まずは右の隙間だけなんとかなればと思っています。
IEではできません、というご回答でも結構です。
出来るのか出来ないのか、全く分からないので困り果てておりますゆえ…。
諸事情により、フレーム→フレームなしにするという選択肢は取れません。

何卒宜しくお願い致します。説明に不足がありましたら申し訳ありません。

1   名前: カヅサツ : 2005/05/20 01:55  [URL
index2.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html lang="ja" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<title>TABLE実験</title>
</head>
<frameset framespacing="0" border="false" frameborder="0" cols="650,*">
<frameset rows="50,*" frameborder="no" border="0" framespacing="0">
<frame name="top" src="index3.html"
scrolling="no" noresize frameborder="no">
<frame name="main" src="index.html"
scrolling="auto" frameborder="no">
</frameset>
<frame src="index3.html" name="right" scrolling=no noresize>
<noframes>
<body>
<ul>
<li><a href="index3.html">index3.html</a></li>
<li><a href="index.html">index.html</a></li>
</ul>
</body>
</noframes>
</frameset>
</html>

2   名前: カヅサツ : 2005/05/20 01:55  [URL
index.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja" dir="ltr">
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<title>table実験</title>
<style type="text/css">
<!--
body {
font-size:10px;
margin: 20px 0px;
padding: 20px 0px;
background-color: #dcdcdc
}

h1{
width: 100%;
height:20px;
font-size: 12px;
color:#cd5c5c;
font-weight: bold;
text-align: center;
}
h1.line {
border-bottom: #cd5c5c 1px solid
}
h1.625{
width: 625px;
}
.bg{
background-color: #cd5c5c;
height: 1px;
text-align: center;
vertical-align: middle;
}
.bg img{
width: 0px;
height: 1px;
}
table{
width: 100%;
margin: 1em auto;
background-color: #fff
}
td{
text-align: center;
vertical-align: middle;
}
#test3{
width: 625px;
}
-->
</STYLE>
</head>

3   名前: カヅサツ : 2005/05/20 01:55  [URL
<body>
<table cellpadding="0" cellspacing="0" summary="title" id="test1">
<tr>
<td><h1>[1]幅100%のテーブル</h1></td>
</tr>
<tr>
<td class="bg"><img src="/attaboy/img/s.gif" alt=""></td>
</tr>
</table>
<h1 class="line">[2]h1タグにborder-bottom指定+α</h1>
<table cellpadding="0" cellspacing="0" summary="title" id="test2">
<tr>
<td><h1 class="625">[3]テーブル幅100%+フレームサイズより小さいh1</h1></td>
</tr>
<tr>
<td class="bg"><img src="/attaboy/img/s.gif" alt=""></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" summary="title" id="test3">
<tr>
<td>[4] ここに幅:625のtable</td>
</tr>
</table>
</body>
</html>

4   名前: 皆川 : 2005/05/20 01:55
>カヅサツ様

有難うございます!
何かヒントが得られれば…と思っての書き込みで
ここまでお骨折り頂けるとは思ってもおりませんでしたので
大変感動致しました。
tableの横マージンをautoに指定する(margin:1em auto)のが
肝だったのでしょうか。
(DOCTYPE宣言をURL付で宣言しているところも?)

見た目再現の為に突貫で書いたhtmlだった為、
ソースがとっちらかっていて、見づらかったことと思います。
(特にスタイルシート指定部…)
こちらまで見事整理して下さり、有難うございます。
お手本のような、きれいなソースですね。

5   名前: カヅサツ : 2005/05/20 01:55  [URL
> (DOCTYPE宣言をURL付で宣言しているところも?)

肝はソコです。
多くのブラウザは、HTML 4.01 Transitional の場合、全部書かないと CSS をルール通り解釈しません。

> tableの横マージンをautoに指定する(margin:1em auto)

CSS の正しいルールでは、ブロック要素そのものをセンタリングする場合、左右マージンを auto にする必要があるます。
親要素を text-align :center としても、単に継承されて、テキストだけがセンタリングされます。

6   名前: 皆川 : 2005/05/20 01:55
補足痛み入ります。
>肝はソコです。
>多くのブラウザは、HTML 4.01 Transitional の場合、全部書かないと CSS をルール通り解釈しません。

そのようですね。
直して頂いた場所を1つずつ足す方法で試してみたところ
DOCTYPE宣言の"http://www.w3.org/TR/html4/loose.dtd">を追加しただけで
右端の隙間自体は解消されました。

色々お教え頂き、本当に有難うございました。

一覧へ戻る