Reputation: 2701
I am trying to fade in a div
which has an inline background image in it.
I've tried it on images on page load, but how can we achieve that effect with background images in a div
.
Upvotes: 6
Views: 10898
Reputation: 2931
You Can Use a jQuery plugin called waitForImages that can detect when background images have downloaded.
$('selector').waitForImages({
finished:function(){$(this).slideUp();},
waitForAll:true
});
Upvotes: 3
Reputation: 6805
The second answer from the Question linked in the comments, Link here, provides a solution where you load a background-image to an image tag, then when it's ready you inject the image into a div. Here is an example similar, yet different:
html:
<img src="http://www.modernmythmedia.com/wp-content/uploads/2013/04/Iron-Man-wallpaper-2-2032-e1367196003357.jpg" id="dummy" style="display:none;" alt="" />
<div id="pic" style="height:100px;width:100px;display:none;"></div>
jQuery:
$('#dummy').ready(function() {
$('#pic').css('background-image','url(http://www.modernmythmedia.com/wp-content/uploads/2013/04/Iron-Man-wallpaper-2-2032-e1367196003357.jpg)');
$('#pic').fadeIn(1000);
});
With live preview here: Fiddle.
Hopefully this works better for you!
Upvotes: 2
Reputation: 5860
HTML5 Animation will load a canvas context that allows for this and more.
Here is the CSS demo of the animation.
Upvotes: 0
Reputation: 2123
Can you try this?
HTML
<div id="mg" style="background-image:url(http://lorempixel.com/1920/1920/); display:none; width:1920px; height:1920px;"></div>
JS
var elem = $('#mg'),
bgImg = elem.css('background-image'),
imgUrl = bgImg.indexOf('"')!=-1 ?
bgImg.replace('url("','').replace('")','') :
bgImg.replace('url(','').replace(')',''),
nwImg = new Image();
nwImg.src = imgUrl;
nwImg.onload = function() {
elem.fadeIn('fast');
}
nwImg.onerror = function() {
alert('error');
}
JsFiddle
If you change the URL incorrectly, you will see that the error message (for example: background-image:url(hERRRttp://lorempixel.com/1920/1920/);)
Upvotes: -1