图片懒加载
有时服务器一次返回图片数据很大,一次加载完需要耗费很长时间,这时候,图片懒加载就体现优势
方法一:
通过设置img的src属性来实现懒加载,通过require模拟服务器返回数据
<template>
<div class="content" ref="content">
<template v-for="(item, index) in imgs" :key="index">
<img src="./imgs/1.png" :my-data="item" alt="图片加载中" />
</template>
</div>
</template>
<script>
export default {
name: "app",
data() {
return {
imgs: [],
};
},
created() {
const context = require.context("./imgs", true, /\.png$/); // 根据路径正则读取文件
for (let i = 0; i <= 24; i++) {
let imgName = `./prefix_${i}.png`;
const Img = context(imgName).default;
this.imgs.push(Img);
}
},
mounted() {
//获取全部img标签
let images = document.getElementsByTagName("img");
window.addEventListener("scroll", (e) => {
//当发生滚动事件时调用ergodic事件
ergodic();
});
function ergodic() {
// 遍历每一张图
for (let i of images) {
//判断当前图片是否在可视区内
if (i.offsetTop <= window.innerHeight + window.scrollY) {
//console.log(i.offsetTop, window.innerHeight, window.scrollY);
//获取自定义data-src属性的值
let trueSrc = i.getAttribute("my-data");
//把值赋值给图片的src属性
i.setAttribute("src", trueSrc);
}
}
}
//没发生滚动事件时也要先执行一次
ergodic();
},
};
</script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通