懶加載

題目1:如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間抒倚,肉眼可視)。寫一個函數(shù) isVisible實現(xiàn)

function isVisible(ele)
 {
   var offsettop=$(ele).offset().top;
   var windowscrolltop=$(window).scrollTop();
   var docHeight= $(document).height();
   if((offsettop< windowscrolltop+docHeight)&&(offsettop>windowscrolltop))
   {
     return true;
  
   }
    return false;
 }
image.png


題目2:當(dāng)窗口滾動時思币,判斷一個元素是不是出現(xiàn)在窗口可視范圍。每次出現(xiàn)都在控制臺打印 true 汗唱。用代碼實現(xiàn)

function isVisible(ele)
 {
   var offsettop=$(ele).offset().top;
   var windowscrolltop=$(window).scrollTop();
   var windowHeight= $(window).height();
   if((offsettop< windowscrolltop+windowHeight)&&(offsettop>windowscrolltop))
   {
     return true;
  
   }
    return false;
 }
//普通做法如下:
$(window).on('scroll',function(){
  console.log(isVisible('.box'));
  //一般的做法空郊,缺點是滾動一次會觸發(fā)很多次事件份招,當(dāng)執(zhí)行的代碼很多時,對用戶的體驗會很不好 
})
//優(yōu)化的角度狞甚,每次滾動停止時觸發(fā)锁摔,這樣可以做到優(yōu)化代碼的功能 。
//下面是優(yōu)化的代碼:
var s;
$(window).on('scroll',function(){
  if(s)
  {
    clearTimeout(s);

  } 
  s=setTimeout(function(){
  console.log(isVisible('.box')) ;
  },300);  
})

總結(jié)一般的做法哼审,缺點是滾動一次會觸發(fā)很多次事件谐腰,當(dāng)執(zhí)行的代碼很多時,對用戶的體驗會很不好
優(yōu)化的角度涩盾,每次滾動停止時觸發(fā)十气,這樣可以做到優(yōu)化代碼的功能



題目3:當(dāng)窗口滾動時,判斷一個元素是不是出現(xiàn)在窗口可視范圍春霍。在元素第一次出現(xiàn)時在控制臺打印 true砸西,以后再次出現(xiàn)不做任何處理。用代碼實現(xiàn)

function isVisible(ele)
 {
   var offsettop=ele.offset().top;
   var windowscrolltop=$(window).scrollTop();
   var windowHeight= $(document).height();
   var nodeHeight=$(ele).height();
   if((offsettop< windowscrolltop+windowHeight)&&(nodeHeight+offsettop>windowscrolltop))
   {
     return true;
   }
    return false;
 }
function Firstappear(ele)
{ //如果擁有show這個class表明不是第一次出現(xiàn)
  if(ele.hasClass("show"))
  {
    return false;
  }
  else
  {
    ele.addClass("show");
    //第一次出現(xiàn)則添加show
    return true;
  }
}
$(window).on('scroll',function(){
  //一般的做法址儒,缺點是滾動一次會觸發(fā)很多次事件芹枷,當(dāng)執(zhí)行的代碼很多時,對用戶的體驗會很不好 
 if(isVisible($('.box'))&&Firstappear($('.box'))){
   console.log("first show");
 } 
  
})
//優(yōu)化的角度莲趣,每次滾動停止時觸發(fā)鸳慈,這樣可以做到優(yōu)化代碼的功能,下面時優(yōu)化的代碼
/*var s;
$(window).on('scroll',function(){
  if(s)
  {
    clearTimeout(s);

  } 
  s=setTimeout(function(){
  if(isVisible($('.box'))&&Firstappear($('.box'))){
   console.log("first show");
 } ;
  },300);  
})*/

image.png

代碼顯示地址:https://jsbin.com/wowasafufu/edit?html,js,console,output

題目4: 圖片懶加載的原理是什么喧伞?

當(dāng)頁面滾動的時候走芋,圖片出現(xiàn)在窗口可視范圍內(nèi)的時候進(jìn)行加載,否在不加載絮识。

沒有出現(xiàn)在窗口的可是范圍的時候绿聘,將img標(biāo)簽的圖片地址設(shè)置在data-src屬性上,等到出現(xiàn)在寬口的可是范圍的時候次舌,再將data-src的值賦值給src熄攘。

圖片的懶加載的作用
1.提高了用戶的使用體驗,不用等到圖片全都加載后再顯示彼念,而是慢慢出現(xiàn)在窗口的可視范圍之內(nèi)挪圾。
2.減輕了服務(wù)器的負(fù)載,因為不需要全部將內(nèi)容發(fā)送給瀏覽器逐沙。


題目5: 實現(xiàn)圖片懶加載效果

思路是:篩選出不是沒有加載的圖片(即沒有'show'的class)哲思,然后將查看是否在窗口范圍內(nèi),是的就將data-src的屬性值賦值給src吩案,然后添加'show'這個class

var s;
var imgs=$("ul>li>img").not('.show');
function isVisible(ele)
{
   var offsettop=ele.offset().top+300;
   var windowscrolltop=$(window).scrollTop();
   var windowHeight= $(window).height();
  var nodeHeight=$(ele).height();
   if((offsettop< windowscrolltop+windowHeight)&&(nodeHeight+offsettop>windowscrolltop))
   {
     return true;
   }
    return false;
 }
function imgload(ele)
{
  ele.attr('src',ele.attr('data-src'));
  ele.addClass('show');
}

function lazyLoad(ele)
{
   if(isVisible($(ele)))
   { 
     imgload($(ele));
   }
            
}
$(window).on('scroll',function()
{
    
        
   if(s)
    {
        clearTimeout(s);
    }
    s=setTimeout(function( )
    {$.each(imgs,function(index,img)
        {
           lazyLoad(img);
        });
  
    },300);
   });

代碼地址:https://jsbin.com/qifoyesape/2/edit?js,output



題目6:
代碼地址https://github.com/HappyXll/WEB-KNOWLEDGE/tree/master/ajax-lazy-loading

ScreenGif.gif

總結(jié) 窗口的可視高度是 $(window).height()而不是$(document).height()棚赔,這是整個文檔的高度啊!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末靠益,一起剝皮案震驚了整個濱河市丧肴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胧后,老刑警劉巖芋浮,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異壳快,居然都是意外死亡纸巷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門眶痰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘤旨,“玉大人,你說我怎么就攤上這事竖伯●烧荆” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵黔夭,是天一觀的道長宏胯。 經(jīng)常有香客問我,道長本姥,這世上最難降的妖魔是什么肩袍? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮婚惫,結(jié)果婚禮上氛赐,老公的妹妹穿的比我還像新娘。我一直安慰自己先舷,他們只是感情好艰管,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蒋川,像睡著了一般牲芋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捺球,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天缸浦,我揣著相機(jī)與錄音,去河邊找鬼氮兵。 笑死裂逐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泣栈。 我是一名探鬼主播卜高,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼弥姻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掺涛?” 一聲冷哼從身側(cè)響起蚁阳,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸽照,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颠悬,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡矮燎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了赔癌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诞外。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖灾票,靈堂內(nèi)的尸體忽然破棺而出峡谊,到底是詐尸還是另有隱情,我是刑警寧澤刊苍,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布既们,位于F島的核電站,受9級特大地震影響正什,放射性物質(zhì)發(fā)生泄漏啥纸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一婴氮、第九天 我趴在偏房一處隱蔽的房頂上張望斯棒。 院中可真熱鬧,春花似錦主经、人聲如沸荣暮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穗酥。三九已至,卻和暖如春惠遏,著一層夾襖步出監(jiān)牢的瞬間迷扇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工爽哎, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蜓席,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓课锌,卻偏偏與公主長得像厨内,于是被迫代替她去往敵國和親祈秕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 題目1:如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間雏胃,肉眼可視)请毛。寫一個函數(shù) isVisib...
    柚丶稚橙熟時閱讀 172評論 0 0
  • 如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)瞭亮。寫一個函數(shù) isVisible實現(xiàn)...
    _Dot912閱讀 1,674評論 10 8
  • 題目1:如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間方仿,肉眼可視)。寫一個函數(shù) isVisib...
    湖衣閱讀 189評論 0 0
  • 1.如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間统翩,肉眼可視)仙蚜。寫一個函數(shù) isVisible...
    GarenWang閱讀 470評論 0 2
  • 1- 如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)厂汗。用函數(shù)isVisible實現(xiàn)...
    osborne閱讀 452評論 0 1