2017-12-23 8 views
1

wahrscheinlich gab es Thema vorher, aber leider funktioniert meine Lösung immer noch nicht. Ich möchte erreichen, dass mein Bild vor der ganzen Seite geladen wird, weil ich gerade schwarzen Hintergrund ERST anstelle von Bild bekomme (Bild lädt nach). Könntest du mir dabei helfen?In Bezug auf Bild laden vor voller Seite

Hier ist meine Lösung so weit (aber ich bekomme schwarzen Hintergrund zuerst anstelle von Bild).

Code:

<script> 
// Preload big parallax image 

function preloadImage() { 


    return new Promise(function(resolve, reject) { 
    var img = new Image(); 
    var img_url = 'assets/images/masthead.jpeg'; 
    img.src = img_url; 
    resolve(img_url); 
    }); 

} 



$(document).ready(function(){ 
    preloadImage().then(function(fromResolve){ 
    $('.ui.inverted.segment.masthead').css('background-image', 'url(' + fromResolve + ')'); 
    }); 
}); 
</script> 

Vielen Dank für Ihre Hilfe.

Antwort

0

könnten Sie versuchen, die folgenden:

// Preload big parallax image 

function preloadImage() { 
    return new Promise(function(resolve, reject) { 
    var img = new Image(); 
    var img_url = 'assets/images/masthead.jpeg'; 
    img.onload = function(x){resolve(img_url);}; 
    img.onerror = function(x){reject([err,img_url]);}; 
    img.src = img_url; 
    }); 

} 
preloadImage()//load the images first 
.then(function(fromResolve){ 
    $(document).ready(//wait for document to be ready 
    function(){ 
     $('.ui.inverted.segment.masthead').css('background-image', 'url(' + fromResolve + ')');  
    } 
) 
}) 
.catch(//if something went wrong 
    function(info){ 
    console.log("image load failed because:",info[0],"url:",info[1]) 
    } 
); 
+0

Unfortunatey noch gleiche zunächst i schwarzen Hintergrund zu sehen und dann nach 1-2sec Bild erscheint:/ – user2204367

+0

@ user2204367 Haben Sie das Element ausblenden möchten, bis das Bild geladen wird? Der Code, wie er ist, sollte das Bild so schnell wie möglich laden (wenn sich das Skript im head-Tag befindet). Auch wenn das Bild nicht zwischengespeichert wird, ist das Vorladen nutzlos, da durch das Setzen des CSS-Hintergrunds das Bild einfach erneut vom Server geladen wird. – HMR

+0

Wahrscheinlich kennen Sie diese Websites mit großen Bildern, also wenn Sie die Website öffnen, lädt sie alle Bilder, indem Sie Ihnen eine Art von Lade-Symbol vor, so dass Sie auf der Website alle Bilder werden vollständig geladen werden, denn jetzt bin ich auf der Website und ich sehe immer noch, wie das Bild noch geladen wird (auch in Frames). – user2204367