2016-05-14 13 views
1

Ich versuche, ein Bild vorab zu laden, also wenn ich es als Hintergrundbild einstellen muss, ist es fertig und es wird nicht während des CSS-Übergangs geladen. Ich habe versucht, es mit der AJAX load() -Methode zu machen, aber ich denke, ich sollte es ohne AJAX machen können. Ich bin mir nicht sicher, dass so etwas funktionieren würde, da ich kein IMG-Tag oder src benötige, sondern so etwas wie die direkte URL des Hintergrundbilds, damit ich es später als Hintergrundbild einstellen kann.Wie kann ich ein Bild vorab laden, um es später mit jQuery als Hintergrundbild festzulegen?

var img = new Image(); img.src = 'img.jpg'; 

Das ist, was ich bisher getan habe:

$(document).ready(function() { 
$('#LogoContainer').hover(function() { 
    $('#LogoMainPart').fadeTo('slow', 0.3); 
    $('#LogoOtherPart').fadeTo('slow', 1); 
    $('#Introduction').css('background-image', 'url(hoverbackground.jpg)'); 
}, function() { 
    $('#LogoMainPart').fadeTo('slow', 1); 
    $('#LogoOtherPart').fadeTo('slow', 0.3); 
    $('#Introduction').css('background-image', 'url(background.jpg)'); 
}); 
}); 

Antwort

1

Nach dem Erstellen des Bildobjekt mit

var myImage = new Image(); 

die src des Bildes Weisen, die das Bild in die Last Browser-Cache wie folgt:

myImage.src = 'my-bknd.jpg'; 

Nun, da es im Browser-Cache ist, können Sie es zum DOM hinzufügen, wenn Sie es so wählen:

+0

Vielen Dank, so einfach und es funktioniert! Ich benutze einen linearen CSS-Übergang für die Hover-Hintergrundbild-Animation und es funktioniert, wenn ich den Mauszeiger halte, aber nicht über die Maus hinaus. Kann ich den Umkehrübergang in CSS anwenden oder sollte ich direkt zu einem jQuery-Fading gehen? Ich bin mir nicht sicher, ob ich das mit Hintergrundbildern machen kann. –

+0

@AdrianaCota Obwohl die animierende Hintergrund-Opazität in CSS nicht weit verbreitet ist, weil es kein CSS-Standard ist (https://www.w3.org/TR/css3-transitions/#animatable-css), gibt es einen Weg, den du bekommen kannst darum herum. Hier ist ein Stift (http://codepen.io/haltersweb/pen/QNPVLq), wo ich ein Inhalts-Div mit einem Child-Div erstellt habe, das als Hintergrund dient. Wenn Sie den Mauszeiger auf das Inhalts-Div setzen, wechselt die bknd div die Opazität über 1 Sekunde. Beim Mouseout geht der Übergang umgekehrt. Der Hover-Status befindet sich auf dem übergeordneten Element und der Opazitätsübergang auf dem untergeordneten Element. – haltersweb

Verwandte Themen