2016-05-09 12 views
1

Der folgende Code wird ordnungsgemäß in FF angezeigt, aber wenn in Chrome ausgeführt div 'c' Höhe scheint nicht zu wissen, was 100% bedeutet. Wer weiß warum?Einstellung 100% Höhe des Kind-Div in geschlossenen Flexbox funktioniert nicht

#flex { 
 
    display: flex; 
 
    align-self: stretch; 
 
    flex-flow: column; 
 
    height: 300px; 
 
    width: 100%; 
 
} 
 
#a { 
 
    order: 1; 
 
    flex: 0 1 auto; 
 
    background-color: red; 
 
} 
 
#b { 
 
    order: 2; 
 
    flex: 1 1 auto; 
 
    background-color: blue; 
 
} 
 
#c { 
 
    float: left; 
 
    margin: 5px; 
 
    width:-moz-calc(100% - 10px); 
 
    width:-webkit-calc(100% - 10px); 
 
    height:-webkit-calc(100% - 10px); 
 
    height:-moz-calc(100% - 10px); 
 
    background-color: yellow; 
 
    overflow-y: scroll; 
 
}
<div id='flex'> 
 
    <div id='a'>testa</div> 
 
    <div id='b'> 
 
    <div id='c'>test</div> 
 
    </div> 
 
</div>

Hier ist die jsfiddle Seite für das Bild auf diese Frage angebracht:

https://jsfiddle.net/uya5sboy/

proper output

+2

Danke Michael_B. die "Alternative Solutions" auf diesem Post funktionierten. –

Antwort

0

Dies ist, weil die Eltern nicht angegeben hat Höhe. Webkit-Browser halten sich expliziter an die Spezifikation. In diesem Fall gibt "Prozentsatz" die Höhe dieses Elements an, die sich auf das übergeordnete Element bezieht. Wenn das übergeordnete Element keine explizit angegebene Höhe hat, wird der Prozentwert auf "auto" berechnet (es sei denn, die Position dieses Elements ist absolut).

+0

Geben Sie bei der Veröffentlichung von Material, das von anderen Autoren verfasst wurde, eine korrekte Zuordnung an. Ihr zweiter Absatz stammt direkt aus der [** CSS-Spezifikation **] (https://www.w3.org/TR/CSS21/visudet.html#propdef-height). . Weitere Informationen finden Sie unter [** hier **] (http://stackoverflow.com/help/referencing) und [** hier **] (http://meta.stackexchange.com/q/160077/300177). –

0

Statt die Höhe mit einem Prozentwert zu setzen, da Sie bereits eine Höhe von 300px zu seinem Elternteil festgelegt haben, warum nicht einfach die Höhe manuell einstellen? https://jsfiddle.net/uya5sboy/4/

height: 272px;

0

hat, dass vor einer Weile Problem. Um es zu beheben, fügen Sie einfach height:100% zu Ihrem übergeordneten Container hinzu.

#b { 
    order: 2; 
    flex: 1 1 auto; 
    background-color: blue; 
    height: 100%; 
} 

jsfiddle: https://jsfiddle.net/uya5sboy/3/

nicht die schönste Lösung zwar, aber es funktioniert und ist ziemlich einfach.

+0

In meinem Beispiel können Sie das nicht machen, weil die Flexboxen gestapelt sind. 100% sind 100% von div a, nicht nur b. –

+0

Huh? Ich verstehe es nicht. Funktioniert es nicht wie erwartet in der Geige? Die Höhe: 100% auf div b hat keine wirkliche Wirkung. –

+0

Setzen Sie eine echte Höhe auf div wie 100px, führen Sie die Geige, und Sie werden wirklich den Unterschied sehen, was 100% Höhe auf div b tut. –

Verwandte Themen