前端jQuery实现瀑布流
瀑布流是我们经常会见到的东西,一直刷新一直有,其实它实现起来是很简单的。具体代码如下
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实现瀑布流的更多相关文章
- 【前端】用jQuery实现瀑布流效果
jQuery实现瀑布流效果 何为瀑布流: 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早 ...
- 网友微笑分享原创Jquery实现瀑布流特效
首先非常感谢网友微笑的无私分享,此Jquery特效是一款非常流行和实用的瀑布流布局,核心代码只有几十行,是我见过代码量最少的瀑布流布局,非常适合网友们学习哦,希望大家好好看一下这个Jquery特效的原 ...
- 用jQuery实现瀑布流效果学习笔记
jQuery一直没系统的学,只知道是js库,封装了好多js函数,方便了开发.以前做过一个原生的图片网站瀑布流效果,超级麻烦,这次用了jQuery方法,瞬间代码浓缩了,只有56行js代码.神奇的让我来把 ...
- 用JavaScript和jQuery实现瀑布流
▓▓▓▓▓▓ 大致介绍 在慕课网上学习了用原生js和jQuery实现瀑布流,在这里做个笔记 ▓▓▓▓▓▓ 用JavaScript实现 基本结构: <div id="main" ...
- 用jquery实现瀑布流案例
一.瀑布流是我们常见的案例,这里主要讲述,用jquery的方式实现瀑布流的功能! 引言:我们经常见到很多网站的瀑布流功能,如淘宝.京东这些商品等等.. 实现它我们首先考虑几个问题:1.获取到数据 ...
- jQuery实现瀑布流
瀑布流布局多用于加载图片,或者图片配上文字.视觉表现为参差不齐的多栏布局.随着页面滚动条向下滚动,还会不断加载数据块并附加至当前尾部.本文就来利用jQuery实现一个图片瀑布流的效果. 1.布局. 首 ...
- Jquery简单瀑布流代码示例
最近很多网站都采用瀑布流风格设计,感觉挺有个性的,比较合适做图片类型的网站,没事仿开心网做一个瀑布流示例. 需要用到Jquery,jquery.masonry.min.js <!DOCTYPE ...
- jquery版瀑布流
一个月前用jquery实现了瀑布流效果,看着当时的代码有点难过……今天抽时间稍微修改了一下.额,现在看起来不是那么难受了,就来和大家分享一下.废话不多说,开始正题~ 一.演示效果 二.html代码 & ...
- jQuery制作瀑布流(转)
“瀑布流布局”随着pinterest网的流行而出名,现在国内使用这种风格布局的网站也越来越多,比如说Mark之,蘑菇街,点点网,哇哦等等.我第一次听到这个布局名称是来自于“乔花写的<瀑布流布局浅 ...
随机推荐
- 学习C++从入门到精通的的十本最经典书籍
原文:http://blog.csdn.net/a_302/article/details/17558369 最近想学C++,找了一下网上推荐的书籍,转载过来给大家分享 转载自http://c.chi ...
- Android setTag()/getTag()
View中的setTag(Onbect)表示给View添加一个格外的数据,以后可以用getTag()将这个数据取出来. 可以用在多个Button添加一个监听器,每个Button都设置不同的setTag ...
- 第三篇:jvm之垃圾回收器
一.Serial收集器 新生代收集器,在垃圾回收时,必须暂停其他所有的工作线程.即Stop-The-World. 评价:老而无用,食之无味,弃之可惜. 二.ParNew收集器 新生代收集器,seria ...
- 捕获Task.WhenALl返回的Task的Exception
如果有一个任务抛出异常,则Task.WhenAll 会出错,并把这个异常放在返回的Task 中.如果多个任务抛出异常,则这些异常都会放在返回的Task 中.但是,如果这个Task 在被await 调用 ...
- 用CSS写扫描二维码图标
代码如下: <style>.icon{margin:300px;width:30px;height:30px;position:relative}.icon .b{border:2px s ...
- Python学习---递归函数的学习
定义:在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归特性: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 ...
- nginx知识图谱
nginx启动起来后有两个进程,一个是主进程,一个是守护进程
- Linux 系统查看tomcat控制台命令
前提进入tomcat/logs文件夹下 查看全部命令是:tail -f catalina.out 如果想查看具体文件的日志进入该文件所在目录然后命令如下: tail -f filename
- 关于Java中的反射的一个简单使用
把以前在其他地方的技术文章重新整理一遍, 方便自己回忆, 也方便他人借鉴. 刚工作的时候发过这么一段代码: package cn.com.hanbinit.test; import java.lang ...
- MongoDB排序记录
MongoDB sort()方法 要在MongoDB中排序文档,需要使用sort()方法. 该方法接受包含字段列表及其排序顺序的文档.使用指定排序顺序1和-1. 1用于升序,而-1用于降序. 语法 s ...