jQuery实现瀑布流布局

HTML

复制代码代码如下所示:



































































CSS

复制代码代码如下所示:

{ *

保证金:0;

填充:0;

}

{ #主要

职位:相对;

}

{。箱

填充物:00 15px 15px;

浮点数:左;

}

{。PIC

填料:10px;

边境:1px solid # CCC;

边界半径:5px;

盒子的影子:0px 0px 5px # CCC;

{ IMG

宽度:165px;

高度:自动;

}

}



Javascript

复制代码代码如下所示:

$(窗口)。

瀑布();

无功dataint = {数据:{ {src:7。jpg},{src:8。jpg},{src:9。jpg},{src :6。jpg} } }

JSON数据模拟;

$(窗口)。

如果(checkscrollslide){

美元。每个(dataint.data,功能(键,值){

无功obox = $()。AddClass(框)。AppendTo($(#主));

jQuery支持是连续的、隐式迭代;

OPIC = $(var ),AddClass('pic)。AppendTo($(obox));

$(。属性)(src

});

瀑布();

}

})

});

主要功能/流量布局;

函数瀑布(){

var =美元美元箱(#主要> div);

/ /直接访问子#主要元素的div.box元下;

获取每列的宽度;

boxs.eq功W = $(0)OuterWidth();

/ /边界的高度与宽度()获取包含填充和边框的宽度;

/ /无功W = boxs.eq美元(0)。Width();

宽度()只能得到元素定义的宽度;

var列= math.floor($(窗口),Width()/ W);

获取多少列;

$(#主)。Width(W *列)。Css(边缘

/ /设置#主要元素的宽度和中心的风格;

VaR Harr = { };

设置每个列的高度;

boxs.each美元(函数(指数值){

通过每个框元素;

为了在所有元素之前找到最低的,然后将元素设置为最低点;

var = boxs.eq美元(指数)的OuterHeight();

盒子中的所有元素,

如果(指数<cols){

Harr { } = h指数;

确保第一个元素高度的每个列;

别的{ }

var胡志明= math.min.apply(null,Harr);

离开数组的最小高度很高;

无功minhindex =美元。内部数组(Minh,Harr);

/ /美元。内部数组()方法给出了该元素的索引值(Minh)的阵列(哈尔);

/ / console.log(价值);

此时此值是DOM对象第一行之后的所有盒元素!;

$(value)Css({

$($):将DOM对象转换为jQuery对象,您可以继续使用jQuery方法;

位置:绝对

顶部

左:minhindex×宽+PX

});

Harr { minhindex } = boxs.eq美元(指数)的OuterHeight();

高+元素只添加到一个新的高列中的元素的最小高度=最小高度;

};

});

/ / console.log(哈尔);

};

功能checkscrollslide(){

lastbox = $(var $ #主要> div)最后的();

无功lastboxdis = lastbox.offset美元()。顶+ math.floor($ lastbox.outerheight() / 2);

VaR scrollTop = $(窗口)ScrollTop();

无功documenth = $(窗口)Height();

返回(lastboxdis < scrollTop + documenth)真的假的;

}



详细解释详细的参考资料,我不会再把它拿出来了。