kying-star的博客

vuePress-theme-reco kying-star的博客    2023
kying-star的博客

Choose mode

  • dark
  • auto
  • light
主页
指北
语言学习
AI
前端
后端
算法
杂项
github

kying-star的博客

7

Article

0

Tag

主页
指北
语言学习
AI
前端
后端
算法
杂项
github
  • js
    • 彻底了解This指针
    • 原型与原型链
    • AJAX
    • 防抖与节流
    • 闭包
    • 懒加载
    • 轮播图
    • js作用域
    • JS高阶函数和运行机制
  • css
  • vue
  • typescript
  • React
  • 前端新技术
  • 正则表达式
  • 浏览器

vuePress-theme-reco kying-star的博客    2023

懒加载

kying-star的博客

# 懒加载

啥也不说直接上代码

index.js

var viewHeight =window.innerHeight//获取可视区高度
console.log(viewHeight)
function inSight(el) {
    console.log('it is seen');
    
    return el.getBoundingClientRect().top < viewHeight;
}

function loadImg(el) {
    if (el.src) { 
        el.src = el.dataset.original;
    }
}
function checkImgs() {
    
    const imgs = document.getElementsByTagName('img');
    Array.from(imgs).forEach(el => {
        if (inSight(el)) {
            loadImg(el);
        }
    })
}
window.addEventListener('scroll', checkImgs, false);
window.onload = checkImgs;

index.html

<img src="" class="image-item" lazyload="true"  data-original="images/1.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/2.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/3.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/4.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/5.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/6.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/7.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/8.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/9.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/10.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/11.jpg"/>
<img src="" class="image-item" lazyload="true"  data-original="images/12.jpg"/>

index.css

      .image-item {
	    display: block;
	    margin-bottom: 50px;
	    height: 400px
	}