/*封装一个瀑布流插件*/
(function($){
$.fn.WaterFall = function(){
/*这是你初始化 调用这个方法的时候的 那个jquery选着到的dom对象 this*/
/*$this 拿到的瀑布流容器 中有需要需要去做定位的盒子*/
var $this = $(this); /*拿到容器的宽度*/
var parentWidth = $this.width(); /*瀑布流容器当中的item*/
var items = $this.children(); /*子容器的宽度*/
var childWidth = items.width(); /*多少列*/
var columnCount = 5; /*间距*/
var space = (parentWidth - childWidth * columnCount)/(columnCount-1); /*核心布局代码*/
/*
* 1.第一排的盒子 top定位 都是0
* 2.距离左边的距离 根据当前所属的列 第几列 5 索引 4*宽度+间距
* 3.计算top的定位 找到最矮的那列 把它追加上去
* 4.容器是没有高度的 需要计算最高的那列 设置高度
* 【怎么样实时的记录每一列的高度】 需要有一个记录每一列高度的变量 数组记录五裂的高度
* */ var colArray = []; /*遍历所有的盒子*/
$.each(items,function(i,item){
/*当前盒子*/
var $item = $(item);
/*索引是0-4就是五个第一排的盒子*/
if(i < 5){
/*初始化数组*/
colArray[i] = $item.height();
/*第一排的盒子 定位*/
$item.css({
top:0,
left:i*( childWidth + space )
});
}else{
/*计算定位*/
/*3.计算top的定位 找到最矮的那列 把它追加上去*/
var minItem = colArray[0];/*最小的高度*/
var minIndex = 0;/*最下的那列的索引*/
for(var j = 0 ; j < colArray.length ; j ++){
if(minItem > colArray[j]){
minItem = colArray[j];
minIndex = j;
}
}
//console.log(minItem);
/*因为要定位left 需要这列的索引*/
$item.css({
top:minItem + space,
left:minIndex * (childWidth + space)
});
/*colArray 高度变了 所以要重新设置*/
colArray[minIndex] = minItem + space + $item.height();
}
}); /*布局完成在来设置容器的高度*/
console.log(colArray);
/* 4.容器是没有高度的 需要计算最高的那列 设置高度*/
var maxItem = colArray[0];
for(var i = 0 ; i < colArray.length ; i ++){
if(maxItem < colArray[i]){
maxItem = colArray[i];
}
}
$this.height(maxItem); }
})(jQuery);

基于jQuery封装一个瀑布流插件的更多相关文章

  1. jQuery动态网格瀑布流插件Masonry

    Masonry是一款非常强大的jQuery动态网格布局插件,可以帮助开发人员快速开发瀑布流界面效果.和CSS中float的效果不太一样的地方在于,float先水平排列,然后再垂直排列,使用Masonr ...

  2. 利用jQuery来扩展一个瀑布流插件

      简单了解jQuery.fn.extend() jQuery.fn.extend()函数用于为jQuery扩展一个或多个实例属性和方法(主要用于扩展方法). (截图来自jQuery文档) 为了更清晰 ...

  3. 原生 JS 实现一个瀑布流插件

    更好的阅读体验,点击 原文地址 瀑布流布局中的图片有一个核心特点 -- 等宽不定等高,瀑布流布局在国内网网站都有一定规模的使用,比如pinterest.花瓣网等等.那么接下来就基于这个特点开始瀑布流探 ...

  4. 基于jQuery的简易瀑布流实现

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 基于jQuery 的图片瀑布流实现

    解题思路: 第1步  分析问题:我这边的处理方式是以列为单位.每次滚动条滚到底部,把需要加的新的内容放在高度最小的列.如下图所示 加载后的显示 如果在继续往下滚动.新图片就会在1下边显示,如此类推. ...

  6. vue 写一个瀑布流插件

    效果如图所示: 采用了预先加载图片,再计算高度的办法..网络差的情况下,可能有点卡 新建 vue-water-easy.vue  组件文件 <template> <div class ...

  7. 自定义基于jquery竖向瀑布流插件

    公司新项目做了一个关于图片的板块,网上找了一些瀑布流插件都不是很适合自己,于是就自己造轮子写一个,并封装成插件github 于是就想分享一下,主要是为了更好的学习与记忆. 如果大家进来了,希望能给我g ...

  8. 8款实用的Jquery瀑布流插件

    1.网友Null分享Jquery响应式瀑布流布局插件 首先非常感谢网友Null的无私分享,此作品是一款响应式瀑布流布局Jquery插件,网友Null增加了一个屏幕自适应和响应式,响应式就是支持智能手机 ...

  9. jQuery插件之-瀑布流插件

    jquery.wookmark.js 一个实现瀑布流自适应宽度布局的jQuery插件—jquery.wookmark.js , wookmark使用非常简单到只需要一句代码就能实现,除此之外,当页面宽 ...

随机推荐

  1. BZOJ 1426: 收集邮票 数学期望 + DP

    Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且 买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡 ...

  2. nyoj112-指数运算

    指数运算时间限制:600 ms  |  内存限制:65535 KB难度:2描述写一个程序实现指数运算 X^N.(1<X<10,0<N<20)输入输入包含多行数据 每行数据是两个 ...

  3. 【密码学】RSA加密 kotlin实现方法(支持任意字节长度)

    这个编辑器不支持kotlin,尴尬了···· 算了,就用Java来弄吧 val 定义常量 var 定义变量 具体kotlin的开发手册详见:http://www.runoob.com/kotlin/k ...

  4. Atcoder ARC 082C/D

    C - Together 传送门:http://arc082.contest.atcoder.jp/tasks/arc082_a 本题是一个数学问题. 有一个长度为n的自然数列a[1..n],对于每一 ...

  5. jQuery源码分析 开篇(一)

    解读一个开源框架,最终目的当然就是学习程序的设计思想和实现技巧. JavaScript宗旨就是Write Less, Do More,简洁的API,优雅的链式,强大的查询与便捷的操作都是我们喜欢他的原 ...

  6. Spring Cloud-Eureka实现服务的注册与发现(二)

    在Spring Cloud中是使用Eureka来实现服务的注册与发现的 请勿使用eureka2.x  用于生产 2.x已经停止开发了  使用1.x  最新版是1.9  我这里demo是使用1.9  详 ...

  7. 洛谷 P3819 松江1843路

    题目描述 涞坊路是一条长L米的道路,道路上的坐标范围从0到L,路上有N座房子,第i座房子建在坐标为x[i]的地方,其中住了r[i]人. 松江1843路公交车要在这条路上建一个公交站,市政府希望让最多的 ...

  8. 0816关于MySQL的审计 init-connect+binlog实现用户操作追踪

    转自:http://blog.sina.com.cn/s/blog_605f5b4f01013xkv.html mysql 用init-connect+binlog实现用户操作追踪 做access 的 ...

  9. mongodb--group聚合运算

    mongodb本质就是要做一个高性能,能简单则简单,不要把mongodb中的运算做的太复杂 count 最简单的一个聚合方法 distinct 选择结果中剔除重复的一个键值, 跟sql语句的效果是一样 ...

  10. C#--线程存储数据的机制

    面试题:线程存储数据的机制 Local variables 局部变量 临时存储 栈 Instance class fields 对象存储 堆 (堆的大小只有硬件的限制) Static local va ...