基于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使用非常简单到只需要一句代码就能实现,除此之外,当页面宽 ...
随机推荐
- python tips:小整数对象池与字符串intern
本文为is同一性运算符的详细解释.is用于判断两个对象是否为同一个对象,具体来说是两个对象在内存中的位置是否相同. python为了提高效率,节省内存,在实现上大量使用了缓冲池技术和字符串intern ...
- hadoop 安装问题总结
安装启动步骤 [英语好的,直接手把手跟着来] http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/Sing ...
- 【笔记】Linux就该这么学-第六课第四章
vim使用 a 在光标后一位置插入 i 在光标当前位置插入 o 在光标下面创建个空行 dd 删除(剪切)光标所在行 5dd 删除(剪切)从光标处开始的5行 yy 复 ...
- Linux+Apache下如何安装SSL证书
最近很多站长在问linux系统平台下如何安装SSL证书?Linux+Apache下如何安装SSL证书?本文整理了关于Linux+Apache下如何安装SSL证书的相关教程供大家参考,更多SSL证书安装 ...
- Google Shell Style Guide
转自:http://google.github.io/styleguide/shell.xml Shell Style Guide Revision 1.26 Paul Armstrong Too m ...
- 宏、预编译(day12)
指针数组里的每个存储区是一个指针类型 的存储区 字符指针数组里包含多个字符类型指针,其中 每个指针可以表示一个字符串 字符指针数组可以用来表示多个相关字符串 主函数的第二个参数是一个字符指针数组, 其 ...
- case...when...then if 用法
select case when if 的一些用法 概述:sql语句中的case语句与高级语言中的switch语句,是标准sql的语法,适用于一个条件判断有多种值的情况下分别执行不同的操作. 首先,让 ...
- js中writeln()方法
writeln( ) 方法与 write( ) 方法几乎一样,差别仅在于是前者将在所提供的任何字符串后添加一个换行符.在 HTML 中,这通常只会在后面产生一个空格:不过如果使用了 <PRE&g ...
- vue.js 中 data, prop, computed, method,watch 介绍
vue.js 中 data, prop, computed, method,watch 介绍 data, prop, computed, method 的区别 类型 加载顺序 加载时间 写法 作用 备 ...
- redis命令学习的注意问题
1.set get命令只用于字符串,get命令取key值时string正常返回,没有key返回nil,其他类型会报错 设置的时候是set test redis ex 200000等同于SETEX te ...