10

フレックスボックスをネストできますか? 水平フレックスボックスに水平フレックスボックスを入れ子にし、垂直フレックスボックスに垂直フレックスボックスを入れ子にしました。クロムでは水平方向の水平方向のみが機能し、Firefox ではどちらも機能しません!

ここで jsfiddle を作成しました: http://jsfiddle.net/NpkTL/1/

しかし、ここにhtmlがあります:

<div id="A">
    <div id="A1">A1</div>
    <div id="A2">
        <div id="A2-container">
            <div id="A2a">A2a</div>
            <div id="A2b">A2b</div>
        </div>
    </div>
</div>
<div id="B">
    <div id="B1">B1</div>
    <div id="B2">
        <div id="B2-container">
            <div id="B2a">B2a</div>
            <div id="B2b">B2b</div>
        </div>
    </div>
</div>

および CSS:

* {
    margin: 0;
    padding: 0;
    font-family: Arial;        
}

#A {
    position: absolute;
    top: 0px;
    left: 0px;
    background: black;
    width: 50%;
    height: 100%;

    display: -moz-box;
    display: -webkit-box;    
    display: box;
    -moz-box-orient: horizontal;
    -webkit-box-orient: horizontal;
    box-orient: horizontal;
}

#A1 {
background: brown;
width: 100px;
height: 80%;   
}

#A2 {
background: orange;
height: 80%;
-moz-box-flex: 1;
-webkit-box-flex: 1;
box-flex: 1;    
}

#A2-container {
    display: -moz-box;
    display: -webkit-box;    
    display: box;
    -moz-box-orient: horizontal;
    -webkit-box-orient: horizontal;
    box-orient: horizontal;
    width: 100%;
    height: 100%;    
}

#A2a {
    background: red;
    height: 80%;   
    -moz-box-flex: 1;
    -webkit-box-flex: 1;
    box-flex: 1;    
}

#A2b {
    background: blue;
    width: 100px;
    height: 80%;
}

#B {
    position: absolute;
    top: 0px;
    right: 0px;
    background: gray;
    width: 50%;
    height: 100%;

    display: -moz-box;
    display: -webkit-box;    
    display: box;
    -moz-box-orient: vertical;
    -webkit-box-orient: vertical;
    box-orient: vertical;

}

#B1 {
    background: brown;
    width: 80%;
    height: 100px;   
}

#B2 {
    background: orange;
    width: 80%;
    -moz-box-flex: 1;
    -webkit-box-flex: 1;
    box-flex: 1;    
}

#B2-container {
    display: -moz-box;
    display: -webkit-box;    
    display: box;
    -moz-box-orient: vertical;
    -webkit-box-orient: vertical;
    box-orient: vertical;
    width: 100%;
    height: 100%;    
}

#B2a {
    background: red;
    width: 80%;   
    -moz-box-flex: 1;
    -webkit-box-flex: 1;
    box-flex: 1;    
}

#B2b {
    background: blue;
    width: 80%;
    height: 100px;
}

左が#A、右が#Bです。#A と #A2-container は垂直フレックスボックスで、#B と #B2-container は水平フレックスボックスです。さまざまな div の色を設定し、各レベル (垂直の幅と垂直の高さ) でそれらを縮小して、何が起こっているかを簡単に確認できるようにしました。左側 (クロム!) では問題ないように見えますが、右側では、#B2a が #B2 (オレンジ色の部分) を垂直方向に埋める必要があります。

この例では、中央の行/列に 3 のフレックスを持つ 1 つのフレックスボックスを使用する方が簡単ですが、コンテンツを #A2 に相当するものに動的にロードしていますが、これもフレックスボックスです。

4

2 に答える 2

5

フレックスボックスは入れ子にすることができますが、配置を取り除く必要があります。とにかく、もうほとんど必要ありません。

今日の時点で残っている問題は、私の経験ではフレックスボックスの z スタッキングです。また、フレックスボックス項目を互いに異なるように主軸に配置することも簡単ではありません (たとえば、行があり、1 つの子項目を左側に配置し、もう 1 つの子項目を右側に配置したい場合は、プレイする必要があります)。痛みを伴う可能性のある余白などで)

また、ブラウザによっては、結果に一貫性がない場合もあります。

とにかく、これを使用することをお勧めします: http://the-echoplex.net/flexyboxes/ とても役に立ちます。

于 2013-08-27T20:51:50.257 に答える
4

Firefoxのフレックスボックスモデルは現在かなりバグがあります。固定または絶対位置のボックスがある場合、それは壊れます。また、幅がないと、フレックスボックスがインラインボックスに戻ります。

于 2012-05-14T17:01:33.420 に答える