IE6対応での3カラムのカラム落ち問題解決方法

このQ&Aのポイント
  • IE6だけ3カラムのうち右カラムだけカラム落ちしてなおりません。
  • ネットで検索して色々試した結果「clear: right;」を追加したら右に戻ったのですが、今度は隙間ができました。
  • IE6以外はすべて大丈夫なので、分かるかた教えてください。
回答を見る
  • ベストアンサー

3カラムのカラム落ちについて質問です。

3カラムのカラム落ちについて質問です。 IE6だけ3カラムのうち右カラムだけカラム落ちしてなおりません。 ネットで検索して色々試した結果「clear: right;」を追加したら右に戻ったのですが、今度は隙間ができました。 <div id="wrap">  <div id="left">左カラム</div>  <div id="left">メインカラム</div>  <div id="left">右カラム</div> </div> という形です。 --CSS-- #wrap{ width: 970px; margin: 0 auto; background-color: #FFFFFF; height: 100%; min-height: 100%; position:relative; overflow: hidden; } #left{ width: 175px; margin: 15px 15px 0 15px; padding: 0; float: left; display: inline; } #contents{ width: 560px; float: right; margin-top: 15px; display: inline; clear: right; } #right{ width: 175px; margin: 15px; float: right; display: inline; clear: right; } です。 それぞれの中にはmargin やpaddingを使っています。 2日間それで悩まされていますができずに困っています。 IE6以外はすべて大丈夫なので、分かるかた教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.5

display: inline;でしたか。失礼。 ------------------------ 全角スペースは単なるここだけのインデントかと思いましたが、 リアルでも使ってそうですね・・・ clear: right; も何故ここで使うのか? >paddingを使っています。 との事と、 padding: 0; となっているので、 この辺の数値調整をしてるせいだとも思いましたので、NO.3の設定を書いたのですが、 position:、padding: この辺の微調整で色々不具合が出そうですね。 #1さんのまま修正すると良いでしょう!

kitson00
質問者

補足

皆さんの意見とネットで調べて変更をしたのですが、それでもカラム落ちしています。 入れ子にして、中の方にmarginをとってみました。 <div id="left"> <div id="left_01">左カラム</div> </div> <div id="contents">メインカラム</div> <div id="right"> <div id="right_01">右カラム</div> </div> ----css---- /*------------------ left ------------------*/ #left{ width: 205px; padding: 0; margin: 0; float: left; display: inline; position: relative; } #left_01{ width: 175px; padding: 0; margin:0 13px 0 13px; position: relative; } /*------------------ contents ------------------*/ #contents{ /*その他のブラウザ対応*/ margin: 0px; padding: 0px; float: left; display:inline; width: 560px; position: relative; } *html #contents{ /*IE6対応*/ width: 560px; float: left; position: relative; } /*------------------ right ------------------*/ #right{ /*その他のブラウザ対応*/ margin: 0px; padding: 0px; float: right; display:inline; width: 205px; position: relative; } *html #right{ /*IE6対応*/ width: 205px; position: relative; float: right; } #right_01{ width: 175px; padding: 0; margin: 0 13px 0 13px; position: relative; } これでも直らないのでどなたか分かる方教えてください。 よろしくお願い致します。

その他の回答 (4)

回答No.4

いやいやいや、フロート時のIE6の対策はちゃんと「display: inline;」で行われてますよ! それを踏まえて新しくボックスを作るのは自由ですが。 ↓↓

  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.3

検証していませんが、 おそらくその場合のケースだと、 float + margin にするには、IE6用ハックが必要。 もしくは、 内包するdivを作って float と margin や padding , border を一緒にしない事。 外divをfloatとwidth。 内divにその他のCSS。 <div id="wrap"> <div><div>左カラム</div></div> <div><div>メインカラム</div></div> <div><div>右カラム</div></div> </div>

回答No.2

1です。 このフォームは半角が冒頭に有ると消えてしまうんですね^^; とりあえずhtmlを書くときに全角スペースは事故の元といいたかっただけです。

回答No.1

正しいhtmlはこれ。(id名と2~4行目にあった全角スペースが間違い。) <div id="wrap"> ↓全角スペースってここ <div id="left">左カラム</div> <div id="contents">メインカラム</div> <div id="right">右カラム</div> </div> --CSS-- #wrap{ width: 970px; margin: 0 auto; background-color: #FFFFFF; height: 100%; min-height: 100%; position:relative; overflow: hidden; } #left{ width: 175px; margin: 15px 15px 0 15px; padding: 0; float: left; display: inline; } #contents{ width: 560px; float: left; /*rightだと順番が変わっちゃうので*/ margin-top: 15px; display: inline; /*clear: right; これはいらない */ } #right{ width: 175px; margin: 15px; float: right; display: inline; /*clear: right; これもいらない */ }

関連するQ&A

  • 3カラム IE 右落ち

    現在幅固定3カラムでサイトを作っているのですが、私のマック環境(safari&Firefox)ではちゃんとレイアウトが整うのにwindowsのIE 7,6,5ではどれも右のボックスが左下に落ちてしまいます。 CSSはもともと #container { margin:0px auto; width:1000px; text-align:left; } .wrapper { width:800px; float:left; } /* 左 */ .left { float: right; width:200px; } /* 中央 */ .main { float: right; width:600px; } /* 右 */ .right { float: left; width:200px; } /* フッター */ .footer { width:100%; clear:left; } で、これに左右にmargin-left:15px;などを入れていたので、それが原因かと思いdisplay: inline;を足してみたり外してみたのですが変わらず、 左右のボックスの中に<div></div>で囲ったフレーム素材の中にカテゴリーなどをいれているので、そこにmarginやpaddingが発生しているので今度は上記のwidthをちょっと変えてみました。 現在wrapperは780px 左190px 中央580px、右181pxとしてかなり右に余裕を持たせて、尚かつ右で使用していたフレーム素材を全て取り外し1行文字のみだけで試してみたのですが、全然右に上がってきてくれません。 またwidthに余裕を持たせてborderを使ってそれぞれの位置を確認したのですが、右にはかなりのスペースがあいているのに、右に上がってきてくれないのです。 一体何がいけないのでしょうか?? どうかお力をお貸しください。宜しくお願い致します。

  • 3カラムのサイトでfloatができない

    3カラムのホームページを作っているのですが、 中央と右のカラムがどうしてもfloatできません。。 左カラムをfloat:leftにして、中央と右のカラムを#contentsBoxで囲ってfloat:rightさせています 【HTML】 <div id="wrapper_2"><!--div id wrapper_2 START--> <div id="contentsBox"><!--div id contentsBox START--> <div id="560"><!--div id 560 START--> 中央カラム     </div><!--div id 560 END--> <div id="175"><!--div id 175 START-->     右カラム </div><!--div id 175 END--> </div><!--div id contentsBox END--> <div id="205"><!--div id 205 START-->     左カラム </div><!--div id 205 END--> </div><!--div id Wrapper_2 END--> 【CSS】 /*+++wrapper_2++++++++++++++++++++++++++*/ #wrapper_2 { width: 984px; background-color:#fff; padding: 8px; margin: 10px auto 10px auto; overflow: hidden; } /*+++contentsBox++++++++++++++++++++++++++*/ #contentsBox { width: 757px; float: right; } #contentsBox:after { height: 0; visibility: hidden; content: "."; display: block; clear: both; } /*+++左カラム+++++++++++++++++++++++++++++*/ #205{ width: 205px; margin: 0 22px 0 0; float: left; } /*+++中カラム+++++++++++++++++++++++++++++*/ #560{ width: 560px; float: left; } /*+++右カラム+++++++++++++++++++++++++++++*/ #175{ width: 175px; float: right; margin-left: 22px; } まだ勉強中なので、初歩的なミスなのかもしれませんが、 どうしても中央カラムの下に右カラムがきてしまいます。 (ドリームウィーバーで見たら、望み通りの配置になっているのですが、ブラウザでチェックすると、中央カラムの下に右カラムがきてしまいます) アドバイスいただければ嬉しいです。 よろしくお願い致します。

    • ベストアンサー
    • CSS
  • ブログを3カラム右右から左右両サイドにしたい。

    現在CSSは下記のようになっています。 どこをいじれば右右から左右両サイドにできるのか教えていただけたら嬉しいです。 宜しくお願い致します。 /** 03. Layout - レイアウトの設定 */ /* ----------------------------------------------- */ body { margin: 0; padding: 0; min-width: 960px; text-align: center; background-image: none; background-repeat: repeat; background-position: 50% top; } div#containerWrap { width: 960px; margin: 0 auto 5px; } div#container {} div#content { padding: 10px 0; border-width: 1px; border-style: solid; } div#main , div#sub , div#extra { overflow: hidden; } div#main { float: left; display: inline; width: 538px; } div#main div.column-inner { padding: 0 10px 10px; } div#sub { float: left; display: inline; width: 210px; } div#sub div.column-inner { padding: 5px 10px 0; overflow: hidden; border-width: 1px; border-style: none none none solid; } div#extra { float: left; display: inline; width: 210px; } div#extra div.column-inner { padding: 5px 10px 20px; overflow: hidden; border-width: 1px; border-style: none none none solid; }

    • ベストアンサー
    • HTML
  • 3カラムレイアウトで隙間

    下記のように3カラムレイアウトを作っています [css] #wraper { float:left; } #left { float:left; width:180px; margin:0px;} #center { width:450px; margin:0px;} #right { width:120px; margin:0px; } [html] <div id="wrapper">   <div id="left">左メニュー</div>   <div id="center">中央メイン</div> </div> <div id="right">右メニュー</div> が、それぞれの段組の間(↓の部分)に3pxほどの隙間があいてしまいます   ↓   ↓ [左] [中央] [右] 隙間なくぴったりつけるにはどうすればいいでしょうか。 どうぞよろしくおねがいいたします。

    • ベストアンサー
    • HTML
  • IE6でfloatされない。

    IE6でfloatされない。 横幅950pxのコンテンツの中に divで3つのboxを作って横一列に並べているのですが ie7,8, firefoxでは意図した通りに表示されますがie6ではdiv id="c"(下記ソース)がfloatされません、どなたか解決策をご指導お願いします。 <div id="a"><img src="img/left.png" width="403" height="240" alt="スペース左" title="" /></div> <div id="b"><iframe name="iframe3" id="iframe3" frameborder="0" scrolling="no" src="home.html" title="******">*******</iframe></div> <div id="c"><img src="img/right.png" width="403" height="240" alt="スペース右" title="" /></div> css記述は下記の通りです #a{ padding-top : 0px; padding-left : 0px; padding-right : 0px; padding-bottom : 0px; margin-top : 0px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; width : 403px; height : 240px; float : left; display : inline; } #b{ padding-top : 0px; padding-left : 0px; padding-right : 0px; padding-bottom : 0px; margin-top : 0px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; width : 144px; height : 240px; float : left; display : inline; } #c{ padding-top : 0px; padding-left : 0px; padding-right : 0px; padding-bottom : 0px; margin-top : 0px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; width : 403px; height : 240px; float : left; display : inline; } #iframe3{ border-width : 0px 0px 0px 0px; margin-left : 0px; width : 144px; height : 240px; padding-top : 0px; overflow : hidden; margin-top : 0px; margin-right : 0px; margin-bottom : 0px; padding-bottom : 0px; padding-left : 0px; padding-right : 0px; } 宜しくお願いします。

  • IEの「カラム落ち」に悩まされています

    この2日間、IEの「カラム落ち」に悩まされています。 色々検索すると、Margin とpadding/border を一緒に使わないこと、らしいので、そのように設定したつもりなのですが...... 私の環境は、MacOS X 10.5.6 にVirtual PC-XP SP3 を載せています。 Mac safari(3.2.1)、safari-[開発]-IE6/IE7 ではカラム落ちしていないのですが、Virtual PC-XP SP3 の IE6 では見事に落ちています。 この設定を Virtual PC ではない XP/VISTA のIE6/IE7 で見たとき落ちているかどうか、教えていただけないでしょうか。 また、どこを直せば落ちないようにできるかも教えてください。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "​http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">​ <html xmlns="​http://www.w3.org/1999/xhtml">​ <head> <meta http-equiv="Content-Type" content="text/html; charset=shift-jis" /> <META name="robots" content="noindex,nofollow"> <META name="description" content="Gallery"> <title>Gallery</title> <style type="text/css"> <!-- body { margin:0; padding:0; font-family:Arial,MS UI Gothic; font-size:13px; background-color:#FFFFFF; } #wapper { margin:0 auto; padding:0; width:952px; min-height:500px; height:auto; text-align:center; background-image:url(hoge.png); background-repeat:no-repeat; backgroud-position:relative; } #header { margin:0; width:950px; text-align:right; } #header h1{ margin-top:-15px; padding-right:30px; color:#708090; } #header h2{ padding-top:30px; padding-right:10px; color:#708090; } #menu{ margin:0 0 20px 500px; } #menu a{ padding-right:5px; padding-left:5px; width:90px; display:inline; text-decoration:none; } #menu a:hover{ color:#FFFFFF; background-color:#FF7F50; } #left{ margin:320px 15px 20px 30px; width:310px; height:auto; text-align:left; line-height:150%; float:left; } #left h2 { padding-left:25px; background-color:#FFFFFF; } .under_l { margin-top:-45px; margin-right:531px; background-color:#FF7F50; } #right{ margin:0px 15px 20px 30px; width:549px; text-align:left; line-height:150%; min-height:400px; float:left; } #right h2 { padding-left:25px; padding-bottom:10px; background-color:#FFFFFF; } .under_r { margin-top:-35px; margin-right:292px; background-color:#FF7F50; } #right ul { list-sytle-type:disk; list-sytle-position:inside; color:#708090; } #right li { width:251px; float:left; } a { text-decoration:none; } a:hover { background-color:#FFEBCD; } #footer { margin:25px 20px; font-size:x-small; text-align:center; clear:both; } strong { color:red; font-weight:bold; } --> </style> </head> <body> <div id="wapper"> <div id="header"> <h2>pagetitle</font></h2> <h1>pagetitle</h1> </div><!--end header--> <div id="menu"> <hr> <a href="#">Index</a> <a href="#">Top</a> <a href="#">Gallery</a> <hr> </div><!--end menu--> <div id="left"> <h2>Gallery</h2> <div class="under_r">&nbsp;</div> <p> 左カラム<br /> </p> </div><!--end left--> <div id="right"> <h2>右カラム</h2> <div class="under_l">&nbsp;</div> </div><!--end right--> <div id="footer"> <hr> Copyright (c) All Rights Reserved </div> </div><!--end wapper--> </body> </html>

    • ベストアンサー
    • HTML
  • div入れ子、親でmarginを設定すると子のmarginは反映されない?

    段組みレイアウトでdivが 入れ子になってています。 外側が <div id=wrap> <div id=main> <div id=form> </div> </div> </div> #wrap{ width: 840px; margin-top: 0px; margin-right: auto; margin-bottom: 15px; margin-left: auto; } #main { width: 582px; float: right; padding: 0; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 10; } #form { width: 562px; padding: 0; margin-top: 0; margin-right: 0; margin-bottom: 0; margin-left: 20; } としてあります。 id=formのmargin-left :20; だけがブラウザで反映されず、 flort:right;で右に寄せて左に20pxあけました。 id=mainもflort:right;で右に寄っているだけだったようです。 divを入れ子に使う場合、 親でmarginを設定したら、子のmarginは反映されないのでしょうか?

    • ベストアンサー
    • HTML
  • CSSレイアウトについて

    cssによる3カラムを作っているのですがie6で見ると右のカラムが 落ちしてしまいます。 ie6のバグのようでdisplay: inline;を使うなどいろいろと試して みたのですがwidthとmarginの合計で1000px以内にしなければ ならないようなのですがその場合firefoxなどのブラウザで確認 すると若干ではありますが微妙に違いがでてきます。 下記のソースのように特に画像をいれなくてもbackgroundを設定 することによりカラム落ちはしなくなったのですがこの他に解決 方法はあるのでしょうか? また、なぜbackgroundを設定することにより解決したのかも 全く意味不明なのでご存知の方がおりましたら教えてください。 #contents { width: 1000px; } #left { display: inline; float: left; width: 180px; text-align: left; background: url(); } #center { display: inline; float: left; width: 600px; margin: 0 20px; text-align: left; background: url(); } #right { display: inline; float: left; width: 180px; text-align: left; background: url(); } <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ~略~ <div id="contents"> <div id="left">レフト</div> <div id="center">センター</div> <div id="right">ライト</div> </div> ~略~

    • ベストアンサー
    • CSS
  • 【HP制作】2カラムを3カラムに変更したい!

    現在2カラムで運営しているサイトを3カラムに変更したいのですが、上手く出来ずに困っています。 現在は、左サイドメニュー(1)、メインメニュー(2)で運営しています。 ここに右サイドメニュー(3)を追加したく、下記の通りCSSに右サイドを追加したのですが、 画面を確認すると、左から(1)→(3)→(2)の順番で表示されてしまいます。 因みに、メインのfloatをrightに変更すると、左から(2)→(1)→(3)の順に入れ替わり、 どうしても(1)→(2)→(3)の順番になりません。 独学で、その場しのぎでHP作りをしてきたので、間違いに気づけずにおります。 お分かりの方がいらっしゃったら、どうかよろしくお願いします。 初心者レベルなので、分かり易く教えて頂けると助かります。 どうぞよろしくお願いします。 ■CSS /*ページ全体の幅、レイアウトをセンタリング*/ #container { width:1130px; margin:0px auto; text-align:left; } /*ヘッダー*/ #header { width:100%; padding: 20px 0; clear:left; } /*左サイド*/ #leftside { float: left; width: 200px; } /*メイン*/ #main { float: right; ←ここを変えるとレイアウトが崩れてしまいます。 width: 700px; } /*右サイド*/  ←ここを追加しました。 #rightside { float: right; width: 200px; } /*フッター(コピーライト)*/ #footer { padding: 30px 0; width:100%; clear:both; color: #666; text-align: center; border-top: 1px solid #ccc; } ■HTML <div id="container"> </div> <!--***** メイン部分 *****--> <div id="main"> </div> <!--*****// メイン部分 *****--> <!--***** 左サイドメニュー *****--> <div id="leftside"> </div> <!--*****// 左サイドメニュー *****--> <!--***** 右サイドメニュー *****--> ←ここを追加しました。 <div id="rightside"> </div> <!--*****// 右サイドメニュー *****-->

    • ベストアンサー
    • CSS
  • Fire foxで2カラムの表示が乱れる

    こんにちは。 閲覧していただいてありがとうございます。 現在会社のサイトをコーディングしています。 IEでは問題なく表示されるのですが Fire foxで確認したところ、2カラムの部分の表示が乱れてしまいます。 具体的に言うと、 メニュー(左側)の横にメイン(右側)が並ぶ状態が メニュー(左側)の下に回り込んでしまう状態です。 floatの設定に問題があるのかなと思うのですが どうも分かりません; 以下がソースになります。 申し訳ないのですが、少し急いでいるので お早めにご教授いただけると助かりますm(_ _)m <HTMLソース> <div id="layout"> <div id="header">ヘッダー</div> <div id="contents"> <div id="menu">メニュー(左側)</div> <div id="mein">メイン(右側)</div> </div> <div id="footer">フッター</div> </div> <CSSソース> #layout{ margin:0px; padding:0px; width:762px; text-align:left; background-color:#fff; border-right:1px solid #ccc; border-left:1px solid #ccc; } #header{ margin:0px; padding:0px; } #contents{ margin:0px; padding:0px; width:760px; } #menu{ margin:0px; padding:0px; width:190px; line-height:1.5em; float:left; background-color:#f4f4f4; border-right:1px dotted #ccc; border-left:1px dotted #ccc; border-bottom:1px dotted #ccc; } #mein{ margin:0px; padding:15px; width:550px; float:left; } #footer{ margin:0px; padding-left:195px; width:760px; clear:both; border-top:1px dotted #ccc; line-height:1.3em; }

    • ベストアンサー
    • HTML

専門家に質問してみよう