2012-07-10 37 views
8

ここに他の同様の質問が私の特定の問題を解決することができないためです。子div 100%の高さを親の高さに合わせる

parentの高さに応じて常にright divが100%の高さになる必要があります。内容は内容によってはleft divになります。ここで

はhtmlです:ここでは

<div class="container clearfix"> 
<div class="left"></div> 
<div class="right"></div> 
</div> 

はCSSです:

.container{ 
    min-height: 10px; 
    width: auto; 
    height: auto; 
    background-color: #eeeeee; 
} 

.left{ 
    position: relative; 
    float: left; 
    min-height: 100px; 
    width: 50px; 
    background-color: #dddddd; 
} 

.right{ 
    min-height: 20px; 
    position: relative; 
    float: left; 
    height: 100%; 
    width: 50px; 
    background-color: #dddddd; 
} 

. 

.clearfix:after 
{ 
    content: "."; 
    display: block; 
    clear: both; 
    visibility: hidden; 
    line-height: 0; 
    height: 0; 
} 
.clearfix { 
    display: inline-block; 
} 

注:
私はclearfixを使用しています。
そして、あなたはjsFiddle http://jsfiddle.net/C9Kmx/32/

答えて

0

を、それを試してみました、あなたのための唯一の解決策は、あなたのコードにいくつかのJSを実装することであると私には明らかです。しかしこれは問題ではありません。

http://jsfiddle.net/b7TuP/

+0

を修正することはできません。私は1つの解決策しか見ていませんし、jsを含んでいるので、基本的には単純なCSSで行うことは不可能です。 – skmasq

1

は、右のdivのためposition:fixedheight:100%を付けている。ここjsfiddle

にあなたの答えを表示することができます。これはあなたの問題を解決します。

+0

それは私のために働いていない理由を私は理解できないので、あなたが、私にjsfiddleを表示することができます – skmasq

+0

http://jsfiddle.net/aneeshrajvj/J8qTB/ – aneeshraj

+0

あなたはparrent div以上に飛び跳ねるのを見ることができます。それは私が望むものではありません。私はそれが内部にあることを望む。 – skmasq

11

右のdivをposition:absolute;とし、親divをposition:relative;とし、height:100%;を右のdivに使用します。それに応じてx位置と幅も調整してください。この例では、私はleft:50pxを与えて、それが左の列の右に現れることを確認しました。あなたがこのレイアウトでdisplayプロパティのtable-cell値を使用して、このようfloatを削除することができます

JSFiddlehttp://jsfiddle.net/e9mvD/

+0

私はそれを残すことはできません:50pxは相対値であるため – skmasq

+0

その場合、コンテナdivに固定幅を設定し、絶対配置された右divに 'right:0'を使用して、 divも同様に幅。 – tb11

+0

この解決策は私のために最も効果的でした。これはjavascriptを含めるよりも優先する – Kiee

4

.left, .right{ 
    display:table-cell; 
} 

ライブデモ与えることによって、http://jsfiddle.net/C9Kmx/34/

+2

+1これは左と右の要素に他の制限を課さないので、最高の解決策です。 – techfoobar

+0

このプロパティは基本的に100%の高さを使用しない場合は最低の高さを使用します。 divそれはちょうど崩壊する。 – skmasq

+0

これは優れたソリューションです。ありがとうございます –

0

てみてくださいコンテナの高さは固定値

これも問題を解決します。ただ、他のソリューションにご意見を読み取ることによってjsFiddle

http://jsfiddle.net/C9Kmx/35/

.container 
{ 
    min-height: 10px; 
    width: auto; 
    height: 100px; 
    background-color: #eeeeee; 
} 
+0

前述のように、今のところ – skmasq

1

あなたはフレキシボックスといくつかの創造性を使用してこれを実現することができます。

.container { 
 
    display: flex; 
 
    background: black; 
 
    padding: 5px; 
 
    width: 300px 
 
} 
 

 
.left { 
 
    height: 200px; 
 
    flex: 1 0 0px; 
 
    background: blue; 
 
} 
 

 
.right { 
 
    flex: 1 0 0px; 
 
    overflow: auto; 
 
    background: green; 
 
} 
 

 
.column { 
 
    display: flex; 
 
    flex-direction: column; 
 
    width: 20%; 
 
}
<div class="container"> 
 
    <div class="left"></div> 
 
    <div class="column"> 
 
    <div class="right"></div> 
 
    </div> 
 
</div>

+0

私は同意しますが、IE11はまだサポートされているので、ChromeとFirefoxがflexboxを実装する方法に重大な不一致があります。フレックスボックスは、IE11が落とされるまでは限界があります。 – skmasq

関連する問題