EdgeとInternet Explorer 11の両方がスケールの標準的なラスターイメージとは異なります。コンテナの幅が固定されていない限り、IE11/EdgeでSVGイメージが正しく描画されない
は、次の例を見てみましょう:
.container {
display: flex;
flex-flow: row nowrap;
}
.box {
flex: 0 1 auto;
background: red;
}
.fill {
flex: 1 0 auto;
background: green;
}
.box img {
display: block;
width: auto;
height: 150px;
background: blue;
}
<div class="container">
<div class="box">
<img src="http://s33.postimg.org/hbl2jy69b/logo_light.png" alt="" />
</div>
<div class="fill">fill</div>
</div>
<div class="container">
<div class="box">
<img src="http://imgh.us/logo-light_1.svg" alt="" />
</div>
<div class="fill">fill</div>
</div>
を両方の画像が同じで、最初はPNGで、他はSVGです。両方の画像は、flex-shrink
に設定されていますが、flex-grow
に設定されていない.box
にあります。ボックスの隣に.fill
があり、flex-grow
に設定されていますが、flex-shrink
には設定されていません。
だから、そのアイデアは本当に簡単です。各画像の高さを固定値に設定し、画像の縦横比を維持して自動的に幅を計算します。画像の幅は、.box
コンテナの幅を丁寧に設定します。 .fill
は残りのスペースを占有します。
例は、クロムとFirefoxの両方でうまく動作し、および2つの同一の画像が表示されている:
をエッジにおいてしかしながら、画像がトリミングされる:
IEのどこがより奇妙であるか:
あなたがここにSVGのソースを表示することができます:http://imgh.us/logo-light_1.svg
を私は私が実際だ1もすべて異なる結果とSVGのpreserveAspectRatio
属性の異なる値のカップルを試みたが、まだいませんでした探している。
何か不足していますか?これはちょうど適切なpreserveAspectRatio
属性の問題か、それともバグですか?
固定幅の値を設定すると、全体の目的に反しすべてそれの。私はPNGを使用することによって問題を起こさないので、おそらく解決策になるでしょう、私はちょうどこれがSVGで起こる理由について興味があります。 –
明らかに、IE 11/EdgeのバグであるようですSVGイメージを間違って不一致でレンダリングします。特にIE11は[** flexbugs **](http://caniuse.com/#search=flex)(*既知の問題*タブを参照)で有名です。私は両方の作業が必要な印象を受けていたので、代替案をテストしていたのです。なぜ単に理由を知りたいのであれば、その答えは3つの単語に過ぎなかったでしょう:*バグです*。 –
うん、それは私が恐れていたことだ。それからPNGです..ありがとう! –