http://www.bin012.com/index.php?route=product/product&path=63&product_id=52

效果在https://m.zqins.com/xiaoguotu/?hx=135&&lx=&&fg=&&jb=查看

 html:

<section class="effect-tab-content clearfloat">

<div class="container">

<div class="content">
</div>
<div class='load-more'><i class="layui-icon layui-icon-loading-1 layui-icon layui-anim layui-anim-rotate layui-anim-loop"></i>滑到最底部加载更多</div>
</div>
</section>

 

js:

;(function() {
    function WaterFull(ele, opts) {
        this.ele = this._selector(ele);
        this.conWidth = this.ele.offsetWidth;
        this.defaults = {
            type: 2,
            urlField: 'url',
            widthField: 'width',
            heightField: 'height',
            countField:'count',
            idField:'id',
            didField:'did',
            titleField:'title'
        };
        this.opts = this._extend({}, this.defaults, opts);
        this._init();
    }

    WaterFull.prototype = {

        _init: function() {
            var listNode = document.createElement('div');
            listNode.id = 'wf-container';
            listNode.style.width = '100%';
            this.$listNode = listNode;
            this.ele.appendChild(listNode);
        },

        create: function(dataArr) {
            var type = this.opts.type,
                str = '';
            if (!type || !dataArr.length) {
                return;
            }
            switch (type) {
                case 1:
                    str = this.createFirst(dataArr);
                    break;
                case 2:
                    str = this.createSecond(dataArr);
                    break;
                case 3:
                    str = this.createThird(dataArr);
                    break;
                default:
                    return;
            }

            this.$listNode.innerHTML += str;

            if (type === 2) {
                this.secondeReflows();
            }
        },
        createFirst: function(dataArr) {
            var _this = this,
                result = dataArr.map(function(item, index) {
                    return '<div class="wf-item wf-item-1" style="background-image: url('+item[_this.opts.urlField]+');"></div>';
                });
            return result.join('');
        },
        createSecond: function(dataArr) {
            var _this = this,
                result = dataArr.map(function(item, index) {
                    var height = _this._countRate(item[_this.opts.widthField], item[_this.opts.heightField])+20 + 'px';
                    console.log()
                    return '<a href="/Minfos/'+item[_this.opts.idField]+'.html"><div  class="wf-item wf-item-2" style="height: '+height+';">' +
                        '<img src="'+item[_this.opts.urlField]+'" alt=""><p>'+item[_this.opts.titleField]+'</p><b><i>'+item[_this.opts.countField]+'</i><i>张</i></b></div></a>';
                });
            return result.join('');
        },
        secondeReflows: function() {
            var container = document.getElementById('wf-container'),
                itemList = Array.prototype.slice.call(document.getElementsByClassName('wf-item-2')),
                marginVal = this.conWidth * 0.02,
                columnHeightArr = [];
            itemList.forEach(function(item, index) {
                if (index < 2) {
                    columnHeightArr[index] = item.offsetHeight + marginVal;
                } else {
                    var minHeight = Math.min.apply(null, columnHeightArr),
                        minHeightIndex = columnHeightArr.indexOf(minHeight);

                    item.style.position = 'absolute';
                    item.style.top = minHeight + 'px';

                    if (minHeightIndex !== 0) {
                        item.style.left = '49%';
                    }

                    columnHeightArr[minHeightIndex] += item.offsetHeight + marginVal;
                }
            });
            container.style.minHeight = Math.max.apply(null, columnHeightArr) + 'px';
        },
        createThird: function(dataArr) {
            var max = dataArr.length,
                template = [],
                contentWidth = this.conWidth,
                _this = this;

            for (var i = 0; i < max; i += 2) {
                template.push(countPicList(dataArr[i], dataArr[i+1]));
            }
            function countPicList(pic1, pic2) {
                if (!pic2) { 
                    var rate = _this._countRate(pic1[_this.opts.widthField], pic1[_this.opts.heightField]),
                        height = 100 * rate + '%';
                    return '<div class="wf-item" style="padding-bottom:'+height+'; width:100%; background-image:url('+pic1[_this.opts.urlField]+')"></div>';
                } else { 
                    var rate1 = _this._countRate(pic1[_this.opts.widthField], pic1[_this.opts.heightField]),
                        rate2 = _this._countRate(pic2[_this.opts.widthField], pic2[_this.opts.heightField]),
                        totalRate = rate1 + rate2,
                        width1 = rate2 / totalRate * 98,
                        width2 = rate1 / totalRate * 98,
                        height = width1 * rate1;
                    return '<div style="overflow: hidden;">' +
                        '<div class="wf-item" style="padding-bottom:'+height+'%; width:'+width1+'%; background-image:url('+pic1[_this.opts.urlField]+')"></div>' +
                        '<div class="wf-item" style="padding-bottom:'+height+'%; width:'+width2+'%; float:right; background-image:url('+pic2[_this.opts.urlField]+')"></div>' +
                        '</div>';
                }
            }
            return template.join('');
        },
        _countRate: function(width, height) {
            return height ;
        },
        _extend: function() {
            var args = Array.prototype.slice.call(arguments),
                len = args.length,
                obj = null, i;
            for (i = 0; i < len; i ++) {
                if (typeof(args[i]) !== 'object') {
                    break;
                }
                if (i !== 0) {
                    for (var o in args[i]) {
                        if (args[i].hasOwnProperty(o)) obj[o] = args[i][o];
                    }
                } else {
                    obj = args[0];
                }
            }
            return obj;
        },
        _selector: function(ele) {
            if (!ele) {
                return;
            }
            return document.querySelector(ele);
        }
    }
    window.WaterFull = WaterFull;
})();
if (typeof module !== 'undefined') {
    module.exports = window.WaterFull;
} else if (typeof define === 'function' && define.amd) {
    define([], function () {
        'use strict';
        return window.WaterFull;
    });
}
window.onload = function() {
function ajax_all(num) {
        var strUrl = window.location.href;
            arrUrl = strUrl.split("/");
            strPage = arrUrl[arrUrl.length-1];
    if(strPage==""){
        var lyr_url = "https://m.zqins.com/Mko/?i=" + num
            listType = 2,
            contentDom = document.querySelector('.content'),
            loadMoreDom = document.querySelector('.load-more'),
            wtf = [];
        $.ajax({
            type: "POST",
            url: lyr_url,
            data: {},
            dataType: 'json',
            async: false,
            success: function (data) {
               var dataArr = data;
                 if(data.length<5){
                    $(".load-more").html("<section class=\"all-end\">\n" +
                        "    <i><img src=\"/public/static/sj/img/icon/icon-end.png\" alt=\"\"></i>\n" +
                        "    <p></p>\n" +
                        "    <span>已经翻到底啦</span>\n" +
                        "</section>")
                }
               var  wtf = new WaterFull('.content', {
                        type: listType,
                        urlField: 'src'
                    });
                    wtf.create(dataArr);
                $(window).scroll(function () {
                    var scrollTop = $(this).scrollTop();
                        scrollHeight = $(document).height();
                        windowHeight = $(this).height();
                        scrollHeights=scrollHeight-70;
                    if (scrollTop + windowHeight > scrollHeights) {
                        $('.load-more').click();
                    }
                })
                loadMoreDom.onclick = function () {
                    num = num + 5;
                    ajax_all(num);
                    console.log(dataArr)
                    // wtf.push(dataArr);
                }
               
            }
        })
     }else {
            var selectUrl = strPage.split("?")[strPage.split("?").length - 1];
            var f = $(".pd").val()
            if (f == 'selet') {
                var lyr_url = '/Mko/?' + selectUrl + '&&n=' + num;

            } else if (f == 'meffect') {
                var lyr_url = '/Mko/?' + selectUrl + '&&i=' + num;
            } else if (f == 'img') {
                var lyr_url = '/Mko/?' + selectUrl + '&&c=' + num;
            } else if (f == 'imgs') {
                var lyr_url = '/Mko/?' + selectUrl + '&&t=' + num;
            }
        $.ajax({
            // cache: false,
            type: "POST",
            url: lyr_url,
            data: {},
            dataType: 'json',
            async: false,
            success: function (data) {
                var dataArr = data;

                        if(data.length<5){
                           $(".load-more").html("<section class=\"all-end\">\n" +
                        "    <i><img src=\"/public/static/sj/img/icon/icon-end.png\" alt=\"\"></i>\n" +
                        "    <p></p>\n" +
                        "    <span>已经翻到底啦</span>\n" +
                        "</section>")
                }
                var listType = 2,
                    contentDom = document.querySelector('.content'),
                    loadMoreDom = document.querySelector('.load-more'),
                    wtf = [];
               var  wtf = new WaterFull('.content', {
                        type: listType,
                        urlField: 'src'
                    });
                    wtf.create(dataArr);
                $(window).scroll(function () {
                    var scrollTop = $(this).scrollTop();
                    var scrollHeight = $(document).height();
                    var windowHeight = $(this).height();
                    var scrollHeights=scrollHeight-70;
                    if (scrollTop + windowHeight > scrollHeights) {
                        $('.load-more').click(); 
                    
                    }
                })
                loadMoreDom.onclick = function () {
                    num = num + 5;
                    ajax_all(num);
                    // wtf.push(dataArr);
                }
            }
          })
        }

}
ajax_all(1)

}
            

css:

html, body, div, h1, h2, h3, h4, h5, h6, p, span, img {
    margin: 0;
    padding: 0;
}

html, body {
    font-family: '微软雅黑';
    font-size: 14px;
}

.container {
    width: 100%;
    max-width: 500px;
    margin: 0 auto;
    position: relative;
    overflow: hidden;
    background-color: #fff;
}

.wf-item img{
    width:100%;
}
.wf-item b {
    width: 0.82rem;
    height: 0.54rem;
    position: absolute;
    z-index: 2;
    top: 0.2rem;
    right: 0;
    background: url(/public/static/sj/img/effect/ba.png) no-repeat;
    background-size: 100% 100%;
    text-align: center;
    line-height: 0.54rem;
}
.wf-item b i {
    height: 0.23rem;
    font-size: 0.28rem;
    font-family: SourceHanSansCN-Normal;
    font-weight: 400;
    color: #fff;
    display: inline-block;
    font-style: inherit;
}
.wf-item p {
    font-size: 0.26rem;
    font-family: Light;
    font-weight: 400;
    color: #333;
    line-height: 0.4rem;
    text-align: left;
    padding: 0.12rem 0 0rem 0;
}
.load-more {
    text-align: center;
    padding: 10px 0 15px 0;

}
.load-more i{
    width:0.3rem;
    height:0.3rem;
    margin-right:0.1rem;
    display: inline-block;
}

.guide {
    width: 100%;
    position: absolute;
    font-size: 16px;
    color: #f1f1f1;
    bottom: 20px;
    -webkit-animation: fadeInOut ease-in-out 3s infinite;
    -moz-animation: fadeInOut ease-in-out 3s infinite;
    animation: fadeInOut ease-in-out 3s infinite;
}

@-webkit-keyframes fadeInOut {
    0% {
        opacity: 0;
    } 50% {
          opacity: 1;
      } 100% {
            opacity: 0;
        }
}

@-moz-keyframes fadeInOut {
    0% {
        opacity: 0;
    } 50% {
          opacity: 1;
      } 100% {
            opacity: 0;
        }
}

@keyframes fadeInOut {
    0% {
        opacity: 0;
    } 50% {
          opacity: 1;
      } 100% {
            opacity: 0;
        }
}

.content {
    width: 100%;
    padding-top:0.3rem;
}
.wf-item {
    height: 0;
    margin-bottom: 2%;
    float: left;
    position: relative;
}

.wf-item-1 {
    width: 47%;
    padding-bottom: 47%;
    margin-left: 2%;
}

.wf-item-2 {
    width: 47%;
    margin-left: 2%;
}

 

posted on 2019-06-14 13:57  东西南北212  阅读(166)  评论(0编辑  收藏  举报