问题描述
我想预先加载这4张图片。我试过这个:
< img src =img / 1.jpgstyle =display:none>
< img src =img / 1a.jpgstyle =display:none>
< img src =img / 1b.jpgstyle =display:none>
< img src =img / 1c.jpgstyle =display:none>
它没有用,所以我尝试了这个:
new Image()。src =img / 1.jpg;
new Image()。src =img / 1a.jpg;
new Image()。src =img / 1b.jpg;
new Image()。src =img / 1c.jpg;
JS方法适用于后台,但不适用于这些方面。 div> I want to preload these 4 images. I tried this: It didn't work so I tried this instead: The JS method worked with the background but not with these. Try utilizing $.Deferred() , .queue() 这篇关于在HTML中预载图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
$。Deferred(), .queue()
< script src =https:// ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js\"></script><!--注意,不包括`src`属性 - >< img类=imagestyle =opacity:0.0alt =1>< img class =imagestyle =opacity:0.0alt =1a>< img class =imagestyle = opacity:0.0alt =1b>< img class =imagestyle =opacity:0.0alt =1c>
<img src="img/1.jpg" style="display:none">
<img src="img/1a.jpg" style="display:none">
<img src="img/1b.jpg" style="display:none">
<img src="img/1c.jpg" style="display:none">
new Image().src = "img/1.jpg";
new Image().src = "img/1a.jpg";
new Image().src = "img/1b.jpg";
new Image().src = "img/1c.jpg";
var images = ["http://lorempixel.com/1200/800/cats/"
, "http://lorempixel.com/1200/800/nature/"
, "http://lorempixel.com/1200/800/animals/"
, "http://lorempixel.com/1200/800/technics/"
];
// do stuff when image loaded
var loadImage = function loadImage(elem) {
return $(elem).fadeTo(500, "1.0", "linear");
};
// load images
var loadImages = function loadImages(urls, image, complete) {
// `this` : `document`
urls.forEach(function(imageSrc, i) {
var img = new Image;
var dfd = new $.Deferred();
// return `this` : `document`
dfd.then(function(ready) {
loadImage(ready);
return this
}, function(error) {
console.log(error)
})
.always(function() {
console.log(complete, urls.length);
return urls.length === complete
? $(this)
.data("complete", complete + " images loaded")
.dequeue("images") // when all images loaded
: this
});
// log errors
img.onerror = dfd.reject;
img.onload = function(e) {
complete = this.complete ? ++complete : complete;
dfd.resolveWith(document, [
image.eq(i).prop("src", this.src)
]
);
};
img.src = imageSrc
});
// return `this` : `document`
return this
};
$(window).load(function() {
// init `loadImages`
var complete = 0;
// call `loadImages`,
// `this` context : `document`
loadImages.call(document, images, $(".image"), complete)
});
$(document).ready(function() {
// notify when all images loaded
$(this).queue("images", function() {
console.log($(this).data())
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<!-- note , `src` attribute not included -->
<img class="image" style="opacity:0.0" alt="1">
<img class="image" style="opacity:0.0" alt="1a">
<img class="image" style="opacity:0.0" alt="1b">
<img class="image" style="opacity:0.0" alt="1c">