それが一般的な問題であるかどうかはわかりませんが、これまでのところウェブで解決策を見つけることができません。 2つのdivを別のdiv内にラップしたいのですが、これらの2つのdivは同じレベルに揃える必要があります(たとえば、左は20%、wrappedDivの幅を取り、右は80%を取ります)。この目的を達成するために、次のサンプルCSSを使用しました。ただし、ラップDIVはこれらのdivをすべてラップしませんでした。ラップDivの高さは、内部に含まれている2つのdivよりも小さくなっています。ラップDivが含まれているdivとして最も高いことを確認するにはどうすればよいですか?ありがとう!!!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>liquid test</title>
<style type="text/css" media="screen">
body
{
margin: 0;
padding: 0;
height:100%;
}
#nav
{
float: left;
width: 25%;
height: 150px;
background-color: #999;
margin-bottom: 10px;
}
#content
{
float: left;
margin-left: 1%;
width: 65%;
height: 150px;
background-color: #999;
margin-bottom: 10px;
}
#wrap
{
background-color:#DDD;
height:100%;
}
</style>
</head>
<body>
<div id="wrap">
<h1>wrap1 </h1>
<div id="nav"></div>
<div id="content"><a href="index.htm">< Back to article</a></div>
</div>
</body>
</html>
ブロック内に2つのフロートがある場合、これは一般的な問題です。それを修正する最良の方法は、clear:both
2番目のdiv
の後。
<div style="display: block; clear: both;"></div>
コンテナを強制的に正しい高さにする必要があります。
clear: both
ハック、余分な要素をスキップしてoverflow: hidden
ラッピングdiv
:
<div style="overflow: hidden;">
<div style="float: left;"></div>
<div style="float: left;"></div>
</div>
overflow:hidden
(@Mikael Sによる言及)はすべての状況で機能するわけではありませんが、ほとんどの状況で機能するはずです。
別のオプションは、:after
騙す:
<div class="wrapper">
<div class="col"></div>
<div class="col"></div>
</div>
.wrapper {
min-height: 1px; /* Required for IE7 */
}
.wrapper:after {
clear: both;
display: block;
height: 0;
overflow: hidden;
visibility: hidden;
content: ".";
font-size: 0;
}
.col {
display: inline;
float: left;
}
IE6の場合:
.wrapper { height: 1px; }
これはそれを行う必要があります:
<div id="wrap">
<div id="nav"></div>
<div id="content"></div>
<div style="clear:both"></div>
</div>
すべてをフロートします。
浮かないdiv
の中に浮いたdiv
がある場合、すべてがねじ込みます。そのため、Blueprintや960.gsなどのほとんどのCSSフレームワークはすべて、浮動コンテナとdivs
を使用します。
特定の質問に答えるために、
<div class="container">
<!--
.container {
float: left;
width: 100%;
}
-->
<div class="sidebar">
<!--
.sidebar {
float: left;
width: 20%;
height: auto;
}
-->
</div>
<div class="content">
<!--
.sidebar {
float: left;
width: 20%;
height: auto;
}
-->
</div>
</div>
float:left;
すべての<div>
s。
このCSSハックを使用すると、多くのトラブルと時間を節約できました。
すべてのプロジェクトで使用しています。
ここでは、問題を解決するスニペットを示します(投稿してから長すぎますが、「明確な」修正よりもきれいだと思います)
#nav
{
float: left;
width: 25%;
height: 150px;
background-color: #999;
margin-bottom: 10px;
}
#content
{
float: left;
margin-left: 1%;
width: 65%;
height: 150px;
background-color: #999;
margin-bottom: 10px;
}
#wrap
{
background-color:#DDD;
overflow: hidden
}
<div id="wrap">
<h1>wrap1 </h1>
<div id="nav"></div>
<div id="content"><a href="index.htm">< Back to article</a></div>
</div>
ここに別のものがあります、私は役に立ちました。レスポンシブCSSデザインでも機能します。
#wrap
{
display: table;
table-layout: fixed; /* it'll enable the div to be responsive */
width: 100%; /* as display table will shrink the div to content-wide */
}
警告:しかし、この理論は、絶対位置を持つ内部要素を含むホルダーに対しては機能しません。また、固定幅レイアウトの問題が発生します。しかし、レスポンシブデザインの場合は、優れています。 :)
CSS3の動的な部分では、次の方法で最後の要素にクリアフロートを追加できます。
#wrap [class*='my-div-class']:last-of-type {
display: block;
clear: both;
}
あなたのdivは:
<div id="wrap">
<?php for( $i = 0; $i < 3; $i++ ) {
<div class="my-div-class-<?php echo $i ?>>
<p>content</p>
</div> <!-- .my-div-class-<?php echo $i ?> -->
}
</div>
参照:
HTML
<div id="wrapper">
<div id="nav"></div>
<div id="content"></div>
<div class="clearFloat"></div>
</div>
CSS
.clearFloat {
font-size: 0px;
line-height: 0px;
margin: 0px;
padding: 0px;
clear: both;
height: 0px;
}
ハックの一種であるoverflow:hidden
を使用する代わりに、単純に固定高さを設定しないでください。 height:500px
、親部門へ?
<html>
<head>
<style>
#main { border: 1px #000 solid; width: 600px; height: 400px; margin: auto;}
#one { width: 20%; height: 100%; background-color: blue; display: inline-block; }
#two { width: 80%; height: 100%; background-color: red; display: inline-block; }
</style>
</head>
<body>
<div id="main">
<span id="one">one</span><span id="two">two</span>
</div>
</body>
</html>
秘密はinline-block
。境界線またはマージンを使用する場合、それらを使用するdivの幅を小さくする必要がある場合があります。
注:「SPAN」の代わりに「DIV」を使用する場合、IE6/7ではこれは正しく機能しません。 ( http://www.quirksmode.org/css/display.html を参照)