亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

console.log(clos)輸出列數為7,瀏覽器顯示為6列,且前第七個和第八個圖片(第二列的一和二)沒有內邊距

// JavaScript Document

window.onload=function(){

waterfall("main","box");

}

function waterfall(parent,box){

var oParent=document.getElementById(parent);

getByClass(oParent,box);

var oBoxs=getByClass(oParent,box);

var aBoxW=oBoxs[0].offsetWidth;

var cols=Math.floor(document.documentElement.clientWidth/aBoxW);

oParent.style.cssText='width:'+aBoxW*cols+'px;margin:auto';

var hArr=[];

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

if(i<cols-1){

hArr.push(oBoxs[i].offsetHeight);

}else{

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

var index=getMinHIndex(hArr,minH);

oBoxs[i].style.position="absolute";

oBoxs[i].style.top=minH+'px';

//oBoxs[i].style.left=aBoxW*index+'px';

oBoxs[i].style.left=oBoxs[index].offsetLeft+'px';

hArr[index]+=oBoxs[i].offsetHeight;

}

}

console.log(cols);

console.log(hArr);

}

function getByClass(parent,clsName){

var boxArr=[];

oElements=parent.getElementsByTagName("*");

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

if(oElements[i].className==clsName){

boxArr.push(oElements[i]);

}

}

return boxArr;

}

function getMinHIndex(arr,val){

for(var i in arr){

if(arr[i]==val){

return i;

}

}

}


正在回答

2 回答

這個問題我也遇到了,我研究了一下午。是offsetWidth的問題。我console獲取到值為201,但是實際盒子寬度為202,故第一行最后一張圖,超邊。

解決方案:

修改前:oParent.style.cssText='width:'+aBoxW*cols+'px;margin:auto';

修改后:oParent.style.cssText='width:'+202*cols+'px;margin:auto';

正確顯示,不謝!


0 回復 有任何疑惑可以回復我~

cols不用減一吧。在判斷的時候:

if(i<cols-1){

hArr.push(oBoxs[i].offsetHeight);

}else{


0 回復 有任何疑惑可以回復我~
#1

qq_付注東流的豈止是時間_03709607 提問者

之前和老師的一樣不減一就沒有效果,可能是我電腦分辨率及圖片大小的原因吧
2018-04-10 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

console.log(clos)輸出列數為7,瀏覽器顯示為6列,且前第七個和第八個圖片(第二列的一和二)沒有內邊距

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號