当一个网页中有大量的图片需要加载时,我们需要确保它们能够准确且及时地呈现到用户眼前。这时候,javascript就发挥了它在前端开发中重要的作用——通过监听图片的加载事件,使得页面能够更加稳定和流畅。
假如一个网页中有如下结构:
<div id="container"> <img src="image1.jpg"> <img src="image2.jpg"> <img src="image3.jpg"> ... <img src="imagen.jpg"> </div>
我们需要确保在所有图片加载完毕后,才能正常显示页面。那么该如何编写代码呢?
一般来说,我们可以通过遍历所有图片元素,然后使用jquery的load()和onload事件来监听图片是否加载完成。
$(document).ready(function() { var images = $('#container img'); var imagesTotal = images.length; var imagesLoaded = 0; images.on('load', function() { imagesLoaded++; if (imagesLoaded == imagesTotal) { // do something } }).each(function() { if (this.complete) { $(this).trigger('load'); } }); });
以上代码做了如下几个操作:
1、获取到所有图片元素,并记录图片的数量
var images = $('#container img'); var imagesTotal = images.length;
2、遍历所有图片,判断是否已经加载完成,如果已经完成,则手动触发'onload'事件
images.each(function() { if (this.complete) { $(this).trigger('load'); } });
3、监听每个图片元素的'onload'事件,记录每张图片是否成功加载,并在所有图片加载完毕后执行相应的操作
images.on('load', function() { imagesLoaded++; if (imagesLoaded == imagesTotal) { // do something } });
通过上述代码的运行,我们会在控制台输出所加载的图片数量。这种方式可以确保所有图片都加载完成后再进行其他操作。
不过有时候,我们还需要在等待图片加载的同时,展示一些消息提示,让用户了解到页面正在加载。这时候,我们可以使用一个简单的loading插件——spin.js。
var opts = { lines: 12, length: 6, width: 3, radius: 6, corners: 1, rotate: 0, direction: 1, color: '#000', speed: 1, trail: 60, shadow: false, hwaccel: false, className: 'spinner', zIndex: 2e9, top: '50%', left: '50%', scale: 1.0 }; var spinner = new Spinner(opts).spin(document.body); $(window).load(function() { spinner.stop(); });
以上代码将展示一个小型loading动画,当页面所有图片加载完成后,loading动画会停止运行并消失。这样,我们可以展示一些有用的提示信息,让用户有耐心等待页面加载完成。
如此,我们就能够使用javascript轻松地检测图片是否加载完成,并在图片载入完毕后进行其他操作!