HTML + Javascriptを:動的イメージのサイズ変更しますか?
-
21-08-2019 - |
質問
私はプログラム的に正しく、さまざまなサイズの画像を表示するためのHTML JavaScript
タグの幅を調整するためにいくつかのimg
を取得しようとしています。
私は画像を表示するimg
で固定幅800px
タグが、これは最大幅である。
私は広い800px
でそれを表示したい800px
画像はその後、幅が広い場合は、
800px
未満の場合は、広い私はそれをストレッチ避けるために、その幅を維持したい。
私は部分的な解決策を得るために、このHTML / javacriptコードを使用します:
function resize_image(id) {
var img = document.getElementById(id);
var normal_width = img.width;
img.removeAttribute("width");
var real_width = img.width;
if (real_width < normal_width) {
img.width = real_width;
} else {
img.width = normal_width;
}
}
<img id="myimage" onload="resize_image(self.id);" src="https://via.placeholder.com/350x150" width="800" />
上記のコードは、私は(あなたがページを更新しない限り、画像は表示されません)Safari
除いてテストしたすべてのブラウザで動作するようです。
私はCSSのmax-width
が、ショーストッパーですIE
<7上の文句を言わない作業を使用することができます知っています。
どのように私はすべてのブラウザのために、この作業を取得することができますか?事前に感謝します。
解決
私は仕事でサファリを見たことがありませんが、あなたはこれまであなたのonloadイベントを変更してみてくださいすることができます:
onload="resize_image(self.id);return true"
これは、戻り値なしで、サファリは、このオブジェクトがロードされるべきではないと考えている可能性があります。
他のヒント
IE6のCSS + JavaScriptのハックを使用します:
.dynamic_img {
width: expression(document.body.clientWidth <= 800? "auto" : "800px");
max-width: 800px; //For normal browsers
}
IDなします:
...
function resize_image( img )
{
//var img = document.getElementById( id );
...
<img onload="resize_image(this);" src="IMAGE.JPG" width="800" />
あなたはimg.style.width
と猿を試みたことがありますか?あなたはまた、2つの条件のそれぞれについて、2つのCSSクラスを持ってみてくださいとprogrammaticlyそれらを変更することができます。
所属していません StackOverflow