center-divのこのプロパティを設定する必要があります: height:auto
(最小の高さを追加することもできますmin-height:400
:)
フッターに関する 2 番目の質問については、これははるかに複雑です。これを行う必要があります:
<div id="content">
<div id="content_left">
</div>
<div id="content_center">
</div>
<div id="content_right">
</div>
<div id="footer">
</div>
</div>
ここで、完全な CSS を提供します (それほど簡単ではないため)。
.content {position:relative; overflow:hidden;} //hidden overflow just a hack for common issues...
.content_left {height:auto; float:left} //set height to auto (very important)
.content_center {height:300; float:left} //a fixed height also works!
.content_right {height:auto; float:right}
.content_footer {width:100%; height:auto; float:right} //for tests you can also set a fixed height
このソリューションは、Stackoverflow の他のスレッドによるものでもあります: Align DIV's to bottom or baseline、How to align of content of a div to the bottom?
しかし、それで問題が発生した場合は、これを行うことができます (私の推奨する解決策):
<div id="content">
<div id="content_left">
</div>
<div id="content_center">
</div>
<div id="content_right">
</div>
</div>
<div id="footer">
</div>
そしてそのCSS:
.content {position:relative; overflow:hidden;} //hidden overflow is just a hack
.content_left {height:auto; float:left} //set height to auto (very important)
.content_center {height:300; float:left} //a fixed height also works!
.content_right {height:auto; float:right}
.content_footer {width:100%; height:xxx; float:left} //you can use any height...
上記のすべてのソリューションは、すべての「コンテンツ」を浮動小数点に設定した場合にのみ機能することに注意してください。絶対値では機能しません! ここで見つけました:http://wiki.answers.com/Q/How_can_a_parent_DIV_wrap_around_child_DIVs_which_are_floating_left_or_right
これは div の問題によるものです: 親 div にサイズを「伝える」ことはできません! そのため、「content_center」や「content_right」などの子要素は、「コンテンツ」に、それらの長さと「コンテンツ」がどれくらいの長さでなければならないかを伝えません。そのため、子に絶対値を使用する場合、フッターのどこに配置するかを伝えることは不可能です。
2 番目の質問は、些細なことのように見えますが、非常に重要な質問であり、簡単には解決できません。
重要な更新:
私は今、解決策を見つけようとしましたabsolute
。問題は、absolute
とfixed
が通常の (テキスト) フローから取り出されるため、それらのサイズが他の要素のサイズ/配置に影響を与えることができなくなることです。absolute
しかし、要素は依然としてすべての子を制御していることも理解する必要があるためrelative
、親ではなく子を設定する必要があります (ここでは「コンテンツ」)。だから私は最終的に解決策を見つけました.それは私が上で提案したこととほとんど反対であるため、かなり奇妙ですが、その解決策は他の人の投稿の影響を受けました. ):
<div id="header">
</div>
<div id="content">
<div id="content_left">
</div>
<div id="content_center">
</div>
<div id="content_right">
</div>
<div id="footer">
</div>
</div>
CSS (「ヘッダー」は、「コンテンツ」が「content_left」、「content_right」などのすべての位置をその子に継承することを明確に示しています):
.header {position:absolute; left:0; top:0; height:100; width:100%}
.content {position:absolute; left:0; top:100; height:auto; min-width:700} //min-width is only voluntary, but quite useful
.content_left {position:relative; left:0; top:0; width:200; height:auto;} //height:auto is important to adapt the height from containing text!
.content_center {position:relative; left:200; top:0; right:200; width:auto; height:auto;} //in the middle element, also auto-width is important!
.content_right {position:fixed; right:0; top:0; width:200; height:1000;} //we set a fixed position, but that won't influence the footer anymore!
.content_footer {margin:0 0 60 0; position:relative; left:0; bottom:-60; width:100%; height:150;} //a fixed height is also okey...but relative position is needed!
//you still need to add margin:0; border:0; padding:0 or similar values for some elements to get a good layout
ここで重要な点は、どの子要素が最も長いかを決定し、この要素の を設定position:relative
し、もう一方の要素にはabsolute
またはを設定できるということfixed
です。ただし、どの要素が最も長くなるかわからない場合は、すべての子の位置を として設定する必要がありますrelative
。とにかく、すべての子をrelative
(fixed
必要に応じて)に設定することをお勧めします。これは、親の「コンテンツ」が絶対的な高さ位置をすでに正しく設定しているため、まったく必要がないためabsolute
です。
私は自分自身を繰り返しています:上で書いたのは、親divにサイズを伝えることは不可能です...実際には可能ですが、値absolute
とfixed
が使用されている場合は不可能です。static
ブラウザの標準値 ( ) またはを使用する場合にのみrelative
、親 div に子のサイズが通知されるため、ページの下部にフッターが正しく設定されます。
margin:0 0 60 0
さて、私のソリューションはどこでも機能します... IE (6.0 と 8.0 でテスト済み!) でも、値60
が の正の値でなければならないハックのためですbottom:-60
。これで、非フローティング クロスブロワー ソリューションをついに手に入れることができました。;)