VUI创建日志一图片懒加载指令的实现
1. 项目实现介绍vue 项目搭建参考《Webpack4 搭建 Vue 项目》 文档使用 vuepress, 官方文档 https://vuepress.vuejs.org 发布文档 github pages + gh-page 项目地址 https://github.com/zxpsuper/vui-vue 文档地址 https://zxpsuper.github.io/vui-vue 处于自我摸索阶段,期待留下您的宝贵意见! 2. v-lazy 的基本实现图片懒加载的基本原理: 先用占位图代替目标图片的 src 属性值当图片的 offsetTop < innerHeight + scrollTop 时,即图片出现在窗口内部,此时修改 src 值为 data-src 的值当然,这一切需要不断地监听滚动事件先实现一个懒加载函数var img = document.getElementsByTagName('img');function lazyload() { //监听页面滚动事件 var seeHeight = window.innerHeight; //可见区域高度 var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; //滚动条距离顶部高度 for (var i = 0; i < img.length; i++) { if (img[i].getAttribute('data-image-show')) continue; // 如果已经加载完成,则不需走下面流程 if (img[i].offsetTop < seeHeight + scrollTop) { console.log(img[i].offsetTop, seeHeight, scrollTop); if (img[i].getAttribute('src') == Vue.$vuiLazyLoad.img) { img[i].src = img[i].getAttribute('data-src'); img[i].setAttribute('data-image-show', 'true'); // 给个标识,表示已经加载完成 } } } }滚动监听滚动监听,不断滚动便会不断触发滚动监听的函数,影响性能,因此在此需要加入一个防抖函数 ...