当用户滚动页面到图片位置时才加载图片的一种技术,能提高网页加载性能和用户体验。
.通过data-xxx前缀设置我们需要的自定义属性,来进行一些数据的存放,dataset方法可以获取已定义的自定义属性进行使用。
.在进入页面的时候获取所有图片的dom节点,传到自己写的懒加载函数中去,并监听页面的滚动事件,每次触发滚动调用懒加载函数<template> <div class="main-wrap"> <div class="pic-list"> <img v-for="(item,index) in shopData" :key="index" src="../../assets/img/picture1.jpg" :data-src="item.backUrl" /> </div> </div> </template> <script lang="ts" setup> import { onMounted, ref } from "vue"; // 堆代码 duidaima.com const shopData = ref([ { name: "1", backUrl: "https://img.36krcdn.com/20190808/v2_1565254363234_img_jpg" }, { name: "2", backUrl: "https://img.36krcdn.com/20190905/v2_1567641293753_img_png" }, { name: "3", backUrl: "https://img.36krcdn.com/20190905/v2_1567640518658_img_png" }, { name: "4", backUrl: "https://img.36krcdn.com/20190905/v2_1567642423719_img_000" }, { name: "5", backUrl: "https://img.36krcdn.com/20190905/v2_1567642425030_img_000" }, { name: "6", backUrl: "https://img.36krcdn.com/20190905/v2_1567642425101_img_000" }, { name: "7", backUrl: "https://img.36krcdn.com/20190905/v2_1567642425061_img_000" }, { name: "8", backUrl: "https://img.36krcdn.com/20190904/v2_1567591358070_img_jpg" }, { name: "9", backUrl: "https://img.36krcdn.com/20190905/v2_1567641974410_img_000" }, { name: "10", backUrl: "https://img.36krcdn.com/20190905/v2_1567641974454_img_000" }, ]) const lazyLoad = (imgs) => { for(let i =0;i<imgs.length;i++){ let imgoffsetT = imgs[i].offsetTop; //图片距离顶部的高度 let wheight = window.innerHeight; //浏览器可视的高度 let scrollT = document.documentElement.scrollTop; //页面被卷去的高度 if(scrollT + wheight >= imgoffsetT){ //判断图片是否将要出现 imgs[i].src = imgs[i].dataset.src; } } } onMounted(async () => { let imgs = document.querySelectorAll("img"); lazyLoad(imgs); //初始化执行 window.addEventListener("scroll",() => { //滚动执行 lazyLoad(imgs); }) }) </script>