瀑布流

//#瀑布流
    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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值