2016-09-15 4 views
1

Ich habe ein Image-Tag, in dem ich verschiedene Bilder in Desktop und Mobile anzeigen möchte.wird Bild auf jede Größenänderung geladen?

ich gelöst habe es wie folgt aus:

JS:

function displayResponsiveImage() { 
    var largeImage = $('.responsive-image img.desktop'); 
    var smallImage = $('.responsive-image img.mobile'); 
    var realImage = $('.responsive-image img.real'); 

    var largeImageSrc = largeImage.data('imagesrc'); 
    var smallImageSrc = smallImage.data('imagesrc'); 

    var viewportWidth = window.innerWidth; 

    if (viewportWidth > 480) { 
     realImage.attr('src', largeImageSrc); 
    } else { 
     realImage.attr('src', smallImageSrc); 
    } 

    realImage.show(); 
    largeImage.hide(); 
    smallImage.hide(); 
}; 

$(window).on('resize', function() { 
    displayResponsiveImage(); 
}); 

HTML:

<div class="image-container responsive-image" style=""> 
    <a href="@Url.ContentUrl(Model.Link)"> 
     <img class="desktop" data-imagesrc="@Html.GetUrl(Model.Image, true)" /> 
     <img class="mobile" data-imagesrc="@Html.GetUrl(Model.MobileImage, true)" /> 
     <img class="real" title="@Model.AltText" alt="@Model.AltText" /> 
    </a> 
</div> 

Meine Frage ist: mit diesem Set-up, wird das Bild neu laden auf jeder Größe ändern oder wird es nur neu geladen, wenn das Bild src ändert? Mit anderen Worten, muss ich das weiter optimieren?

+0

Es wird nicht, da alle Bilder geladen werden, sobald Ihr DOM geladen wird, da sie alle im HTML sind. – Roberrrt

+0

aber sie haben keine Quelle ..? – Winter

+1

Wäre es nicht eine Alternative für Sie, dies ohne Javascript zu tun? Nur durch HTML und CSS? –

Antwort

0

Zunächst einmal, wenn Sie die Eigenschaft .src auf den gleichen Wert setzen, den sie bereits hat, ändert sich nichts, nichts wird neu geladen.

Zweitens, Bilder werden vom Browser zwischengespeichert, so dass sie nach dem Laden, wenn sie später verwendet werden, einfach aus dem Cache geladen werden, was schnell ist.

FYI, Sie könnten wahrscheinlich all dies mit CSS media queries tun und lassen Sie den Browser automatisch verarbeiten.

+0

Danke, das war die Antwort, die ich gesucht habe. Aber wie würde ich es mit CSS machen? – Winter

+0

Da ich nicht möchte, dass beide Bilder im Handy geladen werden, werden sie, selbst wenn sie versteckt sind, vom Browser geladen - soweit ich weiß. – Winter

+0

http://stackoverflow.com/questions/12158540/does-displaynone-prevent-an-image-from-loading – Winter

Verwandte Themen