
画面左をコンテンツ(幅は可変)・右をメニュー領域(幅は固定)とするために2分割し,さらにコンテンツを2段に分けようとして,次のような構成にしてみたのですが思い通りになりませんでした.
<div style="width:200px; height:600px; background-color:#ccf; float:right">
メニュー
</div>
<div style="width:auto; height:600px; background-color:#fcc;">
<div style="width:50%; height:550px; background-color:#6f6; float:right">コンテンツB</div>
<div style="width:auto; height:550px; background-color:#ff6;">コンテンツA</div>
</div>
2段組は丁度半分ずつにしたかったので,右(コンテンツBの部分)のwidthを50%,左(コンテンツAの部分)はautoにしました.IE6では希望通りコンテンツ領域の幅の50%で表示されているようですが,firefoxではメニュー領域も含めたウインドウ全体の50%と解釈されているようで,IEとは表示が異なり困っています.どちらのブラウザでもコンテンツ領域をちょうど半分ずつにするにはどうすればいいでしょうか?
ちなみに,コンテンツ内の左右を共に50%とすると,どちらのブラウザでもレイアウトが崩れてしまいます.firefoxならそうなっても仕方ないと思いますが,IEでも崩れてしまうのは疑問です.できればこの点にも配慮して両方とも幅を50%と指定しても崩れない方法をお教えください.
No.1ベストアンサー
- 回答日時:
STYLE属性では読みづらいので、CLASS属性で書いてみました。
(HTML)
<div class="all-wrapper">
<div class="content-1">
<div class="content-2">
<div class="content-a">コンテンツA</div>
<div class="content-b">コンテンツB</div>
</div>
</div>
<div class="menu">メニュー</div>
</div>
(CSS)
.all-wrapper { /* clearfix */
overflow: hidden;
}
.all-wrapper:after {/* clearfix */
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.content-1 {
float:left;
width:100%;
height:600px;
margin-right:-200px;
background-color:#fcc;
}
.content-2 {
margin-right:200px;
zoom:100%:/* for IE互換 */
}
.content-a {
float:left;
width:50%;
height:550px;
margin-right: -1px;
background-color:#ff6;
}
.content-b {
float:right;
width:50%;
height:550px;
background-color:#6f6;
}
.menu {
float:right;
width:200px;
height:600px;
background-color:#ccf;
}
content-1 はコンテンツA、コンテンツBを含む領域で、ウインドウ幅全部を占有しています。
このままではメニュー領域が表示できませんから、200px の負マージンを設け、
メニュー領域をコンテンツ領域に重ねています。
content-2はcontent-1からメニュー領域を除いたボックスです。
このボックスを2分割するわけですが、IEでのレイアウト崩れを防止するために、
1px の負マージンを設けています。
content-2の幅が401pxのとき左右のボックスの幅は
401px / 2 → 200.5px → 切上 → 201px → 合計402pxで1pxの超過 →
右ボックスが下に落ちるはずだが →
1pxの負マージンで重なることを許しているから問題なし。
ただし左右のボックス幅は1pxだけ異なる。
※ WIN IE5 では正常に表示されません。MAC の表示は未確認です。
ボックスの多重度が高いので、思わぬ弊害が出るかもしれません。ご参考までに。
ご回答ありがとうございます.IEでもFireFoxでもバッチリ希望通りの表示になりました!
marginでマイナス指定できるとは知らず,目からウロコでした.
2段組部分の細かい配慮も詳しい解説付きでとても参考になりました.
まだすべては理解できておりませんがこれから少しずつ確認してまいります.本当にありがとうございました.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
段組でfloat:leftとfloat:right...
-
CSSでテーブルを使わずにレイア...
-
borderについて2つの質問
-
CSSについて。このサイトの背景...
-
スタイルシートでのメニュー作成で
-
初歩的かもしれませんが回り込...
-
背景画像で額縁のような表現を...
-
div要素をセンタリング
-
FFにおけるDIVタグ間の隙間につ...
-
固定幅で3カラムの記述方法を教...
-
【スタイルシート?】同行内で...
-
画像リンクの下に文字を付けた...
-
画像の表示(FirefoxとSafari)
-
float: leftで横に並べたら、サ...
-
table周辺の隙間をなくしたい。
-
CSSでレシポンシブル対応にする...
-
WinIE(5以降)で、ddタグをCSSで...
-
HTML&CSS DIVをぴったりと縦に...
-
HTMLで横幅をCSSで設定できませ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
CSSがなぜかfont-sizeだけ効か...
-
form input テキストを上下中央...
-
【CSS】ヘッダーの高さが不明の...
-
画像イメージの上下左右、欲し...
-
css初心者 フレックスボックス...
-
余分な縦スクロールバーが出て...
-
W3Cのソースコードの検証サービ...
-
表示倍率を変えるとレイアウト...
-
safariでの横並びリスト(List...
-
<div>と<div>の間の10px程の...
-
border-style:solidで文字がずれる
-
入力フォームとセレクトボック...
-
div内に外部のurlを表示させたい
-
divの中にspanを右寄せにするに...
-
dl,dt,ddタグでdtに対して、row...
-
divで囲まれたpaddingの指定を...
-
footer を横幅いっぱいに広げる...
-
CSSで指定した背景画像にリンク...
おすすめ情報