2016-04-15 16 views
2

Hier ist mein HTML:Wie bekomme ich eine Höhe: 100% div in einer Höhe: auto div?

<div id="container"> 
    <div id="red"></div> 
    <div id="yellow"> 
     <div id="green"></div> 
    </div> 
</div> 

Hier ist meine CSS:

#container { height:auto; width:100%; background:orange; float:left; } 
#red  { height:100%; width:200px; background:red; float:left; position:relative; } 
#yellow { height:100%; width:calc(100% - 210px); background:yellow; float:right; position:relative; padding:5px; } 
#green  { height:300px; width:100%; background:green; } 

Hier ist ein Beispiel: https://jsfiddle.net/cc5xL660/

Wie es in der jsfiddle ist, die #reddiv unsichtbar ist. Ich suche nach einer Möglichkeit, die #reddiv ohne eine spezifische height Dimension sichtbar zu machen. Natürlich könnte ich der #reddiv eine height:300px geben, aber die #green Div soll dynamisch sein. Ich möchte die #red Div die gleiche Höhe haben.

+0

Ich glaube nicht, ist es möglich, speziell CSS HTML/für diese Lösung zu nutzen. Die% -Eigenschaft zwingt das untergeordnete Element dazu, die Elternhöhe zu erreichen, die Höhe muss jedoch vordefiniert sein. – ARLCode

Antwort

1

Sie können display:flex verwenden, das zu tun. Werfen Sie einen Blick auf here

#container { 
 
    height: auto; 
 
    width: 100%; 
 
    background: orange; 
 
    float: left; 
 
    display:flex; 
 
    flex-direction:row; 
 
    align-items:stretch; 
 
} 
 

 
#red { 
 
    /*height: 100%;*/ 
 
    width: 200px; 
 
    background: red; 
 
    float: left; 
 
    position: relative; 
 
} 
 

 
#yellow { 
 
    /*height: 100%; 
 
    width: calc(100% - 210px);*/ 
 
    background: yellow; 
 
    float: right; 
 
    position: relative; 
 
    padding: 5px; 
 
    flex:1 0; 
 
} 
 

 
#green { 
 
    height: 300px; 
 
    width: 100%; 
 
    background: green; 
 
}
<div id="container"> 
 

 
    <div id="red"></div> 
 

 
    <div id="yellow"> 
 

 
    <div id="green"></div> 
 

 
    </div> 
 

 
</div>

Fiddle

+0

Ihre Lösung funktioniert sehr gut, aber es ist sehr viel komplizierter als die andere. Wie auch immer, ich habe für deine Antwort gestimmt, danke. – Guillaume

+1

Versuchen Sie, Flex zu verstehen. Es ist die Zukunft. –

+1

Ja. Es ist kompliziert für neue CSS-Lerner und die Antwort, die Sie gewählt haben, ist offensichtlich die beste, einfacher und Cross-Browser-kompatibel. Aber "flex" ist viel einfacher zu implementieren und benötigt sehr wenig Aufwand, um komplexere Designs zu erstellen, sobald Sie es kennen und es wird immer browserkompatibler jeden Tag. Also schlage ich vor, dass Sie es sich ansehen, wenn Sie interessiert sind. – Roy