HTML:先让图片充满一页

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>瀑布流</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
<script src="js/app.js"></script>
</head>
<body>
<div id="container"><div class="box">
<<div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div>
</div><div class="box">
<div class="box_img">
<img src="img/5.jpg">
</div></div></div> </body>
</html>

app.js:

window.onload=function() {
imgLocation("container");
var imgData={"data":[{"src":"2.jpg"},{"src":"4.jpg"},{"src":"5.jpg"},{"src":"6.jpg"},{"src":"7.jpg"}]};
window.onscroll =function(){
if(checkFlag()){
var cparent = document.getElementById("container");
for(var i=0;i<imgData.data.length;i++){
var cnode=document.createElement("div");
cnode.className="box";
cparent.appendChild(cnode);
var boxImg=document.createElement("div");
boxImg.className="box_img";
cnode.appendChild(boxImg);
var img=document.createElement("img");
img.src="img/"+imgData.data[i].src;
boxImg.appendChild(img);
}
imgLocation("container");
}
}
} function checkFlag(){
var cparent = document.getElementById("container");
var arr=cparent.childNodes;
var lastContentHeight=arr[arr.length-1].offsetTop;
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
var pageHeight=document.documentElement.clientHeight||document.body.clientHeight; if(lastContentHeight<scrollTop+pageHeight){
return true;
}
} function imgLocation(parent){
var cparent = document.getElementById(parent);
var arr=Array.prototype.slice.call(cparent.childNodes,0);
var imgWidth=arr[0].offsetWidth;
var num=parseInt(document.documentElement.clientWidth/imgWidth);
cparent.style.cssText="width:"+imgWidth*num+"px;"+"margin:0px auto"; var boxHeightArr=[];
for(var i=0;i<arr.length;i++){
if(i<num){
boxHeightArr[i]=arr[i].offsetHeight;
}else{
var minHeight=Math.min.apply(null,boxHeightArr);
var index=getMinHeightindex(boxHeightArr,minHeight);
arr[i].style.position = "absolute";
arr[i].style.top = minHeight+"px";
arr[i].style.left = arr[index].offsetLeft+"px";
boxHeightArr[index] = boxHeightArr[index]+arr[i].offsetHeight;
}
}
} function getMinHeightindex(boxHeightArr,minHeight){
for(var i in boxHeightArr){
if(boxHeightArr[i]==minHeight){
return i;
}
}
}

css:

*{
padding:0px;
margin:0px;
}
#container{
position:relative;
}
.box{
padding:5px;
float:left;
}
.box_img{
padding:5px;
border:1px solid #cccccc;
border-radius: 5px;
box-shadow: 0 0 5px #cccccc;
}
.box_img img{
width:150px;
height: auto;
}
 

JS实现瀑布流的更多相关文章

  1. 用js实现瀑布流的一种简单方法

    现在说瀑布流式布局似乎有点晚了,但是每一项技术都是向着“精”和“简”的方向在不断发展,在发展到极致之前,需要一个相当漫长的过程,因此,从这个角度来说,当瀑布流被应用得越来越多的时候,反而更应该讨论它, ...

  2. 原生JS实现瀑布流

    浏览网页的时候经常会遇到瀑布流布局的网站.也许有些读者不了解瀑布流.瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数 ...

  3. js实现瀑布流的一种简单方法实例分享

    现在说瀑布流式布局似乎有点晚了,但是每一项技术都是向着“精”和“简”的方向在不断发展,在发展到极致之前,需要一个相当漫长的过程,因此,从这个角度来说,当瀑布流被应用得越来越多的时候,反而更应该讨论它, ...

  4. 手把手教你js原生瀑布流效果实现

    手把手教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一 ...

  5. [JS练习] 瀑布流照片墙

    记录JS实现瀑布流照片墙效果 首先是前端页面 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. bootstrap+masonry.js写瀑布流

    最近在用bootstrap写一个网站,其中有个图文展示的页面要用到瀑布流的效果.因为项目要求,项目要以bootstrap为基准,不准私自添加内联样式.内部样式,所以,自己写瀑布流就不行了,所以,根据要 ...

  7. 多栏布局与JS实现瀑布流

    css3属性之多栏布局与JS实现瀑布流 背景:之前打算自己总结一下flex布局的知识点,发现自己无从下手,原因在何处:我反思了一下,其实原因很简单,使用的次数少,更多的时间使用了百分比,浮动和定位解决 ...

  8. js插件---瀑布流Masonry

    js插件---瀑布流Masonry 一.总结 一句话总结:还是要去看官网,比amazeui上面介绍的详细很多 1.瀑布流的原理是什么? 给外层套好相对定位,里面的每一个弄好绝对定位,然后计算出每一个的 ...

  9. js原生瀑布流

    背景: 1.在移动端开发,jq文件是显得非常庞大的,所以所有效果尽量用HTML5和原生js实现. 2.本次瀑布流是固定列数,采用非浮动的另外一种瀑布流思想实现的. 3.本次数据来源是json接口 4. ...

  10. vue.js实现瀑布流之vue-waterfall-easy

    想必大家应该很多都已经习惯了jquery的DOM操作,jquery的瀑布流实现起来也很容易. 但是,随着时代的发展,随着时代的进步..... 算了算了,扯远了,既然能找到这儿来,肯定是在vue.js上 ...

随机推荐

  1. 中心极限定理&&正态分布 随想

    0-前言 笔者本来周末约好朋友出去骑行,不料天公不作美!哎,闲来无事来到了实验室,本来打算看看<天天向上>,而这一期又实在不好看(偶像剧).只好来做做一些小实验,脑海里突然想到“正态分布“ ...

  2. JQuery --- 第五期 (JQuery节点操作)

    学习笔记 1.JQuery添加节点相关方法 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  3. [zepto]源码学习

    $() : zepto选择器,与jquery选择器类似,但是不支持jquery的拓展css支持(:first,:eq,:last...) $("div")选择页面内的全部div元素 ...

  4. Android 多图,大图内存优化

    策略: 1. 图片压缩 如果所需尺寸大于图片原始尺寸,可以压缩图片节省内存. 2. 图片缓存 每个图片加载时都会生成一个 Bitmap.把这些 Bitmap 缓存起来以重用相同的图片,避免重复创建. ...

  5. k8s 入门系列之集群安装篇

    关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...

  6. Verify the Developer App certificate for your account is trusted on your device.

    1.报错内容 Could not launch "CH5203" Verify the Developer App certificate for your account is ...

  7. springboot整合websocket后运行测试类报错:javax.websocket.server.ServerContainer not available

    springboot项目添加websocket依赖后运行测试类报如下错误: org.springframework.beans.factory.BeanCreationException: Error ...

  8. MVC框架入门准备(一)

    最近开发一套自己的框架,开发了一个多月,已传到git,学到了挺多,系列文章我会慢慢写挺多 这里先讲大致框架多用到的某些函数,我这里先列举一部分,网上对函数的定义,参数说明等,我就不照搬了,记录自己的理 ...

  9. acedSSGet 翻译

    ObjectARX 参考指南 > 全局函数 > AcEd 全局函数 > acedSSGet 函数 acedSSGet 折叠全部 C++ int acedSSGet( const AC ...

  10. jmeter+ant+jenkins+mac 报告优化(三) 使用命令行执行jmeter方式生成多维度的图形化HTML报告

    1.在构建中填写如下命令: 2.start.sh文件的内容 cd /Applications/apache-jmeter-3.0/bin/ CURTIME=`date +%Y%m%d%H%M` ./j ...