2016-04-03 9 views
1

Firefoxにパディングボトムが表示されないという問題があります。Firefox:オーバーフローした固定配置要素にパディングボトムが表示されない:フレックスコンテナがスクロールする

コンテナの表示プロパティにflex値がある場合、子要素のマージンボトムは無効です。 (表示:ブロックはOKです)

これはFirefoxでのみ発生します。他のブラウザでは、パディング - 先祖の下にマージン - 下が子孫に表示されます。

私に教えてください、なぜこれが起こっているのですか?私は仕様書を読みましたが、答えを見つけることができませんでした。

http://codepen.io/anon/pen/XdeOzy?editors=1100

HTML:

<div class="wrap"> 
    <div class="modal"> 
     <b>[BEGIN]</b> Lorem ipsum dolor sit ... <b>[END]</b> 
    </div> 
</div> 

はCSS:

* { 
    box-sizing: border-box; 
} 

.wrap { 
    position: fixed; 
    top: 0; 
    left: 0; 

    display: flex; 
    width: 100vw; 
    height: 100vh; 

    padding: 20px; /* padding-bottom is not displayed in FF */ 
    overflow-y: scroll; 

    background: rgba(0, 0, 0, .6); 
} 

.modal { 
    width: 400px; 
    margin: auto; 

    /* in the FF it works only when .wrap element 
     has display property with block value, not flex */ 
    /* margin-bottom: 20px; */ 

    padding: 20px; 

    background: #fff; 
} 
+0

**あなたが '表示する理由任意の理由がある:?曲げる;'ラッパーには、** –

+0

私はただの垂直方向の位置合わせのために、このプロパティを使用しました子要素P.P.私は、問題を単純に別の要素を追加して解決し、パディングを割り当てることができます。私の質問はそれを行う方法ではない、私はそのような行動の理由を知りたい。 –

+0

井戸:自動;子フレックスのオーバーフローを可視にすることができますが、オーバーフローするだけです。あなたがalign-itemsとjustify-contentをparentの代わりにparentに設定した場合、margin:auto;振る舞いは一貫していませんが、同じ振る舞いをすることが期待されるときは異なります。http://codepen.io/anon/pen/ONxdGj?editors=1100フレックスチャイルドはどうにかオーバーフローしていますが、まだフレックスベースのデフオルトどういうわけか:)あなたは副作用があり、私はFFが間違っているとは確信していません。子のフレックスはスクロールバーを表示するものになります –

答えて

0

私は、これは非常に奇妙なバグだった、と言っている...私は見ていませんそれ以前。あなたのモーダル要素がラッパーとうまく協力していないとき、要素の重複が問題になるようです。それは次のようにCSSを変更することで解決することができます。

.wrap{ 
    position: fixed; 
    top: 0; 
    left: 0; 
    display: block; 
    width: 100vw; 
    height: 100vh; 
    overflow-y: scroll; 
    background: rgba(0, 0, 0, .6); 
} 
.modal{ 
    width: 400px; 
    margin: 20px auto; 
    padding: 20px; 
    background: #fff; 
}