前端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之,蘑菇街,点点网,哇哦等等.我第一次听到这个布局名称是来自于“乔花写的<瀑布流布局浅 ...
随机推荐
- android popupwindow位置显示
1.在控件的上方: private void showPopUp(View v) { LinearLayout layout = new LinearLayout(this); layout.setB ...
- mysql游标的用法及作用
1当前有三张表A.B.C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中:常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有2000多条 ...
- Android 高速录像(2)
private void startRecordVideo() { if (index == VIDEO_1080) { if (!supported1080P120Fps) { showToast( ...
- Qt 之模型/视图(自定义按钮)
https://blog.csdn.net/liang19890820/article/details/50974059 简述 衍伸前面的章节,我们对QTableView实现了数据显示.自定义排序.显 ...
- eclipse安装checkStyle
今天用eclipse mars 安装checkstyle 代码测试工具,安装完后重启竟然没有,最后发现原来是 自己安装的步骤错了,记录下. 1. 我的版本是:Version: Mars.2 Relea ...
- 使用spring aop遇到的坑
1.aop 切点配置无误但只对控制器无效. 检测你的aop开启配置是否放在了spring配置文件中,如果是请把它移到mvc配置文件中. 我们知道当spring项目使用了spring mvc时,项目是存 ...
- 如何编译 opencv3 和 opencv_contrib(Linux)
本文以编译并安装OpenCV 3.3.0 为例,安装系统为 Linux x64 (Fedora 21),具体步骤如下: 1. 下载 Source code zip 压缩包 从下面网址,选择 openc ...
- ASP.NET常用内置对象之——Server
简介 Server对象是HttpServerUtility的一个实例,也是上下文对象context的一个属性,提供用于处理Web请求的Helper方法. 常用成员 一.Server.MapPath() ...
- 【Leetcode】【Medium】Unique Binary Search Trees
Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...
- S/4HANA服务订单Service Order的批量创建
我工作中接到一个任务,需要在性能测试系统里创建一亿条服务订单service order来做性能测试. 这么大规模的数据量,当然只能用代码来创建了. 本文提到的所有ABAP代码,我均已上传到我的Gith ...