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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
    <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 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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