更新時間:2021-09-03 10:28:26 來源:動力節(jié)點 瀏覽1024次
當打開一個有很多圖片的頁面時,先只加載頁面上看到的圖片,等滾動到頁面下面時,再加載所需的圖片。這就是圖片懶加載。
減少或延遲請求數(shù),緩解瀏覽器的壓力,增強用戶體驗。
1.設(shè)置圖片src屬性為同一張圖片,同時自定義一個data-src屬性來存儲圖片的真實地址
2. 頁面初始化顯示的時候或者瀏覽器發(fā)生滾動的時候判斷圖片是否在視野中
3?.當圖片在視野中時,通過js自動改變該區(qū)域的圖片的src屬性為真實地址
1.html 部分
<div class="container">
<img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="1" data-src="http://cdn.jirengu.com/book.jirengu.com/img/1.jpg">
.
.
.
<img src="http://smashinghub.com/wp-content/uploads/2014/08/cool-loading-animated-gif-3.gif" alt="20" data-src="http://cdn.jirengu.com/book.jirengu.com/img/20.jpg">
</div>
<style>
.container {
max-width: 800px;
margin: 0 auto;
}
.container:after{
content: '';
display: block;
clear: both;
}
.container img {
float: left;
width: 50%;
}
h1{
clear: both;
}
/*注:img都是浮動,如果不清除浮動,h1的值高度就相當于container里面最高的,不是實際的數(shù)值*/
</style>V
2.js 部分
<script>
start() // 一開始沒有滾動,也需要觸發(fā)一次
$(window).on('scroll', function(){// 滾動時,顯示對應圖片
start()
})
function start(){
$('.container img').not('[data-isLoaded]').each(function(){
var $node = $(this)
if( isShow($node) ){
loadImg($node)
}
})
}
function isShow($node){ // 判斷圖片是否在視野中
return $node.offset().top <= $(window).height() + $(window).scrollTop()
}
function loadImg($img){
$img.attr('src', $img.attr('data-src'))
$img.attr('data-isLoaded', 1) // 區(qū)別圖片是否被加載過,防止重新加載
}
以上就是動力節(jié)點小編介紹的"JS圖片懶加載的實現(xiàn)原理",希望對大家有幫助,想了解更多可查看JavaScript教程。動力節(jié)點在線學習教程,針對沒有任何Java基礎(chǔ)的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關(guān)注一下。