美文网首页
瀑布流布局

瀑布流布局

作者: LongfeiSong | 来源:发表于2017-03-03 23:24 被阅读0次

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>waterfall</title>
<style>
*{
margin:0;
padding:0;
}

main{

position:relative;

}

.box{
padding:15px 0 0 15px;
float:left;
}

.pic{
padding:10px;
border:1px solid #ccc;
border-radius:1px;
box-shadow:0 0 5px #ccc;
}

.pic img{
width:170px;
height:auto;
}
</style>
</head>
<body>
<div id="main">
<div class="box">

<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>

</div>
<div class="box">

<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic">

</div>
</div>
<div class="box">

<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
<div class="box">
<div class="pic">

</div>
</div>
<div class="box">

<div class="pic"> </div>
</div>
<div class="box">
<div class="pic"> </div>
</div>
</div>
</body>
</html>

<script>
window.onload=function(){
waterfall('main','box');
var data = {"message":"pictures","images":[{"src":"1.jpg"},{"src":"2.jpg"},{"src":"3.jpg"},{"src":"4.jpg"},{"src":"5.jpg"},{"src":"6.jpg"},{"src":"7.jpg"},{"src":"8.jpg"},{"src":"9.jpg"},{"src":"10.jpg"},{"src":"11.jpg"},{"src":"12.jpg"},{"src":"13.jpg"},{"src":"14.jpg"},{"src":"15.jpg"},{"src":"16.jpg"},{"src":"17.jpg"},{"src":"18.jpg"},{"src":"19.jpg"},{"src":"20.jpg"},{"src":"21.jpg"},{"src":"22.jpg"},{"src":"23.jpg"}]};
window.onscroll=function(){
var oParent = document.getElementById('main');
var oBoxs = oParent.getElementsByClassName('box');
var lastBoxH = oBoxs[oBoxs.length-1].offsetTop+Math.floor(oBoxs[oBoxs.length-1].offsetHeight);
var scrollTop = document.body.scrollTop||document.documentElement.scrollTop;
var height = document.body.clientHeight||document.documentElement.clientHeight;
if(checkScroll()){
var oParent = document.getElementById('main');
for(var i=0;i<data.images.length;i++){
var div = document.createElement('div');
div.className = 'box';
oParent.appendChild(div);
var pic = document.createElement('div');
pic.className = 'pic';
div.appendChild(pic);
var img = document.createElement('img');
img.src='images/'+data.images[i].src;
pic.appendChild(img);
}
waterfall('main','box');
}
}
}

function waterfall(parent,box){
var oParent=document.getElementById(parent);
var oBoxs=oParent.getElementsByClassName(box);
var boxW=oBoxs[0].offsetWidth;
var cols=Math.floor(document.documentElement.clientWidth/boxW);
oParent.style.cssText='width:'+boxWcols+'px;margin:0 auto';
var hArr=new Array();
for(var i=0;i<oBoxs.length;i++){
if(i<cols){
hArr.push(oBoxs[i].offsetHeight);
}else{
var minH=Math.min.apply(null,hArr);
var index=getMinHIndex(hArr,minH);
hArr[index]+=oBoxs[i].offsetHeight;
oBoxs[i].style.position='absolute';
oBoxs[i].style.left=index
boxW+'px';
oBoxs[i].style.top=minH+'px';
}
}
}

function getMinHIndex(arr,val){
for(var i in arr){
if(arr[i]==val){
return i;
}
}
}

function checkScroll() {
var oParent = document.getElementById('main');
var oBoxs = oParent.getElementsByClassName('box');
var lastBoxH = oBoxs[oBoxs.length-1].offsetTop+Math.floor(oBoxs[oBoxs.length-1].offsetHeight);
var scrollTop = document.body.scrollTop||document.documentElement.scrollTop;
var height = document.body.clientHeight||document.documentElement.clientHeight;
return (lastBoxH < scrollTop + height + 200)?true:false;
}
</script>

相关文章

  • 瀑布流布局 的学习

    1- 实现瀑布流布局效果 瀑布流效果瀑布流代码木桶布局效果木桶布局代码瀑布流布局 2- 实现一个新闻瀑布流新闻...

  • 瀑布流、木桶布局

    瀑布流 瀑布流效果代码 木桶布局 木桶布局效果(加载有点慢)代码

  • 瀑布流照片墙布局

    title: 瀑布流照片墙布局 瀑布流概念 瀑布流布局是错落式的布局方式。它有一个特点,整个布局以列为单位,下一个...

  • CSS经典布局

    圣杯布局 瀑布流

  • 瀑布流

    瀑布流布局瀑布流jsonp新闻页

  • 瀑布流布局_木桶布局

    题目1: 实现一个瀑布流布局效果 瀑布流 题目2:实现木桶布局效果 木桶布局 题目3:**实现一个新闻瀑布流新闻网...

  • 瀑布流和懒加载结合

    实现一个瀑布流布局效果 瀑布流

  • 瀑布流

    什么是瀑布流: 欣赏 pinterest 样式分析 瀑布流,又被称作为瀑布流式布局,是一种比较流行的网站页面布局方...

  • 瀑布流

    1、什么是瀑布流 瀑布流,又称瀑布流式布局。是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚...

  • 瀑布流的三种实现

    先来欣赏三个瀑布流的网站 pinterest 淘宝爱逛街 蘑菇街 什么是瀑布流? 瀑布流,又称瀑布流式布局。 这种...

网友评论

      本文标题:瀑布流布局

      本文链接:https://www.haomeiwen.com/subject/frqdgttx.html