瀑布流

mac2026-04-18  4

//#瀑布流 class Waterfall{ constructor() { this.box = document.querySelectorAll('.box'); this.count = document.querySelector('.count'); this.clientW = document.documentElement.clientWidth; this.clientH = document.documentElement.clientHeight; this.heightArr = []; this.url = "接口"; this.init(); this.addEvent(); } init() { this.maxNum = parseInt(this.clientW / this.box[0].offsetWidth); this.count.style.width = this.maxNum * this.box[0].offsetWidth + 'px'; this.firstLine(); this.otherLine(); } firstLine() { for(var i = 0; i < this.maxNum; i++) { this.heightArr.push(this.box[i].offsetWidth); } } otherLine() { for(var i = this.maxNum; i < this.box.length; i++) { var min = Math.min.apply(null, this.heightArr); //在不改变this的情况下,让Math方法,强行执行一组数组 var minIdx = this.heightArr.indexOf(min);//求出第一排中最低高度的索引 this.box[i].style.position = "absolute"; this.box[i].style.left = minIdx * this.box[0].offsetWidth + 'px'; this.box[i].style.top = min + 'px'; this.heightArr[minIdx] += this.box[i].offsetHeight;//重置原本最小值,让之后图片都依次使用 } this.lastTop = this.box[this.box.length-1].offsetTop; } load() { var that = this; ajaxGet(this.url,function(res) { that.res = json.parse(res.) that.display(); }) } addEvent() { onscroll = function() { var scrollT = document.documentElement.scrollTop; if(this.lastTop - scrollT < that.clientH + 200) { that.load(); } } } display() { var str = ''; for(var i = 0; i < this.res.length; i++) { str += `<div class = "box"> <div class = "imgbox"> <img src = "${this.res[i].img}" alt=""> </div> </div> `; } this.cont.innerHTML += str; this.heightArr = []; this.box = document.querySelectAll(".box"); this.firstLine(); this.otherLine(); } } new Waterfall();

 

最新回复(0)