老师,瀑布流布局问题:1、在内容追加几次之后滑动滚轮就不能再追加内容了2、浏览器窗口变小后也无法追加

老师,瀑布流布局问题:1、在内容追加几次之后滑动滚轮就不能再追加内容了2、浏览器窗口变小后也无法追加

    <script type="text/javascript">
        var data=[{
            "src": "1.png",
            "title": "第一怪 竹筒当烟袋"
        }, {
            "src": "2.png",
            "title": "第二怪 草帽当锅盖"
        }, {
            "src": "3.png",
            "title": "第三怪 这边下雨那边晒"
        }, {
            "src": "4.png",
            "title": "第四怪 四季服装同穿戴"
        }, {
            "src": "5.png",
            "title": "第五怪 火车没有汽车快"
        }, {
            "src": "6.png",
            "title": "第六怪 火车不通国内通国外"
        }, {
            "src": "7.png",
            "title": "第七怪 老奶爬山比猴快"
        }, {
            "src": "8.png",
            "title": "第八怪 鞋子后面多一块"
        }, {
            "src": "9.png",
            "title": "第九怪 脚趾四季露在外"
        }, {
            "src": "10.png",
            "title": "第十怪 鸡蛋拴着卖"
        }, {
            "src": "11.png",
            "title": "第十一怪 粑粑叫饵块"
        }, {
            "src": "12.png",
            "title": "第十二怪 花生蚕豆数着卖"
        }, {
            "src": "13.png",
            "title": "第十三怪 三个蚊子一盘菜"
        }, {
            "src": "14.png",
            "title": "第十四怪 四个老鼠一麻袋"
        }, {
            "src": "15.png",
            "title": "第十五怪 树上松毛扭着卖"
        }, {
            "src": "16.png",
            "title": "第十六怪 姑娘叫老太"
        }, {
            "src": "17.png",
            "title": "第十七怪 小和尚可以谈恋爱"
        }, {
            "src": "18.png",
            "title": "第十八怪 背着娃娃谈恋爱"
        }];


        var waterfall=function(wrap,boxes){
            // 获取屏幕可以显示的列数,width得到的只有内容的宽度
            var boxWidth = boxes.eq(0).width()+40;
            var windowWidht = $(window).width();
            var colsNumber= Math.floor(windowWidht/boxWidth);
            // 设置容器的宽度
            wrap.width(boxWidth*colsNumber);
            // 定义一个数组并存储每一列的高度
            var everyHeight= new Array();
            for (var i = 0; i < boxes.length; i++) {
                if(i < colsNumber){
                    everyHeight[i] = boxes.eq(i).outerHeight(true);
                }else{
                    //获取最小列高度
                    var minHeight=Math.min.apply(null,everyHeight);
                    //获取最小列的索引
                    var minIndex = getIndex(minHeight,everyHeight);
                    var leftValue = boxes.eq(minIndex).position().left;
                    //设置盒子样式
                    setStyle(boxes.eq(i),minHeight,leftValue,i);
                    //更新最小列的高度
                    everyHeight[minIndex]+=boxes.eq(i).height()+40;
                }
                //鼠标经过呈现半透明效果
                boxes.eq(i).hover(function(event){
                    $(this).stop().animate({
                        opacity:'0.5'
                    },500);
                },function(event){
                    $(this).stop().animate({
                        opacity:'1'
                    },500);
                });
            }
        }
        //设置追加盒子的样式
        var getStartNumber=0;
        function setStyle(box,top,left,index){
            if(getStartNumber>=index){
                return false;
            }
            box.css({
                'position':'absolute',
                'top':top,
                'left':left,
                'opacity':'0'
            }).stop().animate({
                'opacity':'1'
            },1000);
            getStartNumber=index;

        }
        //获取最小列的索引
        function getIndex(minHeight,everyHeight){
            for(index in everyHeight){
                if(everyHeight[index]==minHeight){
                    return index;
                }
            }
        }
        //数据请求检验
        var getCheck=function(wrap){
            //获取文档高度
            var documentHeight=$(window).height();
            //获取文档向上滚动的高度
            var scrollHeight=$(window).scrollTop();
            //获取最后一个盒子所在列的高度
            var boxes=wrap.children('div');
            var lastBoxTop=boxes.eq(boxes.length-1).offset().top;
            var lastHeight=boxes.eq(boxes.length-1).height()+20;
            var lastColHeight=lastBoxTop+lastHeight;
            return documentHeight+scrollHeight >= lastColHeight?true:false;
        }
        //追加盒子函数
        var appendBox = function(wrap){
            if(getCheck(wrap)){
                for(i in data){
                    var innerString = '<div><img src="images/'+data[i].src+'"><a href="http://www.imooc.com" target="_blank">'+data[i].title+'</a></div>';
                    wrap.append(innerString);
                }
            }else{
                return false;
            }
            waterfall(wrap,wrap.children('div'));

        };
        //页面加载完之后再加载jquery
        $(document).ready(function(event){
            var wrap=$('#wrap');
            var boxes = $('#wrap').children('div');
            //children取到的是所有的子元素的集合
            waterfall(wrap,boxes);
            // 滚动事件
            $(this).scroll(function(event){
                appendBox(wrap,boxes);
            });
        });


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
一路电光带火花 2017-09-03 15:04:17

你还是按照老师课上的代码去敲吧,毕竟这么多代码~老师的源码没有问题,那就是你跟着写时哪写错了

好帮手慕糖 2017-09-01 18:51:23

你好,(1)因为你的没有html与css,这边使用源码的源码的html与css,你粘贴的js测试是没有问题的。

(2)缩小后刷新继续拖动也没有问题的

建议:可以下载源码对比下是否是css与html哪里有问题。

祝学习愉快~


  • 提问者 JOJO不秃 #1
    在火狐浏览器上面我的代码会出现那些问题,而源码在火狐中不会出现问题,如果我换一个浏览器的话我的就不会出现上面那些问题,这是兼容性问题吗,我和源码差了哪些代码才会出现这些问题啊?
    2017-09-02 12:00:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师