瀑布流是我们经常会见到的东西,一直刷新一直有,其实它实现起来是很简单的。具体代码如下

1、css代码

<style>
*{
margin:;
padding:;
}
.container{
position: relative;
}
.container .box{
float: left;
padding:15px 0 0 15px;
}
.container .box .pic{
border:1px solid #ccc;
padding:10px;
border-radius: 5px;
box-shadow: 0 0 8px #ccc;
}
.container img{
width:150px;
}
</style>

2、html代码

<div class="container">
<div class="box">
<div class="pic"><img src="data:images/1.jpg" alt="" /></div>
</div>
<div class="box">
<div class="pic"><img src="data:images/2.jpg" alt="" /></div>
</div>
<div class="box">
<div class="pic"><img src="data:images/3.jpg" alt="" /></div>
</div>
<div class="box">
<div class="pic"><img src="data:images/4.jpg" alt="" /></div>
</div>
<div class="box">
<div class="pic"><img src="data:images/5.jpg" alt="" /></div>
</div>
<div class="box">
<div class="pic"><img src="data:images/6.jpg" alt="" /></div>
</div>
<div class="box">
<div class="pic"><img src="data:images/7.jpg" alt="" /></div>
</div>
<div class="box">
<div class="pic"><img src="data:images/8.jpg" alt="" /></div>
</div>
<div class="box">
<div class="pic"><img src="data:images/9.jpg" alt="" /></div>
</div>
<div class="box">
<div class="pic"><img src="data:images/10.jpg" alt="" /></div>
</div>
</div>

3、javascript代码

<script>
$(window).on("load",function(){
waterfall();
var dataInit = {"data":[{"src":"1.jpg"},{"src":"2.jpg"},{"src":"3.jpg"},{"src":"4.jpg"},{"src":"5.jpg"},{"src":"6.jpg"}]};
$(window).scroll(function(){
if(checkScroll()){ //满足加载条件
$.each(dataInit.data,function(index,value){
// console.log(value["src"])
var $b = $("<div class='box'></div>");
var $pic = $("<div class='pic'></div>");
var $img = $("<img />");
$img.attr("src","images/" + value["src"]);
$img.appendTo($pic);
$pic.appendTo($b);
$b.appendTo($(".container"));
});
}
waterfall();
});
$(window).resize(function(){
waterfall();
});
}); function waterfall(){
var $box = $(".container>.box");
var $bW = $box.first().outerWidth();//获取一个box的宽度
var $vW = $(window).outerWidth();//获取浏览器宽度
var $cols = parseInt($vW / $bW);//整个浏览器最多能排的列数
var hArr = [];
$(".container").css({"width":$bW * $cols,"margin":"0 auto"});
$box.each(function(i,val){
// var $bH = $(this).outerHeight();//获取每一个box的高度
if(i < $cols){ //遍历的下标 小于 列数 第一行
// hArr[i] = $(val).outerHeight();
hArr.push($(val).outerHeight());//把第一行所有的box的高度放到数组 hArr里
$(val).css({"position":"absolute","left":$bW * i,"top":0});
}else{
var $minH = Math.min.apply(null,hArr);//hArr数组里最小的高度
// var $minIndex = $.inArray($minH,hArr);
// $.inArray(元素,数组) 用来查找元素在整个数组中所处的位置 返回值是一个下标
var $minIndex = getIndex($minH);//最小高度所对应的下标
$(val).css({"position":"absolute","top":$minH,"left":$minIndex * $bW});
hArr[$minIndex] = hArr[$minIndex] + $(val).outerHeight();//更新数组中最小的那个高度
}
});
//获取高度最小的下标
function getIndex(h){
for(var j = 0;j < hArr.length;j++){
if(hArr[j] == h){
return j;
}
}
}
}
//检测加载条件
function checkScroll(){
var $sT = $(window).scrollTop();//滚动条向上卷去的距离
var $vH = $(window).outerHeight();//浏览器的高度
var $box = $(".container>.box");
var $offT = $box.last().offset().top;//获取最后一个box距离文档的偏移量
var $bH = $box.last().outerHeight();//获取最后一个box的高度
if(($vH + $sT) > ($offT + $bH / 2)){
return true;
}else{
return false;
}
} </script>

4、注意一定要引入本地的jQuery代码

例如:<script src="js/jquery-3.2.1.min.js" type="text/javascript" charset="utf-8"></script>

前端jQuery实现瀑布流的更多相关文章

  1. 【前端】用jQuery实现瀑布流效果

    jQuery实现瀑布流效果 何为瀑布流: 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早 ...

  2. 网友微笑分享原创Jquery实现瀑布流特效

    首先非常感谢网友微笑的无私分享,此Jquery特效是一款非常流行和实用的瀑布流布局,核心代码只有几十行,是我见过代码量最少的瀑布流布局,非常适合网友们学习哦,希望大家好好看一下这个Jquery特效的原 ...

  3. 用jQuery实现瀑布流效果学习笔记

    jQuery一直没系统的学,只知道是js库,封装了好多js函数,方便了开发.以前做过一个原生的图片网站瀑布流效果,超级麻烦,这次用了jQuery方法,瞬间代码浓缩了,只有56行js代码.神奇的让我来把 ...

  4. 用JavaScript和jQuery实现瀑布流

    ▓▓▓▓▓▓ 大致介绍 在慕课网上学习了用原生js和jQuery实现瀑布流,在这里做个笔记 ▓▓▓▓▓▓ 用JavaScript实现 基本结构: <div id="main" ...

  5. 用jquery实现瀑布流案例

    一.瀑布流是我们常见的案例,这里主要讲述,用jquery的方式实现瀑布流的功能! 引言:我们经常见到很多网站的瀑布流功能,如淘宝.京东这些商品等等.. 实现它我们首先考虑几个问题:1.获取到数据   ...

  6. jQuery实现瀑布流

    瀑布流布局多用于加载图片,或者图片配上文字.视觉表现为参差不齐的多栏布局.随着页面滚动条向下滚动,还会不断加载数据块并附加至当前尾部.本文就来利用jQuery实现一个图片瀑布流的效果. 1.布局. 首 ...

  7. Jquery简单瀑布流代码示例

    最近很多网站都采用瀑布流风格设计,感觉挺有个性的,比较合适做图片类型的网站,没事仿开心网做一个瀑布流示例. 需要用到Jquery,jquery.masonry.min.js <!DOCTYPE ...

  8. jquery版瀑布流

    一个月前用jquery实现了瀑布流效果,看着当时的代码有点难过……今天抽时间稍微修改了一下.额,现在看起来不是那么难受了,就来和大家分享一下.废话不多说,开始正题~ 一.演示效果 二.html代码 & ...

  9. jQuery制作瀑布流(转)

    “瀑布流布局”随着pinterest网的流行而出名,现在国内使用这种风格布局的网站也越来越多,比如说Mark之,蘑菇街,点点网,哇哦等等.我第一次听到这个布局名称是来自于“乔花写的<瀑布流布局浅 ...

随机推荐

  1. 向Github提交更改的代码

    更改了本地的某一文件的代码,那么如何覆盖Github上的同一文件代码呢?请看以下步骤: 1.先用 git status 看你更改了哪些文件: 2.然后 git add 你想要提交的更改的文件 或者 g ...

  2. 第三篇:jvm之垃圾回收器

    一.Serial收集器 新生代收集器,在垃圾回收时,必须暂停其他所有的工作线程.即Stop-The-World. 评价:老而无用,食之无味,弃之可惜. 二.ParNew收集器 新生代收集器,seria ...

  3. 关于实现XX系统设计时所实现的质量属性战术

    可用性: 1)使用Try-catch对抛出的异常进行处理 2)使用Spring事务管理 易用性: 1)在类似删除相关选项时,弹出提示框,防止误操作 2)在不编辑基本信息时,对其进行折叠或者隐藏 3)提 ...

  4. SQL Server ->> Database Snapshot(数据块快照)

    Comming soon!!! 参考文献: View the Size of the Sparse File of a Database Snapshot 数据库快照 (SQL Server) 创建数 ...

  5. 阿里云OSS 上传文件SDK

    Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...

  6. EJB 3.1 @Startup @Singleton sequence

    The annotation javax.ejb.Startup (@Startup) is used to mark an EJB so to make the EJB can be brought ...

  7. Go语言(二) 继承和重载

    继承 package main import "fmt" type Skills []string type person struct { name string age int ...

  8. mongodb 副本集+分片集群搭建

    数据分片节点#192.168.114.26mongod --shardsvr --replSet rsguo --port 2011 --dbpath=/data/mongodb/guo --logp ...

  9. ASP.NET 页面基本优化.

    一.禁用Browser Link(目前主要用来是刷新vs ide 浏览界面),直接干掉. <!-- Visual Studio Browser Link --> <script ty ...

  10. 大数因式分解 Pollard_rho 算法详解

    给你一个大数n,将它分解它的质因子的乘积的形式. 首先需要了解Miller_rabin判断一个数是否是素数 大数分解最简单的思想也是试除法,这里就不再展示代码了,就是从2到sqrt(n),一个一个的试 ...