2016-03-23 8 views
2

私は大画面用のimgと小さな画面用のimgを持っています。これは簡単なオプションですが、うまくいけば、同じものを置くのがよいかどうかわかりませんhtmlでさまざまなサイズのimgを表示し、表示なしのものを非表示にしますか?そのオプションに他の問題がありますか?htmlの2つのサイズで同じimg

CSS:

#small { 
    display:none; 
} 

@media screen and (max-width: 630px) { 
#big { display:none; } 
#small { display:block; } 
} 

HTML:

<img id="big" src="img/1-big.jpg"> 
<img id="small" src="img/1-small.jpg"> 
+2

ブラウザの互換性の要件に応じて、画像素子は、あなたが必要なものが考えられます。https://developer.mozilla.org/en/docs/Web/HTML/Element/picture – LDJ

+0

可能重複します。http:/ /stackoverflow.com/q/32161026/3597276 –

答えて

1

これは何も問題ありません。実際には、ページの読み込み時間を短縮し、モバイルでページサイズを小さくすることは認められています(もちろん、デバイスのサイズに合わせてイメージをロードするだけで済みます)。これに代わる

また(Does "display:none" prevent an image from loading?をここを参照してください)私はこれを見ることができる唯一の潜在的な落とし穴として、それは単にdisplay: noneにCSSプロパティを設定すると、常にロードからイメージを妨げるものではないということです、注意してください小文字のが付いているか、または大文字の接尾辞が付いていない(ほとんどの場合、あなたの例にあるように)画像が保存されていることがあります。 javascriptを使用してパスを変更します。例。

// HTML ELEMENT 
<img class='thumbnail' src='img/thumb.png'> 

// JAVASCRIPT 
if(window.innerWidth < 640){ 
    // This is for users with smaller screens, load the smaller image 
    var imgs = document.getElementsByTagName('img'); 

    for(var i = 0; i < imgs.length; i++){ 
    var current = imgs[i].getAttribute('src'); 
    imgs[i].setAttribute('src', current + '-small.png'); 

    // THIS WOULDN'T WORK AS IS, AS IT WOULD PRODUCE '.png-small.png' 
    // AND IS INTENDED **ONLY** TO ILLUSTRATE A CONCEPT 
    } 
} 
3

IMUO私はあなたが二回すべてのイメージのロード(そして隠された)されているので、これは、良い習慣はないと思います。あなたは、ブートストラップ(または応答ページ)を使用している場合は、クラスimg-responsiveまたはこれを使用することができます。

img { 
    width: 100%; 
    height: auto; 
} 

あるいはそうでない場合は、あなたがこれを行うことができます:

/* For width smaller than 400px: */ 
body { 
    background-image: url('1-big.jpg'); 
} 

/* For width 400px and larger: */ 
@media only screen and (min-width: 400px) { 
    body { 
     background-image: url('1-small.jpg'); 
    } 
} 

そのようにやって、あなただけのロード必要なときに画像を読み込み、画像を2回読み込むことを避けます。背景画像としての別の例:https://www.smashingmagazine.com/2013/07/simple-responsive-images-with-css-background-images/

+1

私はそのコードがもっと好きです。しかし、私はその背景を読むことがimg装飾目的のためだけにする必要があります。 imgが意味のあるものであれば、それはhtmlにあり、alt属性に記述されていなければなりません。 – segon

+0

それは本当です。しかし、私は(やはり) 'img-responsive'なスタイルをお勧めします。イメージを一度ロードすると、ブラウザーのすべてのサイズで(ブレイクポイント上だけでなく)穏やかに応答します。あなたが応答性のあるページを持っているなら、それは最高のオプションです。 –

関連する問題