Chromeブラウザ以外では、左側のサイドバーの内容に問題があります。overflow:hidden
を尊重していません。 Firefoxでは、.container
divの300ピクセルに制限される代わりに、IEとEdgeのサイドバーが拡張されています。誰もがこの動作を修正する方法を知っていますか?Flexbox +オーバーフロー:hidddenはChromeでのみ動作します
https://jsfiddle.net/o1uu1d0L/2/
Chromeブラウザ以外では、左側のサイドバーの内容に問題があります。overflow:hidden
を尊重していません。 Firefoxでは、.container
divの300ピクセルに制限される代わりに、IEとEdgeのサイドバーが拡張されています。誰もがこの動作を修正する方法を知っていますか?Flexbox +オーバーフロー:hidddenはChromeでのみ動作します
https://jsfiddle.net/o1uu1d0L/2/
私はこの問題が発生した二つの理由があると思い
.flex-fill {
display:flex;
min-height: 0;
flex:1 1 0%;
}
に
.flex-fill {
display:flex;
flex:1 1 auto;
}
を変更してください:
は、最初の問題はIEにはないということです単位なしflex-basis
を受け入れます。そのため、flex: 1 1 0%
またはflex: 1 1 0px
を使用する必要がありますが、flex: 1 1 0
では使用できません。この場合でもflex: 1 1 auto
は機能しませんでした。
第2の問題は、ChromeとFirefoxでdisplay: flex
の解釈が異なることです。デフォルトでは、Firefoxはをdisplay: flex
要素に設定し、Chromeはmin-height: 0; min-width: 0
と設定します。そして、あなたが必要とするのは第二の選択肢です。
この単純な変更がすべての問題を解決するかどうかはわかりません(ただし、IEとFirefoxでテストしたときには問題ありません)。そうでない場合は、私が書いたことを考えて、他のクラスで同様の変更を加えてください。私はそれが助けることを願っていますいくつかの変更と
ここで詳細に説明されていますが、おそらく助けになるでしょう:https://philipwalton.com/articles/normalizing-cross-browser-flexbox-bugs/ –
素晴らしい説明をありがとう。 – Bam
あなたのコード:
<div class="container">
<div class="flex-col flex-fill">
<div class="flex-row flex-fill">
<div class="flex-col flex-50 dragscroll default-box" style="margin-right:5px;">
<div class="button selected">1</div>
<div class="button">2</div>
<div class="button selected">3</div>
<div class="button">4</div>
<div class="button">5</div>
<div class="button selected">6</div>
<div class="button selected">7</div>
<div class="button">8</div>
<div class="button">9</div>
<div class="button">10</div>
</div>
<div class="flex-fill default-box">
center
</div>
<div class="flex-250 default-box" style="margin-left:5px;">
side
</div>
</div>
<div class="default-box flex-50" style="margin-top:5px;">
bottom
</div>
</div>
</div>
.container {
width:500px;
height:300px;
display:flex;
flex-flow:column;
background:lightblue;
}
.buttons-container {
min-height:1px;
height:100%;
flex:0 1 50px;
border:1px solid #CCC;
background:#FFF;
margin-right:5px;
overflow:hidden;
display:flex;
flex-flow:column;
}
.flex-col {
display:flex;
flex-flow:column;
overflow:hidden;
}
.flex-row {
display:flex;
flex-flow:row;
overflow:hidden;
}
.flex-fill {
display:flex;
flex:1 1 auto;
}
.flex-50 {
display:flex;
flex:0 0 50px;
}
.flex-250 {
display:flex;
flex:0 0 250px;
}
.default-box {
background:#FFF;
border:1px solid #CCC;
}
.plot-area {
display:block;
position:relative;
flex:1 1 auto;
background:#FFF;
border:1px solid #CCC;
box-shadow:1px 1px 4px rgba(0,0,0,0.1);
}
.button {
background:#cfeceb;
vertical-align:middle;
margin-bottom:5px;
text-align:center;
color:#56b6b2;
cursor:pointer;
font-size:26px;
flex:1 1 auto;
display:flex;
flex-direction:column;
justify-content:center;
min-height:50px;
}
.button.selected {
background:#56b6b2;
color:#FFF;
}
.button:last-child {
margin:0 !important;
}
あなたの例は間違っている - あなたは 'オーバーフロー含ま' .buttons-container'持っている:hidden'を、しかし、そのクラスは一例では、使用中どこにもありません。 '.container'クラスに' overflow:hidden'を置くと、それは意図した通りに動作します、と私は思いますか? – junkfoodjunkie
質問を読んだ後にそれを見ると、フィドルは明確ではありません...あなたはそれを確認できますか? – kukkuz
申し訳ありませんが、私はそこにいるはずのクラスをいくつか残しました。 'overflow:hidden'は' div'の 'style'属性で宣言されています。 @ mohsen-newtoaと@ patryk-Łuckaの両方の答えが問題を解決します。 – Bam