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

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 ListView复制、删除的实现

    适配器MyAdapter: package com.zihao.adapter; import java.util.List; import com.zihao.popdemo.R; import c ...

  2. 致 BitClub 矿池,你们为什么要对比特币网络发动交易延展性攻击?

    原文:https://medium.com/@bithernet/bitclub-why-are-you-doing-malleability-attack-now-6faa194b2146#.v4y ...

  3. SQL 截取字符

    select SUBSTRING('123,abcdefg',charindex(',','123,abcdefg',0)+1,LEN('123,abcdefg')-charindex(',','12 ...

  4. SQL Server ->> 与SQL Server服务配置相关的DMV

    1) sys.dm_server_services这个DMV可以告诉我们与当前版本的SQL Server相关的服务的启动状态和最后一次启动的时间,诸如这样的信息. SELECT * FROM sys. ...

  5. C#常用排序和查找算法

    1.C#堆排序代码 private static void Adjust (int[] list, int i, int m) { int Temp = list[i]; int j = i * 2 ...

  6. 最新-Linux常用命令大全-随时更新

      一.系统管理与设置 1.信息显示命令 # man & info  //帮助手册 # man 命令 //显示相应命令的帮助内容 # arch  //显示当前系统体系结构 # cal  //显 ...

  7. navicat远程连接mysql,2003 can't connect to mysql server on 10038

    转载地址:https://blog.csdn.net/f12105212/article/details/70768516 1:我们连接远程服务器的mysql,如果出现问题,很大问题会出在服务器的端口 ...

  8. c++ 读取文本问题

    c++文本操作有以下三个方法 ifstream,ofstream,fstream 读取文本常用的方法如下 std::ifstream input; input.open(".log" ...

  9. codeforces 797 E. Array Queries【dp,暴力】

    题目链接:codeforces 797 E. Array Queries   题意:给你一个长度为n的数组a,和q个询问,每次询问为(p,k),相应的把p转换为p+a[p]+k,直到p > n为 ...

  10. sqlserver数据库 表中字段值有空格,如何去除空格(例如char (5) 存入数据不足5位时sqlserver会自动补空格)

    普通的空格 前后的空格,使用LTrim和RTrim即可,例如:LTrim(RTrim(Name)) 中间的空格,使用replace函数替换,例如:Replace(Name,' ','') 如果是普通的 ...