js瀑布流布局的實現(xiàn)
本文實例為大家分享了js實現(xiàn)瀑布流布局的具體代碼,供大家參考,具體內(nèi)容如下
原理:
1、瀑布流布局,要求進行布局的元素等寬,然后計算元素的寬與瀏覽器的寬度之比,得到需要布置的列數(shù)。
2、創(chuàng)建一個數(shù)組,長度為列數(shù),數(shù)組元素為每一列已布置元素的總高度。(一開始為0)。
3、將未布置的元素,依次布置到高度最小的那一列,然后更新這一列的高度,就得到了瀑布流布局

實現(xiàn)
布局
<body> <div id="content"> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <!-- 很多很多圖片 --> </div> </body>
js:
$(function(){
waterFall();
})
function waterFall(){
//計算出每個圖片盒子的寬度
var box = $('#box');
var boxWidth = box.outerWidth();
//計算出屏幕的寬度
var screenWidth = $(window).width();
//計算出有多少列
var cols = parseInt(screenWidth / boxWidth);
//定義一行圖片盒子的高度數(shù)組,找出數(shù)組中最少的值
var heigthArr =[];
//所有圖片循環(huán)
$.each(box,function(item,index){
var boxHeigth = box.outerHeigth();
//判斷是否第一排
if(index < cols){
//如果是第一排,取高度,追加到數(shù)組中
heigthArr[index] = boxHeigth;
}else{
//最小圖片高度
var minBoxHeigth = Math.min.apply(null,heigthArr);
//最小圖片的索引
var minBoxIndex = $.inArray(minBoxHeigth,heigthArr);
$(item).css({
position:'absolute',
left:minBoxIndex * boxWidth + 'px',
top:minBoxHeigth + 'px'
});
heigthArr[minBoxIndex]+=boxHeigth;//更新高度
}
})
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript?setTimeout和setInterval的用法與區(qū)別詳解
Javascript的setTimeOut和setInterval函數(shù)應(yīng)用非常廣泛,它們都用來處理延時和定時任務(wù),下面這篇文章主要給大家介紹了關(guān)于JavaScript?setTimeout和setInterval的用法與區(qū)別,需要的朋友可以參考下2022-04-04
javascript 控制input只允許輸入的各種指定內(nèi)容
這篇文章主要介紹了通過javascript控制input只允許輸入的各種指定內(nèi)容,需要的朋友可以參考下2014-06-06
js實現(xiàn)簡單的省市縣三級聯(lián)動效果實例
這篇文章主要介紹了js實現(xiàn)簡單的省市縣三級聯(lián)動效果,以完整實例形式分析了JavaScript實現(xiàn)省市縣三級聯(lián)動效果的具體步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2016-02-02

