- ベストアンサー
入れ子にしたfloatのclear
初めてこちらを利用させていただきます。 CSSで縦3段、例えば上から『HEADER』、『MAIN』、『FOOTER』などとの段組を作成し、中央の『MAIN』内に『MENU』と『CONTENTS』の左右2段の段組をfloat:leftを利用して作成し、テンプレートとして利用しようとしています。 このテンプレート部分は、『MENU』の幅のみ固定で、『CONTENTS』は可変幅のレイアウトとしております。ここまでは順調に作成できたのですが、肝心のコンテンツの作成でつまづきました。 『CONTENTS』内に、更にfloat:leftで左右にDIVを配置したブロックを複数作ろうとした場合、2つ目のブロックを配置した時、1つ目の右側DIVの高さが1つ目左側DIVよりも高さが低い場合、2つ目以降のブロックが1つ目左側のDIV右に回りこんで表示されてしまいます。これは1つ目のブロックを配置した後、float:leftをclearしていないから当然だと思います。 そこで、1つ目のブロックの後にclearを摘要(<br />などに)させると、テンプレートの、『FOOTER』直上に2つ目のブロックが配置されてしまいます。1つのclearで入れ子になったfloat:leftが全てclearされてしまう様です。 これが『仕様』と言われればそれまでですが、TABLEや、固定幅のfloat:right等を使用すれば回避できそうですが、TABLE脱却・リキッドレイアウトをここまで実現できたのに、肝心のところで妥協するのも悔しい気がします。 まさか、こんな単純な事で丸一日悩むとは思いませんでした。web上を検索して回ったのですが、良い解決策が見つからず、こちらにおすがりした次第です。文章ではうまく表現できずわかりにくいかもしれませんが、何か回避作があれば教えて下さい。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (6)
- steel_gray
- ベストアンサー率66% (1052/1578)
- nuruhho44
- ベストアンサー率57% (38/66)
- steel_gray
- ベストアンサー率66% (1052/1578)
- nuruhho44
- ベストアンサー率57% (38/66)
- steel_gray
- ベストアンサー率66% (1052/1578)
- steel_gray
- ベストアンサー率66% (1052/1578)
お礼
度々ありがとうございます。 >floatよるレイアウトの限界だと思います。 floatによる2段組レイアウトを利用した場合、『段組内で同方向へのfloatは2度と使えない』ということでしょうか・・・ >absoluteを利用して配置 ブロックの高さは不確定です・・・何より、absoluteによる配置だと、リキッドレイアウトはもちろん不可能ですが、ユーザー側でフォントサイズを変えられたときにレイアウトが破綻しますので、画像などを使用して高さや幅が確定されている部分でしか使用していません。 floatによる段組はCSSの作例で必ず紹介されるほどポピュラーなものですが、ネストした物を見たことがありませんでした・・・やはりCSSによるレイアウトの限界でしょうか・・・残念ですがCSSの限界がこんなに低い所にあるとは思いもよりませんでした・・・と言うより、リキッドレイアウトをCSSで実現させようとしたのが間違いだったのでしょうか・・・CSSに不可能な部分はTABLEで代用する他ありません・・・ なんか最後は愚痴っぽくなってしまいましたが、ありがとうございました。