国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

jquery實現(xiàn)圖片預加載

2024-05-06 16:26:52
字體:
來源:轉載
供稿:網(wǎng)友
這篇文章主要介紹了jquery實現(xiàn)圖片預加載的方法,內(nèi)容很詳細,帶領大家全方位學習jquery圖片預加載,感興趣的小伙伴們可以參考一下
 

使用jquery實現(xiàn)圖片預加載提高頁面加載速度和用戶體,本就為大家詳細分析jquery圖片預加載的實現(xiàn)原理。

什么時候使用圖片預加載?

如果頁面使用了很多不是最初加載便可見的圖片,有必要進行預加載:

$.preloadImages = function () { for (var i = 0; i < arguments.length; i++) { $('img').attr('src', arguments[i]); }};$.preloadImages('img/hover-on.png', 'img/hover-off.png');

我們在做網(wǎng)站的時候經(jīng)常會遇到這樣的問題:一個頁面有大量的圖片導致頁面加載速度緩慢,經(jīng)常會出現(xiàn)一個白頁用戶體驗很不好。那么如何解決這個問題 呢?首先我們會想到的是提高服務器性能,使用靜態(tài)緩存等手段來加快圖片的加載速度,這的確是個好方法,不過有時候我們也可以從前臺找一些解決的 方法。下面我來介紹一種在實際應用中經(jīng)常會使用到的js預加載的方法。
首先在輸出圖片的時候我們做一些處理<imgdata="這里是我們要顯示圖片的實際地址"src="這里是一張默認顯示的小圖片,可以快速加載到頁面。可以是所有圖片使用統(tǒng)一的圖片也可以是要顯示圖片的縮略圖"alt="圖片名"/> 處理完html我們開始寫js了,在這里我使用了jquery的類庫。    

$('img[data]').load(function(){  var __this__ = $(this);  var url = __this__.attr('data');  var src = __this__.attr('src');  if(url ==''|| url == src)//這里判斷如果圖片實際地址不存在或者已經(jīng)加載不處理  {   return;  }  var img =newImage();//實例化一個圖片的對象  img.src = url;//將要顯示的圖片加載進來   if(img.complete)//如果圖片已經(jīng)加載存在瀏覽器緩存中直接處理   {   __this__.attr('src',url);//將要顯示的圖片替換過來   return;   }   img.onload =function(){//要顯示的圖片加載完成后做處理   __this__.attr('src',url);   } }); 

實例講解:Javascript,Jquery實現(xiàn)頁面圖片預加載百分比展現(xiàn)

如果需要在頁面初始加載時顯示加載進度。主要是指圖片很多的情況下:

可以使用第三方Jquery插件jquery.imgpreload.min.js 
調用里面的方法:imgpreload即可,實例如下:

var imgNum = 0;var images = [];$(function(){ preloadImg(); }); //里面有兩種方式function preLoadImg() { //第一種方式:通過dom方法獲取頁面中的所有img,包括<img>標簽和css中的background-image /*get all imgs those tag is <img> var imgs = document.images; for (var i = 0; i < imgs.length; i++) {  images.push(imgs[i].src); } //get all images in style var cssImages = getallBgimages(); for (var j = 0; j < cssImages.length; j++) {  images.push(cssImages[j]); }*/  //第二種方式:把所有該網(wǎng)頁上用到的圖片文件都預先放入一個數(shù)組里  $.imgpreload(['images/bg1.jpg', 'images/bg2.jpg'], function () {   //此處是顯示進度百分比時需要用到的背景圖,這個可以先加載進去 });  //then push all other images in array to load  images.push("images/test_1.png"); images.push("images/test_2.png"); images.push("images/test_3.png"); //。。。 images.push("images/test_n.png");   /*這里是真正的圖片預加載 preload*/ $.imgpreload(images, {  each: function () {   /*this will be called after each image loaded*/   var status = $(this).data('loaded') ? 'success' : 'error';   if (status == "success") {        var v = (parseFloat(++imgNum) / images.length).toFixed(2);    $("#percentShow").html(Math.round(v * 100) + "<sup>%</sup>");       }  },  all: function () {   /*this will be called after all images loaded*/   $("#percentShow ").html("100<sup>%</sup>");    $("percentShow").fadeOut(1000);      $(".main").show();  } });} //get all images in style(此方法引用其他博客的)function getallBgimages() { var url, B = [], A = document.getElementsByTagName('*'); A = B.slice.call(A, 0, A.length); while (A.length) {  url = document.deepCss(A.shift(), 'background-image');  if (url) url = /url/(['"]?([^")]+)/.exec(url) || [];  url = url[1];  if (url && B.indexOf(url) == -1) B[B.length] = url; } return B;} document.deepCss = function (who, css) { if (!who || !who.style) return ''; var sty = css.replace(//-([a-z])/g, function (a, b) {  return b.toUpperCase(); }); if (who.currentStyle) {  return who.style[sty] || who.currentStyle[sty] || ''; } var dv = document.defaultView || window; return who.style[sty] || dv.getComputedStyle(who, "").getPropertyValue(css) || '';} Array.prototype.indexOf = Array.prototype.indexOf || function (what, index) {  index = index || 0;  var L = this.length;  while (index < L) {   if (this[index] === what) return index;   ++index;  }  return -1; }

這樣就能在頁面圖片很多,且網(wǎng)速很慢的情況下給予用戶一個百分比提示。 
在做這個之前,由于每次本地測試加載都很快,百分比瞬間到100%然后消失,為了看上去有那么一回事,我還寫了一個偽百分比進度條,僅供參考:

 var t = window.setTimeout("preLoad()", 100); function preLoad() {  $("#loading div").animate({ width: step + "px" }, 50).text(step + "%");  step += 1;  if (step <= 100) {   t = window.setTimeout("preLoad()", 100);  } else {   clearTimeout(t);   $("#loading").fadeOut(1000);   $("#preloadImg").fadeOut(1000);      $(".main").show(); }

這是一個頁面初始化完成之后,在頁面上有一個模擬百分比不斷增長的過程,到100%后消失進度條,顯示主頁面,不過跟實際頁面加載沒任何關系哦。

以上就是針對jquery圖片預加載進行的詳細學習,希望對大家的學習有所幫助。



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 浠水县| 玉山县| 阳江市| 甘德县| 安远县| 北川| 洛宁县| 西乡县| 靖江市| 呼伦贝尔市| 雷州市| 彩票| 武川县| 循化| 边坝县| 庆元县| 陈巴尔虎旗| 太保市| 离岛区| 名山县| 定结县| 永春县| 鸡泽县| 文安县| 灵台县| 喀喇沁旗| 西畴县| 沐川县| 饶河县| 金阳县| 陆河县| 施甸县| 潼关县| 柯坪县| 和顺县| 宜川县| 卢湾区| 博罗县| 通海县| 湟中县| 芷江|