3-5使用Jquery完成定位布局

3-5使用Jquery完成定位布局

照老师视频里写的,帮我看看哪里出错了。代码如下

html代码

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>瀑布流特效 - 云南十八怪</title>

<link rel="stylesheet" type="text/css" href="css/style.css">

<script type="text/javascript" src="js/jquery.min.js"></script>

<script type="text/javascript" src="js/script.js"></script>

</head>

<body>

<div id="wrap">

    <div>

        <img src="images/1.png">

        <a href="http://www.imooc.com" target="_blank">第一怪 竹筒当烟袋</a>

    </div>

    <div>

        <img src="images/2.png">

        <a href="http://www.imooc.com" target="_blank">第二怪 草帽当锅盖</a>

    </div>

    <div>

        <img src="images/3.png">

        <a href="http://www.imooc.com" target="_blank">第三怪 这边下雨那边晒</a>

    </div>

    <div>

        <img src="images/4.png">

        <a href="http://www.imooc.com" target="_blank">第四怪 四季服装同穿戴</a>

    </div>

    <div>

        <img src="images/5.png">

        <a href="http://www.imooc.com" target="_blank">第五怪 火车没有汽车快</a>

    </div>

    <div>

        <img src="images/6.png">

        <a href="http://www.imooc.com" target="_blank">第六怪 火车不通国内通国外</a>

    </div>

    <div>

        <img src="images/7.png">

        <a href="http://www.imooc.com" target="_blank">第七怪 老奶爬山比猴快</a>

    </div>

    <div>

        <img src="images/8.png">

        <a href="http://www.imooc.com" target="_blank">第八怪 鞋子后面多一块</a>

    </div>

    <div>

        <img src="images/9.png">

        <a href="http://www.imooc.com" target="_blank">第九怪 脚趾四季露在外</a>

    </div>

    <div>

        <img src="images/10.png">

        <a href="http://www.imooc.com" target="_blank">第十怪 鸡蛋拴着卖</a>

    </div>

    <div>

        <img src="images/11.png">

        <a href="http://www.imooc.com" target="_blank">第十一怪 粑粑叫饵块</a>

    </div>

    <div>

        <img src="images/12.png">

        <a href="http://www.imooc.com" target="_blank">第十二怪 花生蚕豆数着卖</a>

    </div>

    <div>

        <img src="images/13.png">

        <a href="http://www.imooc.com" target="_blank">第十三怪 三个蚊子一盘菜</a>

    </div>

    <div>

        <img src="images/14.png">

        <a href="http://www.imooc.com" target="_blank">第十四怪 四个老鼠一麻袋</a>

    </div>

    <div>

        <img src="images/15.png">

        <a href="http://www.imooc.com" target="_blank">第十五怪 树上松毛扭着卖</a>

    </div>

    <div>

        <img src="images/16.png">

        <a href="http://www.imooc.com" target="_blank">第十六怪 姑娘叫老太</a>

    </div>

    <div>

        <img src="images/17.png">

        <a href="http://www.imooc.com" target="_blank">第十七怪 小和尚可以谈恋爱</a>

    </div>

    <div>

        <img src="images/18.png">

        <a href="http://www.imooc.com" target="_blank">第十八怪 背着娃娃谈恋爱</a>

    </div>

</div>

</body>

</html>


css代码

/* 标签重定义 */

* { 

margin: 0; 

padding: 0; 

border: none; 

}


body { 

background: #ddd; 

}


img { 

border: none; 

}


a { 

text-decoration: none; 

color: #444; 

}


a:hover { 

color: #999; 

}


/* wrap */

#wrap { 

position: relative; 

width: auto; 

height: auto; 

margin: 0 auto; 

}


#wrap > div { 

float: left; 

box-sizing: border-box; 

width: 280px; 

height: auto; 

margin: 10px; 

padding: 10px; 

border-radius: 5px; 

background: #fff; 

}


#wrap > div > img { 

width: 260px; 

margin: 0 auto; 

}

#wrap > div > a { 

display: block; 

font-size: 18px; 

font-weight: bold; 

line-height: 40px; 

text-align: center; 

}

script.js代码

// 瀑布流主函数

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);


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

    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,            //设置最小列的top值

                'left' : boxes.eq(minIndex).position().left,            //设置最小列的left值

                '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;

        };

    };

};


$(document).ready(function(event){

    //获得容器以及每一个盒子

    var wrap = $('#wrap');

    var boxes = $('#wrap').children('div');

    //运行瀑布流主函数

    waterfall(wrap, boxes);

});

谷歌浏览器控制台提示如下:

http://img1.sycdn.imooc.com/climg//5968891e0001624205970592.jpg

正在回答

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

2回答

建议将视频仔细观看一边,并且重新对照视频检查一下代码!

  • 慕侠910946 提问者 #1
    我说的是“3-5使用Jquery完成定位布局 ”这一节视频课程内容,没有什么滚动加载数据请求之类的,我的jQuery代码是按老师视频里写的,你把网页课件里的jQuery替换成我写的看了吗?我想知道的是控制台那个错误具体怎么修正?你把这课件代码粘上来干嘛我又不是没看过。你这答非所问,我也是醉了,助教大侠麻烦能认真帮我解决问题吗?
    2017-07-14 18:57:32
  • 慕侠910946 提问者 #2
    我从新看了视频,重敲了遍代码,这会没问题了。
    2017-07-14 20:06:43
卡布琦诺 2017-07-14 17:32:35

建议你把代码贴全了,包括html、css、jq代码,这样大家才能够更准确的定位问题并帮助你解决!

  • 提问者 慕侠910946 #1
    前面和网页上提供下载的代码是一样的,就是jQuery代码不一样,我跟着老师视频里写的,帮我看下具体是什么问题
    2017-07-14 17:38:36
  • 慕的地3227104 回复 提问者 慕侠910946 #2
    同学,我遇到和你一样的问题,不知道怎么解决,和视频里面写的一样。
    2017-12-06 21:59:48
  • 同学,请问你最后是如何解决的???求帮助。
    2017-12-06 22:00:34
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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