求大神看看,最后一步总是出不来,图片总积压在第一张图下面!

来源:2-4 JavaScript实现瀑布流布局中图片排序

葡萄3

2017-07-21 14:16

window.onload = function(){
  //waterfall('main','box')
  waterfall('main','box')
}


function waterfall(parent,box){
  var oParent = document.getElementById(parent);
  var boxs = getClassName(oParent,box);
  var oBoxW = boxs[0].offsetWidth;
  var cols = Math.floor((document.documentElement.clientWidth)/oBoxW);

  //大盒子宽度
  oParent.style.cssText = 'width:'+ oBoxW*cols + 'px;margin:0 auto';
  var hArr = [];
  for (var i = 0; i < boxs.length; i++) {
    if (i < cols) {
      hArr.push(boxs[i].offsetHeight)
    }else {
      var minH = Math.min.apply(null,hArr);
      var index = getMinIndex(hArr,minH);
      boxs[i].style.position = 'absolute';
      boxs[i].style.top = minH + 'px';
      boxs[i].style.left = boxs[index].offsetLeft;
      //hArr[index] +=boxs[i].offsetHeight;
      hArr[index] += boxs[i].offsetHeight;
    }
  }

}


function getClassName(parent,clsname){

  var oElements = parent.getElementsByTagName('*')
  var boxs = []
  for (var i = 0; i < oElements.length; i++) {
    if (oElements[i].className == clsname) {
      boxs.push(oElements[i])
    }
  }
    return boxs
}

function getMinIndex(arr,value){
  for (var i in arr) {
    if (arr[i] == value) {
      return i;
    }
  }
}

我的第一排的图片有点特殊·  有3张一样高的·   0 1 2 3 4 5     0,2,3,都是135px高度,现在我所有的下面图,全部积压在第一张图下面了!不知所措!

写回答 关注

1回答

  • 阳光下的雾
    2017-07-21 22:35:52
    已采纳

    第24最后好像没加  'px'

    葡萄3

    啊啊! 万分感谢!

    2017-07-23 10:32:49

    共 1 条回复 >

瀑布流布局

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

97759 学习 · 736 问题

查看课程

相似问题