图片预加载就是在页面真正渲染一张图片时,先模拟一个图片(new Image()),让它去服务器请求要加载的图片路径,请求完成以后把路径给真正html页面上的图片的src路径;而后再把新建立的图片清除了(形象点说:那个新建立的图片至关于一个跑腿小弟,办完事以后就被杀了,hahhahah~~~)html
let realSrc = ele.getAttribute('realSrc');
let temp = new Image();
temp.src = realSrc;
temp.onload = function () {
ele.src = realSrc;
}
temp = null;
复制代码
在浏览器渲染图片页面以前先用一个默认的图片代替,当那个图片显示到页面某个位置的时候再换成真正的图片git
//图片露出一半的时候,把图片地址换成真实地址,显示真实图片,其余时候显示默认图片
function loadImg(ele) {
if (ele.flag) return;
let scT = document.documentElement.scrollTop || document.body.scrollTop; //卷去的高度
let wH = winH().h; //一屏幕路的高度
let t = offset(ele).t; //当前元素到body 的偏移量
let h = ele.clientHeight
if (scT + wH > t + h / 2) {
//说明图片露出一半
console.log(666)
ele.flag = true;
// ele.src = '1.jpg';
//图片预加载
let temp = new Image();
temp.src ='1.jpg';
temp.onload = function () {
//这张图片加载完成以后会触发该函数
ele.src = temp.src;
fadeIn(ele);//执行图片渐现效果
temp = null;
}
}
}
//让图片慢慢的显示出来 ,也就是控制透明度
function fadeIn(ele) {
//让图片的opacity从0到1;
//you are the shadow to my lift
ele.style.opacity = 0;
let n = 0;
ele.timer = setInterval(() => {
n += 0.01;
if (n >= 1) {
clearInterval(ele.timer);
}
ele.style.opacity = n;
}, 100);
}
复制代码
一、获取数据 封装成一个函数,去实现获取数据的操做
二、渲染数据 把从后台获取到的数据展现页面上,按照列来展现的,
循环后台给的数组, 而后把每一条数据拼接好,添加到长度最小的那一列
这里封装了一个获取长度最小的列的方法 getMinLi
把元素集合转成数组, 而后按照 clientHeight 进行排序,由此找到最低的哪一个li;
三、滚动加载更多,长度最小的哪一个li的底部露出来时,咱们就去加载新的数据;
loadMore方式 一次性请求屡次 咱们作了一个flag的判断;只有当flag为false的时候,
才去执行新数据的请求,当请求开始的时候
咱们把flag置为true,渲染成功 咱们把flag再置为false;
四、再加上图片懒加载的操做;loadImg loadAll
懒加载 就是当图片尚未出现到可视窗口的时候,不去加载图片,
只有当图片露出来的时候 咱们再去加载真正的图片
预加载 就是 当图片要展现成真正的图片时, 先用默认图展现,
而后再利用JS建立一个临时的图片,让这张临时的
图片去远程请求 真正的图片, 当请求成功以后,
再把这个真实图片的地址赋给页面上的哪一个img标签
五、实现图片的渐显 fadeIn 利用定时器 对img进行 opacity的累加操做;
复制代码
github.com/polikesen12…github