画面左をコンテンツ(幅は可変)・右をメニュー領域(幅は固定)とするために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の文字が縦書きになる
-
CSS、width100%でもできる余白
-
【CSSについて】リストをフロー...
-
HTMLのiframeの入れ子について
-
【HTML】【CSS】【Swiper】 元...
-
CSSでボックスのheightが0になる
-
定義リスト dl dd dt
-
テーブル内の文字が揃わない
-
ヘッダーの高さが合わない
-
定義リストに下線をつけたいと...
-
divで囲まれたpaddingの指定を...
-
div内に外部のurlを表示させたい
-
定義リストで先頭にアイコン
-
外側のdivの高さを入れ子のdiv...
-
デスクトップ用のWEBサイトをス...
-
透明divの下に長い余白ができて...
-
背景が下まで表示されないんです。
-
Webサイトretinaディスプレイのcss
-
枠線でメイン部分を囲み、フッ...
-
CSS リンクを枠で囲み背景色を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
画像イメージの上下左右、欲し...
-
css初心者 フレックスボックス...
-
表示倍率を変えるとレイアウト...
-
CSSがなぜかfont-sizeだけ効か...
-
CSS、width100%でもできる余白
-
W3Cのソースコードの検証サービ...
-
CSS:animation開始位置の設定
-
CSSで指定した背景画像にリンク...
-
<div>と<div>の間の10px程の...
-
余分な縦スクロールバーが出て...
-
CSSでボックスのheightが0になる
-
【CSS】ヘッダーの高さが不明の...
-
スクロールボックスを中央に配...
-
li 黒丸含んで移動する方法
-
border-style:solidで文字がずれる
-
【HTML&CSS】フッター下部の余...
-
Media Queries 4 で 非推奨とな...
-
初心者html・CSS ウィンドウを...
おすすめ情報