基于jQuery封装一个瀑布流插件
/*封装一个瀑布流插件*/
(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封装一个瀑布流插件的更多相关文章
- jQuery动态网格瀑布流插件Masonry
Masonry是一款非常强大的jQuery动态网格布局插件,可以帮助开发人员快速开发瀑布流界面效果.和CSS中float的效果不太一样的地方在于,float先水平排列,然后再垂直排列,使用Masonr ...
- 利用jQuery来扩展一个瀑布流插件
简单了解jQuery.fn.extend() jQuery.fn.extend()函数用于为jQuery扩展一个或多个实例属性和方法(主要用于扩展方法). (截图来自jQuery文档) 为了更清晰 ...
- 原生 JS 实现一个瀑布流插件
更好的阅读体验,点击 原文地址 瀑布流布局中的图片有一个核心特点 -- 等宽不定等高,瀑布流布局在国内网网站都有一定规模的使用,比如pinterest.花瓣网等等.那么接下来就基于这个特点开始瀑布流探 ...
- 基于jQuery的简易瀑布流实现
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- 基于jQuery 的图片瀑布流实现
解题思路: 第1步 分析问题:我这边的处理方式是以列为单位.每次滚动条滚到底部,把需要加的新的内容放在高度最小的列.如下图所示 加载后的显示 如果在继续往下滚动.新图片就会在1下边显示,如此类推. ...
- vue 写一个瀑布流插件
效果如图所示: 采用了预先加载图片,再计算高度的办法..网络差的情况下,可能有点卡 新建 vue-water-easy.vue 组件文件 <template> <div class ...
- 自定义基于jquery竖向瀑布流插件
公司新项目做了一个关于图片的板块,网上找了一些瀑布流插件都不是很适合自己,于是就自己造轮子写一个,并封装成插件github 于是就想分享一下,主要是为了更好的学习与记忆. 如果大家进来了,希望能给我g ...
- 8款实用的Jquery瀑布流插件
1.网友Null分享Jquery响应式瀑布流布局插件 首先非常感谢网友Null的无私分享,此作品是一款响应式瀑布流布局Jquery插件,网友Null增加了一个屏幕自适应和响应式,响应式就是支持智能手机 ...
- jQuery插件之-瀑布流插件
jquery.wookmark.js 一个实现瀑布流自适应宽度布局的jQuery插件—jquery.wookmark.js , wookmark使用非常简单到只需要一句代码就能实现,除此之外,当页面宽 ...
随机推荐
- RBM(受限玻尔兹曼机)和深层信念网络(Deep Brief Network)
目录: 一.RBM 二.Deep Brief Network 三.Deep Autoencoder 一.RBM 1.定义[无监督学习] RBM记住三个要诀:1)两层结构图,可视层和隐藏层:[没输出层] ...
- TensorFlow学习笔记----例子(2)
使用TensorFlow中的梯度下降法构建线性学习模型的使用示例:(来源:https://morvanzhou.github.io/tutorials/machine-learning/tensorf ...
- 【剑指Offer】23、二叉搜索树的后序遍历序列
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路: 对于后续遍历序列,序 ...
- Shell 在手分析服务器日志不愁
转自:https://wujunze.com/server_logs_analysis.jsp 自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量.看看有没有骇客 ...
- EditorLineEnds.ttr的困扰
DELL的n年的商用机电脑硬盘坏了,措手不及. 256ssd+1tb企业级.机器快乐很多.一小步,让机器快了一大步. 但是2007出问题了,每次启动EditorLineEnds.ttr被占用.原来有那 ...
- 图论·Floyd算法·HDU2544&1874 (伪)2066
在看到1874的题时,第一反应是用上一篇的并查集方法,后来查了一下是要用Floyd做,所以就去查Floyd算法的资料. 即插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法. 核心代码: ma ...
- netty心跳机制和断线重连(四)
心跳是为了保证客户端和服务端的通信可用.因为各种原因客户端和服务端不能及时响应和接收信息.比如网络断开,停电 或者是客户端/服务端 高负载. 所以每隔一段时间 客户端发送心跳包到客户端 服务端做出心 ...
- 洛谷 P2010 回文日期
Noip2016普及组T2 题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月 份,最后2位代表日期 ...
- 线上MySQL慢查询现象案例--Impossible WHERE noticed after reading const tables
前言:2012年的笔记整理而得,发布个人博客,做备忘录使用. 背景:线上慢查询日志监控,得到如下的语句: 发现:select doc_text from t_wiki_doc_text w ...
- 0912MySQL 执行计划explain详解
转自http://blog.itpub.net/29773961/viewspace-1767044/ 该博客内容是比较全的,虽然写的比较晦涩,多读几遍还是不错的 explain命令是查看查询优化器如 ...