2017-02-17 3 views
0

私はflexbox経由で2つの静的なものの間にスクロールコンテナを取得しようとしています。これら3つの区画を包むコンテナの最大高さは90vhでなければなりません。コードはChromeやFirefoxでは正常に動作しますが、IEやSafariでは動作しません。私はすでにいくつかの一般的なflexbox-bugの回避策をテストしましたが、それらのどれも働いていませんでした。IEとSafariでのFlexboxの最大高さ

例コード:

.outer { 
    max-height: 90vh; 
    width: 400px; 
    display: flex; 
    flex-direction: column; 
} 

.body { 
    flex: 1 1 auto; 
    overflow: auto; 
} 

<div class="outer"> 
    <div class="header">header</div> 
    <div class="body">a lot of content</div> 
    <div class="footer">footer</div> 
</div> 

は事前にhttps://jsfiddle.net/rqz2g3kz/

感謝を参照してください!

+0

http://caniuse.com/#feat=flexbox –

+0

このルール '体{表示を追加してみてください:曲がります。 } '...これでIE11が修正されますが、Safariではどうなりますか? – LGSon

+0

@LGSonありがとうございます。それが解決策です。そのトリックは、_display:flex_を持つ別のコンテナを外側に配置することです。 **重要なことは、それはフレックス方向が内部コンテナの反対であることです** ** Damn IE;) – Tino

答えて

1

@ LGSonのおかげで、私は解決策を見つけました。

誤った容器の周りに反対のフレックス方向を持つラッピング容器を追加すると便利です。

だから例えば、得られたコードはこのようになります:

<div class="outer-wrapper"> 
    <div class="outer"> 
     <div class="head">Head</div> 
     <div class="body">a lot of content</div> 
     <div class="footer">footer</div> 
    </div> 
</div> 

.outer-wrapper { 
    display: flex; 
    flex-direction: row; 
} 

.outer { 
    max-height: 90vh; 
    width: 400px; 
    display: flex; 
    flex-direction: column; 
} 

.body { 
    flex: 1 1 auto; 
    overflow: auto; 
} 
関連する問題