2016-06-15 7 views
9

フレックスボックスの使用に問題があり、親要素と子要素のネストのしくみを明確にしたいと考えました。フレックスコンテナのネスト時のフレックスプロパティの適切な使用

私は子供が親のフレックスを継承していることを知っています。しかし、あなたは子供(赤ちゃん)のために子供をフレキシブルにする必要がある場合、それは上書きされますか?フレックスボックスの正しい使い方は?

子供のためにdisplay: flexの子供のために服用しなければならない場合、または子供の親のフレックスを上書きするのはいつですか?

.parent-container { 
    display: flex; 
    flex: 1 0 100%; 
} 
.child-container { 
    flex: 1 1 50% 
} 
.baby-of-child-container { 
    flex: 1 1 50%; 
} 
<div class='parent-container'> 
    <div class='child-container'> 
    <div class='baby-of-child-container'></div> 
    <div class='baby-of-child-container'></div> 
    </div> 
    <div class='child-container'> 
    <div class='baby-of-child-container'></div> 
    <div class='baby-of-child-container'></div> 
    </div> 
</div> 
+1

私は孫がこれを記述する良い方法だと思います。 – Eoin

答えて

23

flex formatting contextの範囲は、親/子関係に制限されています。

これは、フレックスコンテナは常に親であり、フレックスアイテムは常に子であることを意味します。 Flexプロパティは、この関係内でのみ機能します。

子を超えたフレックスコンテナの子孫は、フレックスレイアウトの一部ではなく、フレックスプロパティを受け入れません。

フレックスプロパティを子供に適用するには、常にdisplay: flexまたはdisplay: inline-flexを親に適用する必要があります。

フレックスコンテナ(例えば、justify-contentflex-wrap及びflex-direction)にのみ適用され、特定の屈曲特性があり、フレックスアイテム(例えば、align-selfflex-growflex)にのみ適用され、特定の屈曲特性があります。

ただし、フレックスアイテムはフレックスコンテナでもあります。このような場合、要素はすべてのflexプロパティを受け入れることができます。各プロパティが異なる機能を実行するので、内部的な競合はなく、上書きする必要はありません。

+0

時々、親にだけでなくすべての祖先に 'flex:1'または' flex-grow: 'を適用することをお勧めします。私はそのアドバイスと答えを見て、ここでいくつかリンクしていきます。これは私にとって問題を混乱させるので、他の人にとってもそうだと思います。 – hippietrail

+0

React Nativeの場合、基本的に*レイアウト全体*はflexで構成されていますが、これは[自分のリンク先の質問](https://stackoverflow.com/questions/46459506)に焦点を当てようとしました。したがって、RNでは、ほとんどのコンポーネントが実際にコンテナと子の両方です。私はRNを初めて使っていて、ウェブ上でフレックスを使ったことがないので、RNにあるようにレイアウトの大半をフレックスで使用するのがウェブ上で一般的なのかどうかわからないので、フレックスの専門知識、特にReact Nativeフレックスの専門知識を持つ方。 – hippietrail

関連する問題