用老师这个方法,会有一个BUG如何解决?

来源:3-2 jQuery实现瀑布流布局的图片加载功能

ZZXboy

2016-05-17 22:04

http://img.mukewang.com/573b23f30001eb3915090591.jpg

如图,第一次拖动,调用scroll方法并触发事件时,刚开始会出现图片重叠,再往下拖动滚动条会往上弹一下,然后又好了,并且在随后的继续拖动过程中,再触发事件,图片继续加载又不会再出现这样的情况了。

写回答 关注

6回答

  • 非典型材料IT男
    2017-01-14 12:14:06

    你把JS和JQ文件放到body最后面就可以了。

  • KevinLL
    2016-10-09 22:58:13

    你的问题解决了吗?

    我也是出现同样的问题,我的跟老师的代码的区别,只是给main在css上设置了固定的宽度,不随浏览器窗口大小变化而改变列数。


    KevinL...

    $(window).on('scroll', function() { if (checkScrollSlide()) { ********** }) } waterfall(); }); waterfall()放在if外面倒是不会出现重叠的BUG,只是每滚动一次就执行一次,会增加浏览器的负担而影响流畅度吧

    2016-10-09 23:03:56

    共 1 条回复 >

  • 王二大
    2016-07-14 19:27:18

    $oImg=$('<img>').attr("src","images/"+val.src).appendTo($oPic)这句代码写错了,应该这样写:

    $oImg=$('<img>').attr("src","images/"+$(val).attr('src')).appendTo($oPic)  val是DOM元素,要把它转化成jquery元素,然后用jquery方法获取它的值

    ZZXboy

    显然不是这个原因,val.src和$(val).attr('src')返回的都是字符串,只不过一个用的是DOM属性一个是jquery方法,这个语句的目标就是拼字符串而已,用啥方法都一样。 而且我说过了我的瀑布流是能实现的,只是第一次加载图片的时候会产生堆叠,此后就没问题了,肯定不是生成元素的方法有错

    2016-07-25 00:32:29

    共 1 条回复 >

  • UncleKeith
    2016-05-27 19:27:33

    你试一下把 scrollslide()函数返回的条件改一下.

    return (lastH<=scrollH) ? true : false ;

    ZZXboy

    无效。肯定和逻辑没关系

    2016-07-25 00:29:23

    共 1 条回复 >

  • ZZXboy
    2016-05-19 19:37:29

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

    waterfall();

    var dataInt={"data":[{"src":"23.jpg"},{"src":"24.jpg"},{"src":"25.jpg"},{"src":"26.jpg"},{"src":"27.jpg"},{"src":"28.jpg"},{"src":"29.jpg"},{"src":"30.jpg"},{"src":"31.jpg"},{"src":"32.jpg"},{"src":"33.jpg"},{"src":"34.jpg"},{"src":"35.jpg"},{"src":"36.jpg"},{"src":"37.jpg"},{"src":"38.jpg"},{"src":"39.jpg"},

    {"src":"40.jpg"},{"src":"41.jpg"},{"src":"42.jpg"},{"src":"43.jpg"},{"src":"44.jpg"},{"src":"45.jpg"},{"src":"46.jpg"},{"src":"47.jpg"},{"src":"48.jpg"},{"src":"49.jpg"},{"src":"50.jpg"},{"src":"51.jpg"},{"src":"52.jpg"},{"src":"53.jpg"},{"src":"54.jpg"},{"src":"55.jpg"},{"src":"56.jpg"},{"src":"57.jpg"},{"src":"58.jpg"},

    {"src":"59.jpg"},{"src":"60.jpg"},{"src":"61.jpg"},{"src":"62.jpg"},{"src":"63.jpg"},{"src":"64.jpg"},{"src":"65.jpg"},{"src":"66.jpg"},{"src":"67.jpg"},{"src":"68.jpg"},{"src":"69.jpg"},{"src":"70.jpg"},

    {"src":"71.jpg"},]};

    $(window).scroll(function() {

    if(scrollside()) {

    $.each(dataInt.data, function(index, val) {

    $oBox=$('<div>').addClass('box').appendTo('#content');

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

    $oImg=$('<img>').attr("src","images/"+val.src).appendTo($oPic);

    });

    waterfall();

    }

    });

    });


    function waterfall(){

    var $box=$("#content>div");

    var wbox=$box.eq(0).outerWidth();

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

    $("#content").width(wbox*cols).css("margin","0 auto");

    var Harry=[];

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

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

    if(index<cols){

    Harry[index]=h;

    }

    else{

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

    var minIndex =$.inArray(minH,Harry);

    $(value).css({"position":"absolute","left":minIndex*wbox+"px","top":minH+"px",});

    Harry[minIndex]+=$box.eq(index).outerHeight();

    }

    });


    }


    function scrollside(){

    var $lastBox=$("#content>div").last();

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

    var scrollH=$(window).scrollTop()+$(window).height();

    return (scrollH>lastH)?true:false;

    }


  • 一仁
    2016-05-19 14:12:27

    是不是代码问题呢 贴出来看看

瀑布流布局

瀑布流布局是网站比较流行的一种布局方式,教你实现三大方式

97759 学习 · 736 问题

查看课程

相似问题