2016-05-14 4 views
1

J'essaye de précharger une image alors quand j'ai besoin de la définir en tant qu'image de fond, elle est prête et elle ne se chargera pas pendant la transition CSS. J'ai essayé de le faire en utilisant la méthode load() AJAX, mais je pense que je devrais être capable de le faire sans AJAX. Je ne suis pas sûr que quelque chose comme ça fonctionnerait puisque je n'ai pas besoin d'une balise img ou src, mais quelque chose comme stocker l'URL directe de l'image d'arrière-plan afin que je puisse la définir comme image d'arrière-plan.Comment puis-je précharger une image pour la définir plus tard en tant qu'image de fond avec jQuery?

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

C'est ce que je l'ai fait jusqu'à présent:

$(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)'); 
}); 
}); 

Répondre

1

Après avoir créé l'objet d'image avec

var myImage = new Image(); 

Affectez le src de cette image qui charge l'image dans la cache du navigateur comme ceci:

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

Maintenant que ce soit dans le cache du navigateur, vous pouvez l'ajouter au DOM chaque fois que vous choisissez comme ceci:

document.getElementById('myDiv').style.background = 'url(my-bknd.jpg)'; 
+0

Merci beaucoup, si simple et ça marche! J'utilise une transition linéaire CSS pour l'animation en arrière-plan de l'image en vol stationnaire et cela fonctionne quand je passe la souris, mais pas sur la souris. Est-ce que j'ai une option pour appliquer la transition d'inversion en CSS ou devrais-je aller directement pour un fading jQuery? Je ne suis pas sûr de pouvoir le faire avec des images de fond. –

+0

@AdrianaCota Même si l'animation de l'opacité d'arrière-plan dans css n'est pas largement prise en charge car ce n'est pas une norme CSS (https://www.w3.org/TR/css3-transitions/#animatable-css), il y a un moyen d'obtenir autour de ça. Voici un stylo (http://codepen.io/haltersweb/pen/QNPVLq) où j'ai créé un div contenu avec un div enfant pour agir comme arrière-plan. Lorsque vous passez la souris sur le contenu div, le bknd div transite l'opacité sur 1 sec. Lorsque vous passez la souris, la transition est inversée. l'état hover est sur le parent et la transition d'opacité est sur l'enfant. – haltersweb