当前位置: 首页 > news >正文

手写图片懒加载

参考来自前辈 Aidan路修远i 的文章面试官:请你手写一下!懒加载 - 掘金 (juejin.cn)

Hello.vue 

<template><div><!-- src里面为空,data-original里面写图片真正的url(此处省略) --><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original="">    <img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""></div>
</template><script>export default {name: 'Hello',methods: {//懒加载函数lazyLoad(){// 拿到所有的img元素let imgs = document.querySelectorAll('img[data-original]');imgs.forEach(el=>{// getBoundingClientRect()专门获取容器的几何信息let rect = el.getBoundingClientRect()// 拿到可视觉区域的高度let viewHeight = window.innerHeight;if(rect.top<viewHeight){// img元素自带一个构造函数,可以创建一个图片对象let image = new Image()// js专有写法dataset.original; = data-originalimage.src = el.dataset.original;//监听图片加载完成后,再给src赋值// image.onload = function(){//     el.src = image.src// }el.src = image.src// 图片加载完毕就移除属性el.removeAttribute('data-original')}})}},mounted() {// 添加滚动事件监听器document.addEventListener('scroll', this.lazyLoad)},beforeDestroy() {//移除滚动事件监听器document.removeEventListener('scroll', this.lazyLoad)}}
</script><style scoped>img {display: block;height: 300px;width: 300px;margin-top: 50px;}
</style>

App.vue

<template><div id="app"><Hello /></div>
</template><script>
import Hello from './components/Hello.vue'export default {name: 'App',components: {Hello},}
</script><style>
</style>

http://www.lryc.cn/news/371071.html

相关文章:

  • 大型语言模型(LLMs)的后门攻击和防御技术
  • 力扣2594.修车的最少时间
  • 攻防演练之-成功的钓鱼邮件溯源
  • Gi标签管理
  • 2024福建等保测评公司有哪些?分别叫做什么名字?
  • 王先宏老师厉害了,活页笔记版古琴曲谱拆箱图
  • TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台
  • Springboot的小型超市商品展销系统-计算机毕业设计源码01635
  • UV胶开裂主要因素有哪些?如何避免?
  • LogicFlow 学习笔记——3. LogicFlow 基础 节点 Node
  • VMware清理拖拽缓存
  • 跨语言系统中的功能通信:Rust、Java、Go和C++的最佳实践
  • 4. Revit API UI 之 Ribbon(界面)
  • js数组方法
  • PyTorch -- 最常见损失函数 LOSS 的选择
  • Prometheus 监控系统
  • Spring Boot中使用logback出现LOG_PATH_IS_UNDEFINED文件夹
  • 代码随想录——组合总数Ⅲ(Leetcode216)
  • Android native层的线程分析(C++),以及堆栈打印调试
  • 计算机科学:2024年高考生的明智之选?兴趣与趋势并重的决策指南
  • 跨界合作机会:通过淘宝数据挖掘潜在的合作伙伴与市场拓展方向
  • 如何利用智能家居打造一个“会呼吸的家”?一体化电动窗帘
  • PyTorch -- 最常见激活函数的选择
  • 人工智能--制造业和农业
  • go语言,拼接字符串有哪些方式
  • C++类型转换深度解析:从基础数据类型到字符串,再到基础数据类型的完美转换指南
  • 一文了解:渐进式web应用(PWA),原生应用还香吗?
  • SOLIDWORKS学生支持 可访问各种产品资源
  • VCS基本仿真
  • Hbase中Rowkey的设计方法