追加盒子没有实现

追加盒子没有实现

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
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>瀑布流</title>
        <link rel="stylesheet" href="css/style.css">
        <!-- <script type="text/javascript" src="js/script.js"></script> -->
        <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
        <script type="text/javascript" src="js/jss.js"></script>
    </head>
    <body>
        <div id="wrap">
            <div class="boxes"><img src="img/1.png"><a href="http://www.imooc.com">第一怪 竹筒当烟袋</a></div>
            <div class="boxes"><img src="img/2.png"><a href="http://www.imooc.com">第二怪 草帽当锅盖</a></div>
            <div class="boxes"><img src="img/3.png"><a href="http://www.imooc.com">第三怪 这边下雨那边晒</a></div>
            <div class="boxes"><img src="img/4.png"><a href="http://www.imooc.com">第四怪 四季衣服同穿戴</a></div>
            <div class="boxes"><img src="img/5.png"><a href="http://www.imooc.com">第五怪 火车没有汽车快</a></div>
            <div class="boxes"><img src="img/6.png"><a href="http://www.imooc.com">第六怪 火车不通国内通国外</a></div>
            <div class="boxes"><img src="img/7.png"><a href="http://www.imooc.com">第七怪 老奶爬山比猴快</a></div>
            <div class="boxes"><img src="img/8.png"><a href="http://www.imooc.com">第八怪 鞋子后边多一块</a></div>
            <div class="boxes"><img src="img/9.png"><a href="http://www.imooc.com">第九怪 脚趾四季露在外</a></div>
            <div class="boxes"><img src="img/10.png"><a href="http://www.imooc.com">第十怪 鸡蛋拴着卖</a></div>
            <div class="boxes"><img src="img/11.png"><a href="http://www.imooc.com">第十一怪 粑粑叫饵块</a></div>
            <div class="boxes"><img src="img/12.png"><a href="http://www.imooc.com">第十二怪 花生蚕豆数着卖</a></div>
            <div class="boxes"><img src="img/13.png"><a href="http://www.imooc.com">第十三怪 三个蚊子一盘菜</a></div>
            <div class="boxes"><img src="img/14.png"><a href="http://www.imooc.com">第十四怪 四个老鼠一麻袋</a></div>
            <div class="boxes"><img src="img/15.png"><a href="http://www.imooc.com">第十五怪 树上松毛扭着卖</a></div>
            <div class="boxes"><img src="img/16.png"><a href="http://www.imooc.com">第十六怪 姑娘叫老太</a></div>
            <div class="boxes"><img src="img/17.png"><a href="http://www.imooc.com">第十七怪 小和尚可以谈恋爱</a></div>
            <div class="boxes"><img src="img/18.png"><a href="http://www.imooc.com">第十八怪 背着娃娃谈恋爱</a></div>
        </div>
    </body>
</html>
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
/* All Tag */
*{
    margin:0;
    paddind:0;
    border:none;
}
body{
    background:#ddd;
}
a{
    text-decorationnone;
    color:#444;
}
a:hover{
    color:#999;
}
/* wrap */
#wrap{
    width:auto;
    height:auto;
    margin:0 auto;
    position:relative;
}
#wrap>div{
    width:280px;
    height:auto;
    float:left;
    margin:10px;
    padding:10px;
    border-radius:5px;
    background:#fff;
    box-sizing: border-box;
}
#wrap>div>img{
    width:100%;
    height:auto;
}
#wrap>div>a{
    display:block;
    font-size:18px;
    font-weight:bold;
    text-align:center;
    line-height:40px;
}
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
// 模拟数据
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){
    // 获取屏幕可以显示的列数
    var boxWidth=boxes.eq(0).width()+40;        //内容宽度加内外边距
    var windowWidth=$(window).width();
    var colsNumber=Math.floor(windowWidth/boxWidth);
     
    // 设置容器的宽度
    wrap.width(boxWidth*colsNumber);           //width()可以获取或者设置宽度
     
    // 定义一个数组存储每一列的高度
    var everyHeight=new Array();
    for(var i=0;i<boxes.length;i++){
        if(i<colsNumber){
            everyHeight[i]=boxes.eq(i).height()+40;
        else {
            var minHeight=Math.min.apply(null,everyHeight);
            var minIndex=getIndex(minHeight,everyHeight);
            var leftValue=boxes.eq(minIndex).position().left;
            boxes.eq(i).css({
                'position':'absolute',
                'top':minHeight,
                'left':leftValue,
                'opacity':'0'
            }).stop().animate({
                'opacity':'1'
            },1000);
            //更新最小列的高度
            everyHeight[minIndex]+=boxes.eq(i).height()+40;
        }
    }
}
 
// 获取最小列的索引
function getIndex(minHeight,everyHeight){
    for(index in everyHeight){
        if(everyHeight[index]==minHeight){
            return index;
        }
    }
}
// 加载盒子
var appendBox=function(wrap,boxes) {
        for(i in date){
            var innerString='<div class="boxes"><img src="img/'+date[i].src+'"><a href="http://www.imooc.com">'+date[i].title+'</a></div>';
            wrap.append(innerString);
        }
        // wrap.append('<div class="boxes"><img src="img/1.png"><a href="http://www.imooc.com">第一怪 竹筒当烟袋</a></div>');
}
$(document).ready(function() {
    var wrap=$('#wrap');
    var boxes=$('.boxes');
    waterfall(wrap,boxes);
     
    // 追加滚动效果
    $(this).scroll(function(event){
        appendBox(wrap,boxes);
    })
})


正在回答

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

1回答

同学,你好。这里追加盒子的效果没有实现是因为没有写盒子追加的条件。这里建议封装一个判断什么时候盒子加载的函数,建议将追加盒子的样式也封装成一个函数方便调用。修改如下:

  var waterfall=function(wrap,boxes){

    // 获取屏幕可以显示的列数

    var boxWidth=boxes.eq(0).width()+40;        //内容宽度加内外边距

    var windowWidth=$(window).width();

    var colsNumber=Math.floor(windowWidth/boxWidth);

    

    // 设置容器的宽度

    wrap.width(boxWidth*colsNumber);           //width()可以获取或者设置宽度

    

    // 定义一个数组存储每一列的高度

    var everyHeight=new Array();

    for(var i=0;i<boxes.length;i++){

      if(i<colsNumber){

        everyHeight[i]=boxes.eq(i).height()+40;

      } else {

        var minHeight=Math.min.apply(null,everyHeight);

        var minIndex=getIndex(minHeight,everyHeight);

        // var leftValue=boxes.eq(minIndex).position().left;

        // boxes.eq(i).css({

        //   'position':'absolute',

        //   'top':minHeight,

        //   'left':leftValue,

        //   'opacity':'0'

        // }).stop().animate({

        //   'opacity':'1'

        // },1000);

        setStyle(boxes.eq(i), minHeight, boxes.eq(minIndex).position().left, i);

            //更新最小列的高度

            everyHeight[minIndex]+=boxes.eq(i).height()+40;

          }

        }

      }

      

// 获取最小列的索引

function getIndex(minHeight,everyHeight){

  for(index in everyHeight){

    if(everyHeight[index]==minHeight){

      return index;

    }

  }

}


// 加载盒子

// var appendBox=function(wrap,boxes) {

//   for(i in date){

//     var innerString='<div class="boxes"><img src="images/'+date[i].src+'"><a href="http://www.imooc.com">'+date[i].title+'</a></div>';

//     wrap.append(innerString);

//   }

//         wrap.append('<div class="boxes"><img src="images/1.png"><a href="http://www.imooc.com">第一怪 竹筒当烟袋</a></div>');

//       }



var getStartNumber = 0;

var setStyle = function(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;

}

//数据请求检验

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;

    console.log(lastColHeight + 9)


    return documentHeight + scrollHeight >= lastColHeight ? true : false;




};


//追加盒子函数

var appendBox = function(wrap) {


    if (getCheck(wrap)) {

        for (var 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'));


}


      

      $(document).ready(function() {

        var wrap=$('#wrap');

        var boxes=$('.boxes');

        waterfall(wrap,boxes);

        

    // 追加滚动效果

    $(this).scroll(function(event){

      appendBox(wrap,boxes);

    })

  })

</script>

</html>

祝学习愉快!

  • 光aaaaand影 提问者 #1
    ReferenceError: date is not defined 这是它现实的错误
    2019-03-06 15:04:28
  • 光aaaaand影 提问者 #2
    老师我看不懂你的代码,我和视频中的代码一样,为什么效果不行
    2019-03-06 15:18:24
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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