2016-06-23 12 views
6

コンテンツでサイズ変更される50%幅の子divを2つ保持する親divが必要です。空白で50%のdivを2つ:フレックスコンテナ内のnowrap要素

h3white-space:nowrap;が含まれているため、divが50%を超えて大きくなります。

min-width:0;を使用してdivを強制的に50%幅に戻すことができますが、h3はオーバーフローします。

だから私は、いずれかの内の子divsまたはh3からのオーバーフローに異なる幅を取得します。

内部にwhite-space:nowrap;の要素があっても、同じ50%幅にすることはできますか?

は、ここで問題をチェックアウト:http://codepen.io/anon/pen/VjPwLm?editors=1100

#parent { 
 
    background: whitesmoke; 
 
    display: inline-flex; 
 
} 
 
#left { 
 
    background: rgba(10, 200, 250, 0.5); 
 
    flex-basis: 0; 
 
    flex-grow: 1; 
 
} 
 
#right { 
 
    background: rgba(250, 200, 10, 0.5); 
 
    flex-basis: 0; 
 
    flex-grow: 1; 
 
    /*min-width:0;*/ 
 
    /* Turn this on to see the h3 overflow */ 
 
} 
 
h3 { 
 
    white-space: nowrap; 
 
}
<div id="parent"> 
 
    <div id="left">Captain Deadpool</div> 
 
    <div id="right"> 
 
    <h3>Very long title that does not entirelly fit into the div</h3> 
 
    </div> 
 
</div>

答えて

5

を私が正しく理解していれば、あなたは左フレックス項目が同じ幅長いタイトルのようになりたいです。

その後、次のことができます。両方のフレックス項目の

  • 使用min-width: 100%は、その文章の連結と同じ幅にそれらを作ります。それで、彼らは同じように広いでしょう。

  • 最初のフレックスアイテムのテキストが含まれているため、幅が広すぎます。それを無視するにはwidth: 0を使用してください。

#parent { 
 
    background: whitesmoke; 
 
    display: inline-flex; 
 
} 
 
#left, #right { 
 
    min-width: 100%; 
 
} 
 
#left { 
 
    background: rgba(10,200,250,0.5); 
 
    width: 0; 
 
} 
 
#right { 
 
    background: rgba(250,200,10,0.5); 
 
    white-space: nowrap; 
 
}
<div id="parent"> 
 
    <div id="left">Captain Deadpool</div> 
 
    <div id="right"><h3>Very long title that does not entirelly fit into the div</h3></div> 
 
</div>

+0

スマート。左側のフレックスアイテムで 'width:0;'を使用することによる副作用は、フレックスコンテナの背景色と境界線が正しい幅の50%しか持たないことです。それを修正する方法はありますか? –

+0

@Amoguai良い点。私はフレックス・アイテムで 'min-width:50%'、フレックス・コンテナで 'width:200%'を使い、インライン・レベルのコンテナの中にラップすることができると思います。 [デモ](https://jsfiddle.net/610o1whg/)。しかし、フレックスコンテナはラッパーをオーバーフローします。私はオーバーフローを取り除く方法を考えることができません。 – Oriol

+0

@Amoguai私は余裕をもってそれをしました。しかし、画面が狭すぎると、デフォルトのフィットコンテンツの代わりにmax-contentを使用してサイズを調整する必要があるため、画面が狭すぎると破損します。しかし、すべてのブラウザが 'width:max-content'をサポートしているわけではありません。 [Demo](https://jsfiddle.net/610o1whg/1/) – Oriol

0

私が正しく問題を理解していれば、あなたは彼らが50%の幅を持っているように、2つのdivをmaintianたいです。 親divの幅を100%に設定し、#rightと#leftをmin-width:50%に設定します。 オーバーフローが隠されるようにh3に追加します。

#parent { 
 
    background: whitesmoke; 
 
    display: inline-flex; 
 
} 
 
#left { 
 
    background: rgba(10, 200, 250, 0.5); 
 
    flex-basis: 0; 
 
    flex-grow: 1; 
 
    min-width: 100%; 
 
} 
 
#right { 
 
    background: rgba(250, 200, 10, 0.5); 
 
    flex-basis: 0; 
 
    flex-grow: 1; 
 
    min-width: 100%; 
 
} 
 
h3 { 
 
    white-space: nowrap; 
 
}
<div id="parent"> 
 
    <div id="left">Captain Deadpool</div> 
 
    <div id="right"> 
 
    <h3>Very long title that does not entirelly fit into the div</h3> 
 
    </div> 
 
</div>

+1

親と子のdivがオーバーフローするのではなくコンテンツのサイズを変更するようにします。基本的に私は、親divに最大の子divの2倍の幅を持たせたい。 –

+0

メディアクエリを使用して小さな画面で動作を再フォーマットすることはできますが、フローティング要素のようにスタックするのが理想的です。 –

関連する問題