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

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. Android DB类,支持MDB,SQLITE,SQLSERVER,支持查询、事务,对象直接插入和更新操作等

    直做数据库,最近花了点时间把自己常用的东西封装在一起. DBHelper using System; using System.Collections.Generic; using System.Te ...

  2. WPF控件相对位置解析

    WPF控件相对位置的获取方法是比较简单的.对于初学者来说,掌握这一技巧的应用,可以帮助以后对WPF的深入学习,而且在实际使用中,这是一个非常常用的方法. 我们知道WPF有着比较灵活的布局方式,关于某个 ...

  3. MyEclipse打开JSP文件报"Failed to create the part's controls"解决方法汇总

    有时候,打开别人的开发环境中导过来的项目的JSP文件,会出现“Failed to create the part's controls”的错误! 解决的方法有: 方法1:关闭myeclipse的jsp ...

  4. WebView设置透明和设置背景图片的方法

    http://blog.csdn.net/Vincent20111024/article/details/8478219 1. WebView若要设置背景图,直接设置web .setBackgroun ...

  5. SQL Server ->> 数据一致性检查命令 -- DBCC CHECKDB

    Comming soon!!! 参考文献: CHECKDB From Every Angle: Complete description of all CHECKDB stages

  6. 【转】winrar命令行详解

    从命令行也可以运行 WinRAR 命令,常规的命令行语法描述如下: WinRAR  <命令> -<开关1> -<开关N> <压缩文件> <文件.. ...

  7. task可声明参数 z

    直接这样写 var task1 = Task.Factory.StartNew(() => DoSomeWork(message1, message2)); 如果是winform,你在另外一个线 ...

  8. windows10 蓝牙(Bluetooth®)设备删除失败解决方案

    某次更新后蓝牙鼠标突然断线无响应,于是尝试删除设备后重新配对,但是出现了删除失败: 这时候可以这样解决: 进入设备管理器(Win+X 设备管理器) 点击 查看 (在最上面一行),选择"显示隐 ...

  9. June 20th 2017 Week 25th Tuesday

    Care and diligence bring luck. 谨慎和勤奋,带来好运气. In my opinion, care and diligence may just gurantee us a ...

  10. 如何在Windows 7/8/10中使用热键来调整音量?

    有时,您需要一个热键来调整Windows PC中的音量.例如:播放全屏视频或游戏时需要调整音量. 有一个简单的方法可以做到: 安装并运行Perfect Hotkey软件.   配置键盘快捷键以进行音量 ...