基于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使用非常简单到只需要一句代码就能实现,除此之外,当页面宽 ...
随机推荐
- day34-3 类和对象小知识
目录 属性查找顺序 类与对象的绑定方法 类与数据类型 对象的高度整合 属性查找顺序 属性查找顺序:先从对象自身查找,对象没有就去类中查找,类中没有则报错 class Student: name = ' ...
- Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码
先把实验3的jsp页面复制过来: WebContent->WEB-INF->lib下面的jar包8.0版本也要记得复制: Java Resources->src下的 cn.edu.h ...
- 深度遍历DFS
目录: https://zhipianxuan.github.io/ 一.树的DFS 二.二维矩阵的DFS 三.图的DFS 一.题目一:二维矩阵(输出所有路径数) 思路:从起点开始,DFS,直到走到终 ...
- 在 Linux 下判断系统当前是否开启了超线程
转自: http://www.cnblogs.com/wjoyxt/p/4804293.html #lscpu Thread(s) per core: 2 Core(s) per socket: 6 ...
- 当svn检出项目检出一半时停止,如何继续检出
1.当svn检出项目时,发现中断,又不想重新检出可以在已检出的项目目录下右键 2.然后点击 之后直接update你的项目就可以了
- webpack 配置 Vue 多页应用 —— 从入门到放弃
webpack 配置 Vue 多页应用 -- 从入门到放弃 一直以来,前端享有无需配置,一个浏览器足矣的优势,直到一大堆构建工具的出现,其中 webpack 就是其中最复杂的一个,因此出现了一个新兴职 ...
- 【ACM】hdu_3782_xxx定律_201308011521
xxx定律Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- asp.net--Area功能
大型项目必用,这个必须要会,相当于一个MVC的子程序,方便管理,可以理解为一个独立的小MVC程序了 隔离代码.避免冲突 区域是独立的MVC小程序
- [MySQLCPU]线上飙升800%,load达到12的解决过程
接到报警通知,负载过高,达到800%,load也过高,有11了. MySQL版本为5.6.12-log 1 top 之后,确实是mysqld进程占据了所有资源. 2 查看error日志,无任何异常 3 ...
- php类似shell脚本的用法
参考: http://www.cnblogs.com/myjavawork/articles/1869205.html php还可以用于类似于shell脚本,哈哈,对编程语言和对整个计算机系统的认识又 ...