- ベストアンサー
floatを使わずに、cssレイアウトって可能でしょうか?
例えば、現在見ているこのページのように、ヘッダーとフッターがあり、コンテンツが左右二つのカラムで成り立っているようなレイアウトを、floatでなくpositionで、レイアウトすることは可能でしょうか? (その際、左右どちらのカラムの方が、高さが高くなっても、レイアウトが崩れないように。) floatを使いたくない理由は、親ボックスからはみ出さないように、ハック(clearfix)を使わないといけないからです。
例えば、現在見ているこのページのように、ヘッダーとフッターがあり、コンテンツが左右二つのカラムで成り立っているようなレイアウトを、floatでなくpositionで、レイアウトすることは可能でしょうか? (その際、左右どちらのカラムの方が、高さが高くなっても、レイアウトが崩れないように。) floatを使いたくない理由は、親ボックスからはみ出さないように、ハック(clearfix)を使わないといけないからです。
お礼
ご回答ありがとうございます。 素晴らしい!overflow:hidden、これには気づかなかったです・・・。 って、調べたら結構出てきましたね。明らかに勉強不足でした。失礼しました。 リンク先に > 別背景イメージが使えないので没です。 とありますが、以下で、普通に表示できました。 div.wrap { width:620px; overflow:hidden; background:url('background.gif') bottom; } div.left { width:300px; float:left; } div.right { width:300px; float:right; } で、背景画像が使えれば、ボーダーを相殺するために ネガティブマージンする必要もないですね。 では、なんで、みんなclearfixなんか使ってるのかな・・・と思ったら、 Netscape 7.1で、完全に表示されないですね・・・。 Netscapeはシェアが少ないので、デザインの崩れは許容できますが、 情報が表示されないのは、駄目ですね。 というか、何も「隠す」意図がないのに、hidden なんて指定は、 ハックになるかなと・・・。 で、もう少し調べたら、overflow:auto で解決しました。 ※Win IE6、Firefox2、Opera9.2、Netscape7.1で。 (Mac、今、ないので確認していませんが。) しかもこれは仕様のようです。 http://www.w3.org/TR/2004/CR-CSS21-20040225/visudet.html#q22 でも、overflow:auto はMac IE5で、スクロールバーが表示されるようです。(未確認) ただ、Mac IE5のような古いブラウザは(IE6も相当古いですが)、 スクロールバーが表示される程度の不具合には、我慢してもらおうと思います。 ということは、clearfixは、Mac IE5に対応するだけのために使われているのでしょうか? 惰性で使われて続けられているだけなのか、overflowによる親ボックスの高さ確保に、 なにかしら不具合があるのか、どちらなんでしょう。