1. 程式人生 > >JavaScript程式碼實現圖片延遲載入並淡入淡出顯示效果

JavaScript程式碼實現圖片延遲載入並淡入淡出顯示效果

對於一個網站,最佔用頻寬,最影響頁面顯示速度的東西就是圖片。圖片是很重要的,有時是必須的,作為一個站長,我們是千方百計的使用各種技巧來優化圖片,我們可以使用 ImageOptim 或 TinyPNG 來消減圖片體積,或用 data URIs 和小圖片來提升圖片載入速度。如果一個頁面上圖片太大,或圖片太多,無法消減,我們有另外一個方法來提升使用者的頁面顯示體驗,那就是延遲載入(lazy load)。之前我們介紹過使用 Lazy Load jQuery 外掛。但其實還有一種更簡單的方法,只需要幾行程式碼,就能達到這種效果。同時,還附加一種淡入淡出的顯示效果.

首先是圖片標記的寫法:

<img data-src="/path/to/image.jpg" alt="">

需要將圖片的地址放到 data-src屬性裡,而src值不需要,直接將src屬性去掉。

CSS程式碼

所有具有data-src屬性的圖片,我們將其初始顯示狀態為不可見,通過透明度來調節:

img {
	opacity: 1;
	transition: opacity 0.3s;
}

img[data-src] {
	opacity: 0;
}
我們最終會將 data-src 屬性去掉,換成src屬性,但這是圖片載入成功後的動作
[].forEach.call(document.querySelectorAll('img[data-src]'), function(img) {
	img.setAttribute('src', img.getAttribute('data-src'));
	img.onload = function() {
		img.removeAttribute('data-src');
	};
});


相比起其它各種的圖片延遲載入技術,這種方法非常的簡單,它幾乎不要求其它任何條件,可以用在任何地方,使用起來非常靈活。


當然,簡單有簡單的好壞,也會因為簡單而不足。它不具有圖片圖片滾動到可視視窗內再載入的功能。最終使用哪種技術,還是要看場景而定。