<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
重點:
1.getBoundingClientRect().top > window.innerHeight 圖片未出現
2.getBoundingClientRect().top < window.innerHeight 圖片出現了
HTML:
<ul> ...... <li>2222222222</li> <li>2222222222</li> <li>2222222222</li> <li>2222222222</li> <li>2222222222</li> <li>2222222222</li> /*先用data-自定義標籤,使圖片先不載入*/ <img data-src="./img1.jpg" height="200px"><br> <img data-src="./img2.jpg" height="200px" alt=""><br> <img data-src="./img3.jpg" height="200px" alt=""> </ul>
JavaScript:
let img = document.querySelectorAll('img') window.addEventListener('scroll',() => { img.forEach((item) => { //若圖片頂部高度小於視窗高度 if(item.getBoundingClientRect().top < window.innerHeight) { const data_src = item.getAttribute('data-src') //則將自定義屬性data-src賦值給src屬性 item.setAttribute("src",data_src) } }) console.log("scroll觸發了"); //此方法:若載入很多內容,就會導致任務的堆積,影響整體效率 })
我們可以看到,雖然圖片懶載入已經成功了,但是scroll事件仍在不斷觸發,非常消耗資源,因此目前最推薦使用的方法還是IntersectionObserver
重點:
1.observer.observe(DOM節點) 觀察哪個DOM節點
2.observer.unobserve(DOM節點) 取消觀察某DOM節點
3.callback目標能看見觸發一次;目標元素看不見了又觸發一次
HTML如上
JavaScript:
let img = document.querySelectorAll('img') //此回撥:目標能看見觸發一次;目標元素看不見了又觸發一次 const callback = (entries) => { //接收一個陣列作為引數,陣列每一項都和目標元素相關,比如 isIntersecting判斷目標元素是否被觀察到了,又比如target屬性代表該目標元素 entries.forEach((item) => { //若該目標元素被觀察到了 if(item.isIntersecting) { const img = item.target //目標元素 const data_src = img.getAttribute('data-src') img.setAttribute('src',data_src) observer.unobserve(img) //observer.unobserve(DOM節點) 取消觀察某DOM節點 } console.log('觸發'); }) } const observer = new IntersectionObserver(callback) //遍歷所有img,使得所有img被觀察 img.forEach((item) => { observer.observe(item) //observer.observe(DOM節點) 觀察哪個DOM節點 })
思路:
new一個觀察範例,並通過觀察範例身上的observe屬性觀察每一個圖片。定義callback回撥函數,設定 目標圖片出現時改變屬性
此時我們看到,當所有圖片都懶載入完之後(observe取消觀察DOM節點),scroll事件就不再觸發*
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容! 。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45