懶加載

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

window.jpg

元素處于窗口高度外
窗口高度 + 垂直滾動距離 = 元素垂直方向距離

元素開始出現(xiàn)
窗口高度 + 垂直滾動距離 > 元素垂直方向距離

元素開始消失
垂直滾動距離 > 元素垂直方向距離

元素消失完畢
垂直滾動距離 > 元素垂直方向距離 + 元素自身高度

滾輪向下滾動的距離 == 元素上升的距離

function isVisible($node){
  var scrollTop = $(window).scrollTop()
  //滾動的高度
  var windowHeight = $(window).height()
  //窗口高度
  var offsetTop = $node.offset().top
  //元素距離頂端的高度
  if( offsetTop < scrollTop + windowHeight && offserTop > scrollTop) 
  //元素距離頂端的高度 小于 窗口高度 并且 大于滾動高度(元素出現(xiàn)的時候)
    {
      return true
      //返回true
  }
  return false
}

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

  function isVisible($node){
    var scrollTop = $(window).scrollTop()
    //滾動的高度
    var windowHeight = $(window).height()
    //窗口高度
    var offsetTop = $node.offset().top
    //元素距離頂端的高度
    if( offsetTop < scrollTop + windowHeight && offserTop > scrollTop) 
    //元素距離頂端的高度 小于 窗口高度 并且 大于滾動高度(元素出現(xiàn)的時候)
    {
      return true
      //返回true
    }
    return false
  }
  //方法一
  $(window).on('scroll',function(){
    if(isVisible){
      console.log(true)
    }
  })
------------------------------------
  //方法二
  $(window).on('scroll',function(){
    xxx()
  })
  function xxx(){
    $(node).each(function(){
      if(isVisible($(this))){
        console.log(true)
      }
    })
  }

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

function isVisible($node){
  var scrollTop = $(window).scrollTop()
  //滾動的高度
  var windowHeight = $(window).height()
  //窗口高度
  var offsetTop = $node.offset().top
  //元素距離頂端的高度
  if( offsetTop < scrollTop + windowHeight && offserTop > scrollTop) 
  //元素距離頂端的高度 小于 窗口高度 并且 大于滾動高度(元素出現(xiàn)的時候)
    {
      return true
      //返回true
  }
  return false
}

var hadShow = false;
$(window).on('scroll',function(e){
  var $markImg = $('.markImg');
  //獲取該元素
  if(!hadshow && isVisiblie($markImg) ){  
  //事件為true并且元素出現(xiàn)在了窗口中
    console.log(true); 
    //輸出true
    hadShow = true;
    //改變值
  }
})

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

以上的思路
1.對于所有的img標(biāo)簽幽钢,把真實的地址放入自定義屬性data-img
2.當(dāng)滾動頁面時,檢查頁面所有的img標(biāo)簽傅是,看看這個標(biāo)簽是否出現(xiàn)到我們的視野匪燕,當(dāng)出現(xiàn)在我們視野時吹缔,再去判斷它是否已經(jīng)加載過捐寥,如果沒有加載過,加載它囊榜。
另外的思路
展示一部分HTML內(nèi)容书闸,在底部埋入一個DOM節(jié)點界拦,用戶看不到這個節(jié)點,但在滾動的過程中梗劫,假設(shè)用戶滾動到了底部享甸,這個節(jié)點出現(xiàn)在瀏覽器窗口,向后臺發(fā)送ajax請求梳侨,得到數(shù)據(jù)蛉威,把這些數(shù)據(jù)拼裝成DOM放到頁面上。這個加載節(jié)點又被新加入的元素?fù)蜗氯チ俗卟福?dāng)用戶再滾動的過程中蚯嫌,重復(fù)獲取添加數(shù)據(jù)。

懶加載的好處:同時加載所有圖片,影響用戶體驗择示,浪費多余流量消耗(如:手機)束凑,出現(xiàn)卡頓情況,所以使用懶加載栅盲。

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

預(yù)覽地址

實現(xiàn)新聞自動懶加載效果98 (這里是參考代碼282汪诉, 其中html里的為前端代碼, js 里的內(nèi)容為 router.js里的后端代碼谈秫, 也可參考視頻271)

參考代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扒寄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拟烫,更是在濱河造成了極大的恐慌该编,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硕淑,死亡現(xiàn)場離奇詭異课竣,居然都是意外死亡,警方通過查閱死者的電腦和手機置媳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門稠氮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人半开,你說我怎么就攤上這事≡叻荩” “怎么了寂拆?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抓韩。 經(jīng)常有香客問我纠永,道長,這世上最難降的妖魔是什么谒拴? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任尝江,我火速辦了婚禮,結(jié)果婚禮上英上,老公的妹妹穿的比我還像新娘炭序。我一直安慰自己,他們只是感情好苍日,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布惭聂。 她就那樣靜靜地躺著,像睡著了一般相恃。 火紅的嫁衣襯著肌膚如雪辜纲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機與錄音耕腾,去河邊找鬼见剩。 笑死,一個胖子當(dāng)著我的面吹牛扫俺,可吹牛的內(nèi)容都是我干的苍苞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼牵舵,長吁一口氣:“原來是場噩夢啊……” “哼柒啤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起畸颅,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤担巩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后没炒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涛癌,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年送火,在試婚紗的時候發(fā)現(xiàn)自己被綠了拳话。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡种吸,死狀恐怖弃衍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坚俗,我是刑警寧澤镜盯,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站猖败,受9級特大地震影響速缆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜恩闻,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一艺糜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧幢尚,春花似錦破停、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至边涕,卻和暖如春晤碘,著一層夾襖步出監(jiān)牢的瞬間褂微,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工园爷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宠蚂,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓童社,卻偏偏與公主長得像求厕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扰楼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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

  • 題目1:如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間呀癣,肉眼可視)。寫一個函數(shù) isVisib...
    饑人谷_林嘉俊閱讀 173評論 0 0
  • 如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間弦赖,肉眼可視)寫一個函數(shù) isVisible實現(xiàn) ...
    YM雨蒙閱讀 232評論 0 0
  • 題目1:如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間项栏,肉眼可視)。寫一個函數(shù) isVisib...
    柚丶稚橙熟時閱讀 172評論 0 0
  • 1.如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間蹬竖,肉眼可視)沼沈。寫一個函數(shù) isVisible...
    飄飄流浪者閱讀 1,382評論 0 2
  • 1.如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)币厕。寫一個函數(shù) isVisible...
    GarenWang閱讀 469評論 0 2