问答详情
源自:3-2 jQuery实现瀑布流布局的图片加载功能

看着视屏写了,没有实现最终的效果,好烦人啊!哪里出错了?

<script type="text/javascript">

$(window).on('load',function(){

waterfall();

var dataInt={"data":[{"src":"a0.jpg"},{"src":"a1.jpg"},{"src":"a2.jpg"},{"src":"a3.jpg"}]};

$(window).on('scroll',function(){

if (checkScrollSlide) {

$.each(dataInt.data,function(key,value){

var oBox=$('<div>').addClass("box").appendTo($('#main'));

var oPic=$('<div>').addClass("pic").appendTo($(oBox));

var oImg=$('<img>').attr('src','img/'+$(value).attr('src')).appendTo($(oPic));

})

waterfall();

}

})

})

function waterfall(){

var $boxs=$('#main>div');

var w=$boxs.eq(0).outerWidth();

var cols=Math.floor($(window).width()/w);

$('#main').width(w*cols).css('margin','0 auto');

var hArr=[];

$boxs.each(function(index,value){

var h=$boxs.eq(index).outerHeight();

if (index<cols) {

hArr[index]=h;

} else{

var minH=Math.min.apply(null,hArr);

var minHIndex=$.inArray(minH,hArr);

$(value).css({

'position':'absolute',

'top':minH+'px',

'left':minHIndex*w+'px'

})

hArr[minHIndex]+=$boxs.eq(index).outerHeight()

}

})

}

function checkScrollSlide(){

var $lastBox=$('#main>div').last();

var lastBoxDis=$lastBox.offset().top+Math.floor($lastBox.outerHeight()/2);

var scrollTop=$(window).scrollTop();

var documentH=$(window).height();

return (lastBoxDis<scrollTop+documentH)?true:false;

}

</script>


提问者:慕娘8428674 2017-03-17 17:28

个回答

  • 韩云涛
    2017-03-18 12:34:00

    我找到原因了,你把浏览器窗口缩小,出现滚动条就好了。

  • 韩云涛
    2017-03-18 12:01:33

    你是不是没有引用jQuery
    <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>