2017-01-29 3 views
0

IE 11では、Firefox/Chromeではなく、動的に作成された画像の幅と高さの属性をIEが設定しているように見えるため、画像の縮尺が正しくありません。IEでJavaScriptの画像が異なる動作をする

$(function() { 
 
    var image = new Image(); 
 
    image.src = "http://placehold.it/350x1200"; 
 
    $("div").append($(image)); 
 
})
div { 
 
    width: 100px; 
 
    max-height: 100px; 
 
} 
 

 
img { 
 
    max-width: 100%; 
 
    max-height: inherit; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div> 
 
</div>

私はSRCを設定する前に、未定義または/後0に寸法を設定しようとしたが、その後の画像はレンダリングされません。

IEの追加チェックなしでブラウザ間の整合性をどのように達成できますか?画像がキャッシュされているかどうかにかかわらず、すべてのブラウザで機能するように、適切なタイミングでwidth/height属性を削除する方法はありますか?また、私はあらかじめ画像の大きさを知らないかもしれません。

注::この問題はSOのスニペットでは表示されませんが、jsfiddleとローカルのhtmlファイルで表示されます。

編集:ここではは、画像は、Firefox/Chromeで次のようになります。

enter image description hereenter image description here

これは、IE11である:

enter image description hereenter image description here

+0

max-widthスタイルルールでは、相対値ではなく絶対単位が使用されます。子ブロックのインラインブロック要素のサイズを親ブロック要素に合わせるにはstyle = "width:100%" –

+0

を使用します。関連:http://stackoverflow.com/questions/18922942/internet-explorer-adds-height-and-width-attributes-新しく追加された画像-au – user764754

答えて

0

IEは、幅と高さは、まあ、私は、フレーズ、それをその方法ではありませんでしょう動的に作成された画像

の属性を設定していますように思えるので。私はむしろ、$(image)を使用して、JS Image要素を追加可能なHTMLコードに「しよう」と言うと、この予期しない結果が出ているようですが、そのコードは私にとっては奇妙に見えます。

あなたは、単純な

$("div").append('<img src="http://placehold.it/350x1200">'); 

IE 11であることを置き換えたら、他のブラウザと同じ画像を表示します。

+0

JS画像は、他のどのような(HTMLでは見えない)HTMLImageElementでなければなりません。結果のイメージオブジェクトは 'src'を設定する前に' onload'を設定するのを容易にするためImageコンストラクタを使用していますが、あなたのソリューションでも可能である必要があります。 – user764754

+0

私はHTMLImageElementを$()に渡すと、それが文字列に変換されるので、その暗黙的なtoString変換メソッドが呼び出されると思います。それがどこに指定されているかわからないので、IEと他のブラウザはHTMLの結果の文字列の幅と高さの属性が意味をなさないかどうかについてここでは同意しないかもしれません。 //しかし正しいですが、ロードハンドラをアタッチできるようにするには、あらかじめ 'new Image()'を使用していることを止めてはいけません。単に両方を組み合わせることができます。 – CBroe

0

変更

img { 
    max-width: 100%; 
    max-height: inherit; 
} 

img{width:100%} 

にオーバーフローを追加し、親のdivの高さをオーバーフローやリサイズ子要素を停止するには:隠されました;ディビジョンへのルールそうしないと、画像は自然な値とは異なるアスペクト比でレンダリングされ、奇妙に見えます。

+0

残念ながら私は高さを制限する必要があります。また、アスペクト比はFirefox/Chrome(29x100)でも正しいです。 IEでのみ100x100の正方形になります。 – user764754

関連する問題