基于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使用非常简单到只需要一句代码就能实现,除此之外,当页面宽 ...
随机推荐
- java操作Excel的poi 格式设置
格式设置 package com.java.poi; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi. ...
- Robot Framework(六)变量
变量 2.5.1简介 变量是Robot Framework的一个不可或缺的特性,它们可以在测试数据的大多数地方使用.最常见的是,它们用于测试用例表和关键字表中关键字的参数,但所有设置都允许在其值中使用 ...
- 在vue中,让表格td下的textraea自适应高度
1.效果图 2.数据是动态获取的,因此存在一个异步的问题,解决的思路是数据获取到渲染在textarea中以后,获取文字的真实高度,然后把这个高度给textarea 3.具体代码以及步骤 (1)再cre ...
- jupyter notebook主目录修改
转自http://blog.csdn.net/c437yuyang/article/details/54836303 1.打开 cmd 输入命令 jupyter notebook --generate ...
- 15.4 Task 异步匿名函数
Func<int, Task<int>> func = async x => { Console.WriteLine("starting x={0}" ...
- [luogu1627 CQOI2009] 中位数 (乱搞)
传送门 Solution 好水的题(ーー;) Code //By Menteur_Hxy #include <map> #include <queue> #include &l ...
- 10.Spring注解+MyBatis+Servlet
1.创建sql脚本 create table account ( id ) unsigned not null auto_increment primary key, account_number ) ...
- 【Codeforces Round #519 by Botan Investments D】Mysterious Crime
[链接] 我是链接,点我呀:) [题意] 相当于问你这m个数组的任意长度公共子串的个数 [题解] 枚举第1个数组以i为起点的子串. 假设i..j是以i开头的子串能匹配的最长的长度. (这个j可以给2. ...
- 字体大小之px、em、rem、pt,字号详解
PX px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. 是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Pe ...
- Ubuntu下的Apache、Mysql、PHP环境搭建
由于刚学习Linux,选择了界面比较友好的Ubuntu进行研究.命令行+可视化对于初学者来说组合还是比较不错的,图形界面作为命令行的一个过渡能比较直观的看到效果.在应用中学习是一个比较好的办法,我就是 ...