2016-10-21 15 views
1

此簡單示例在Chrome中呈現的方式與Firefox或Edge中的呈現方式不同;在一種情況下,main flex項目會縮小以適合flex容器(設置爲視口高度),但在另一箇中則不會。是基於一些錯誤的渲染差異,還是其他東西?嵌套在具有顯式高度的列柔性容器中的行柔性容器在Chrome和Firefox中以不同方式呈現

html, body { 
 
    height: 100%; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
main { 
 
    display: flex; 
 
    background: #f60; 
 
}
<main> 
 
    <!-- any element longer than the viewport --> 
 
    <img src="https://i.redd.it/e7a2rxhf1yrx.jpg"> 
 
</main>

編輯a more clear example

+0

我認爲這個問題是默認的彎曲方向似乎是在鉻比它不同的FF和IE瀏覽器 - 打開你的FF瀏覽器對圖片,然後壁球全高它寬度的方式,你會看到你有同樣的問題,你用高鉻方式擠壓鉻時。如果您指定了彎曲方向,您會看到它們的行爲方式都是相同的。你有什麼理由需要主彎曲嗎? – Pete

+0

在兩個瀏覽器中,默認的flex方向都是'row'。 – slikts

回答

1

似乎是不同瀏覽器之間有關它們如何可以解釋柔性盒內柔性盒的屬性的不一致,但我設法通過將內盒的高度設置爲0,然後將柔性盒設置爲在外部彈性盒內增長100%(或1)。以下是使用您的代碼的示例。

html, body { 
 
    height: 100%; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
main { 
 
    display: flex; 
 
    background: #f60; 
 
    height: 0; 
 
    flex-grow: 1; 
 
}
<main> 
 
    <!-- any element longer than the viewport --> 
 
    <img src="https://i.redd.it/e7a2rxhf1yrx.jpg"> 
 
</main>

2

看來flexbox不會縮小比例replaced elements像瀏覽器中的圖像(具有內在縱橫比),至少在這一刻!我相信這是發生在這裏的事情。

(我看過類似的東西here並會見了一個問題,用圖像作爲柔性項here

解決方案: 一種解決方案是在柔性的項目使用max-height: 100%甚至可以是否應該使用flex-basis: 100%總是充滿父高度:

html, body { 
 
    height: 100%; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
main { 
 
    display: flex; 
 
    background: #f60; 
 
    max-height: 100%; 
 
}
<main> 
 
    <!-- any element longer than the viewport --> 
 
    <img src="https://i.redd.it/e7a2rxhf1yrx.jpg"> 
 
</main>

+0

設置固定高度不是解決方案,因爲它違背了使用flexbox的目的。這種行爲也不是特定於被替換的元素。我只是用一張圖片使其縮放更加明顯。 – slikts

+0

嗯,我們沒有設置一個固定的高度,但'max-height'('max-height'仍然是FF和Chrome中這種行爲差異的一個解決方案) - 並且你是對的,我想這肯定是**而不是被替換的元素。 – kukkuz

+1

我認爲行爲上的差異是由於瀏覽器實現在嵌套柔性盒中計算寬度/高度時的細微差異 - 可以視爲* bug *。作爲一般規則,它很好地約束柔性方向上的維度,以在嵌套柔性盒中獲得一致的結果。看到這個:https://codepen.io/anon/pen/wzRVzA沿着flex-axis的'flex:1'使cross-axis行爲一致... – kukkuz

相關問題