懶載入應該是現在網站提高效能常用的的方法之一,小白們可能會想,嗯,我知道,或者我看過,就是動手操作少,沒錯我就是這樣的小白,在網上看過千遍萬遍不如動手操練一遍,所以在我操練之後大概來個小總結,哈哈哈見笑了(有錯誤希望大家及時指出)
首先先說說懶載入和預先載入的區別哈
懶載入:就是需要資料的的時候在載入,不用的時候我不載入
預載入:就是提前把 資料載入好
拿圖片懶載入為例哈:
第一步:首先你需要獲取所有img標籤
var aImg = document.querySelectorAll('img');
第二步:獲取地理位置資訊
var scrollT = $(window).scrollTop();
var winH = $(window).height();
如果當前圖片到文件頂部的距離當前瀏覽器的高度+滾動條距離頂部的距離,我們就載入圖片
說到載入圖片我們首先把圖片的地址存在data-src中,載入的時候把data-src的屬性賦值給src
if (aImg[i].offsetTop < scrollT + winH) {
aImg[i].src = aImg[i].getAttribute('data-src');
}複製程式碼
那就是這樣
function loadImg() {
var scrollT = $(window).scrollTop();
var winH = $(window).height();
var aImg = document.querySelectorAll('img');
var len = aImg.length;
for (var i = 0; i < len; i++) {
if (aImg[i].offsetTop < scrollT + winH) {
aImg[i].src = aImg[i].getAttribute('data-src');
}
}
}複製程式碼
如果想實現下拉,載入介面下一頁的資料,可以下面的方法實現
var URL = 'moubao.com/goods?page=…'
題外:下拉載入下一頁的資料
function loadPage() { var n = 0; var len = vm.array.length; var pageH = $(document.body).height(); var scrollT = $(window).scrollTop(); var winH = $(window).height(); var aa = (pageH - winH - scrollT) / winH; if (aa < 0.5) { getData(i); } flag = false; } 注:getData()函式 function getData(pagenumber){ i++ $.ajax({ type: 'get', url: URL, data: { page: pagenumber, size: gPageSize }, dataType: 'json', success: function(ajaxData) { console.log(ajaxData); }, }); }複製程式碼
不過在呼叫loadImg()的時候,別直接寫loading(),放在例如
$('window').scroll(functin(){
loagImg();
loadPage();
});
因為,兩個函式都要實時獲取到$(document.body).height();
$(window).scrollTop();
$(window).height();
的值
所以大概這樣吧,我在做公司的新人專案,就把其中的一些東西做一些小的總結,如果有寫的不好的地方,歡迎大家指出……^_^