請(qǐng)問這種情況怎么解決
我先把瀏覽器變小, 重新加載頁面,然后拉寬瀏覽器,出現(xiàn)第二行開始沒有居中,這種情況:
function waterfall(parentId,boxClass)
{
//獲取父元素
var oParent=document.getElementById(parentId);
? ? //獲取class為boxClass的塊;
? ? var aBoxs=getByclass(oParent,boxClass);
? ? //為了讓瀏覽器變大變小的時(shí)候瀑布流的列數(shù)保持不變,要計(jì)算并確定列數(shù),并保證父元素main的寬度不變
? ? //每個(gè)盒子的寬度
? ? //這里的clientWidth是頁面的寬度,你刷新后伸展拉索都保持不變,但你寬度變了,在刷新,就會(huì)改變
? ? var oBoxW=aBoxs[0].offsetWidth;
? ? //求出列數(shù)
? ? var colsNum=Math.floor(document.documentElement.clientWidth/oBoxW);
? ? //設(shè)置父元素的寬度
? ? oParent.style.cssText='width:'+oBoxW*colsNum+'px;margin:0 auto;';
/* ? ?alert(colsNum);*/
? ? /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
? ? //創(chuàng)建一個(gè)數(shù)組,用于保存每一列的高度,每一個(gè)塊排列上去時(shí),先判斷每一列的高度,哪個(gè)最小,就放在哪個(gè)下面
? ? var hArr=[];
? ? for(var i=0;i<aBoxs.length;i++)
? ? {
? ? if(i<colsNum)
? ? {
? ? hArr.push(aBoxs[i].offsetHeight);
? ? }
? ? else
? ? {
? ? var minH=Math.min.apply(null,hArr);
? ? var index=getMinhIndex(hArr,minH);//得到的就是第幾個(gè)塊高度中最小的
? ? //對(duì)下一個(gè)塊的位置left top進(jìn)行設(shè)置
? ? aBoxs[i].style.position='absolute';
? ? aBoxs[i].style.top=minH+'px';
? ? aBoxs[i].style.left=aBoxs[index].offsetLeft+'px';
? ? //aBoxs[i].style.left=oBoxW*index+'px';
? ? hArr[index]+=aBoxs[i].offsetHeight;
? ? }
? ? }
}
2016-06-06
這個(gè)不是自適應(yīng),你可以去網(wǎng)上找找關(guān)于自適應(yīng)的,當(dāng)游覽器onresize即游覽器的窗口大小調(diào)整,圖片自動(dòng)適應(yīng)游覽器寬度。不知道說的對(duì)不對(duì),下面的同學(xué)可以給我改正