首页 > 技术文章 > 瀑布流的使用

sunweinan 2016-12-26 16:52 原文

  瀑布流在前端中是比较重要的一部分,瀑布流,又称瀑布流式布局。是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。

国内大多数清新站基本为这类风格。

  以下是瀑布流代码,提供给大家借鉴

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

*{padding: 0;margin: 0;}

#list{position: relative;list-style: none;}

#list img{position: absolute;transition: all 0.5s linear;}

</style>

</head>

<body>

<ul id="list">

 

</ul>

</body>

</html>

<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>

<script type="text/javascript">

//先给图片做预加载

var WIDTH = 300;

var imgArray = [];//主要用来放置加载好的图片

function preloadImg(){

for (var i = 1; i< 40;i++) {

var aImg = $("<img>").attr("src","img/"+i+".jpg")

aImg.on("load",function(){

imgArray.push(this);

if (imgArray.length == 39) {

//加载完毕

createLi();

resizeFun();

}

})

}

}

preloadImg();

function createLi(){

for (var i = 0;i < 39;i++) {

//计算可以放置多少列

var numCol =parseInt(document.documentElement.clientWidth / (WIDTH + 10)) 

var topArray = [];

//初始化记录高度值的数组 topArray

for (var i = 0;i < numCol;i++) {

topArray[i] = 0;

}

for (var i = 0; i < 39;i++) {

var aImg = imgArray[i];

aImg.style.width = WIDTH +"px";

//找到放到那一列,找高度最小的那一列

var minIndex = 0;

var min = topArray[0];

for (var j = 0;j < topArray.length;j++) {

if (min > topArray[j]) {

min = topArray[j];

minIndex = j;

}

}

aImg.style.left = minIndex * (WIDTH + 10) + 10 + "px";

aImg.style.top = min + 10 + "px";

$("#list").append($(aImg));

 

topArray[minIndex] += (aImg.offsetHeight + 10);

} 

}

} 

function resizeFun(){

window.onresize = function(){

createLi();

}

}

resizeFun(); 

</script>

 

  以上代码用到的img图片 均以  数字 + .jpg 格式命名 例如:1.jpg

  以上代码为个人所写,可以借鉴.欢迎大家提出建议.

推荐阅读