これはSafariの問題にすぎず、私にはSafariのバグのように見えます。これが fiddle で、問題の簡略化されたバージョンです。
画像が入れ子になっている場合flexbox element with a width set and height: auto
引き伸ばされています...自動高さが機能していません。これをSafariで機能させるには、何か追加する必要がありますか?
.container {
display: flex;
flex-direction: column;
}
.container section:first-child {
display: flex;
margin-bottom: 25px;
}
.container img {
width: 125px;
height: auto;
}
<div class="container">
<section>
<img src="https://via.placeholder.com/250">
</section>
<section>
<img src="https://via.placeholder.com/150">
</section>
</div>
アスペクト比を維持するために、画像の高さが自動的に調整されることを期待しています。これはSafariを除くすべてのブラウザで機能します。 Safariでは、画像が引き伸ばされ、自動高さが機能しません。
確かにバグのようです。
thealign-items
プロパティ のデフォルト設定はstretch
です。ほとんどの主要なブラウザはこれを賢く処理し、画像を拡張しますコンテナの範囲内。
なんらかの理由で、Safariは画像を自然な高さに伸ばし、コンテナを乗せます。
flex-direction: row
この問題を修正するには、flex-start
プロパティのalign-items
でstretch
デフォルト値を上書きします。
.container {
display: flex;
flex-direction: column;
}
.container section:first-child {
display: flex;
align-items: flex-start; /* new */
margin-bottom: 25px;
}
.container img {
width: 125px;
height: auto;
}
<div class="container">
<section>
<img src="http://i.imgur.com/60PVLis.png">
</section>
<section>
<img src="http://i.imgur.com/60PVLis.png">
</section>
</div>
flex-direction: column
フレックスコンテナーの方向をcolumn
に切り替えると、問題も修正されます。これは、align-items
が幅に適用されるため機能しますand画像の幅を定義しました。
画像の寸法を逆にする場合
.container img {
width: 125px;
height: auto;
}
に
.container img {
width: auto;
height: 125px;
}
... Safariでもflex-direction: row
と同じ問題が発生し、修正にはalign-items: flex-start
が必要です。
.container {
display: flex;
flex-direction: column;
}
.container section:first-child {
display: flex;
/* align-items: flex-start; */
margin-bottom: 25px;
}
.container img {
width: auto;
height: 125px;
}
<div class="container">
<section>
<img src="http://i.imgur.com/60PVLis.png">
</section>
<section>
<img src="http://i.imgur.com/60PVLis.png">
</section>
</div>
実際の例については、私のデモを参照してください、flex-direction: column;
この問題を修正します。
.container {
display: flex;
flex-direction: column;
}
.container section:first-child {
display: flex;
flex-direction: column;
margin-bottom: 25px;
}
.container img {
width: 125px;
height: auto;
}
<div class="container">
<section>
<img src="https://via.placeholder.com/250">
</section>
<section>
<img src="https://via.placeholder.com/150">
</section>
</div>