当前位置:首页 > 日记 > 正文

jQuery瀑布流的简单实现代码

jQuery瀑布流的简单实现代码

简单版的Jquery实现图片瀑布流思路,供大家参考,具体内容如下

注意:本篇文章基于知道每张图片的实际尺寸的情况下
特点:列数自适应,图片宽度固定

已知BUG:

像本案例中的刚好5张图片循环显示且只有5列的情况下会有问题,解决办法就是给予样式的时候不按顺序,而是先将图片放在top值最低的列

1.预备

1.基础html

<div id="main">  <div class="img-item"><img src="images/img1.webp" data-size="398*636" alt=""></div>  <div class="img-item"><img src="images/img2.webp" data-size="560*381" alt=""></div>  <div class="img-item"><img src="images/img3.webp" data-size="338*537" alt=""></div>  <div class="img-item"><img src="images/img4.webp" data-size="599*507" alt=""></div>  <div class="img-item"><img src="images/img5.webp" data-size="532*535" alt=""></div></div>

新建html文件,然后将#main下一层的代码多拷贝几次,毕竟图片多才能体现瀑布流的作用

2.基础css

#main{  width: 90%;  background-color: #dab;  text-align: center;  margin:0 auto;  position: relative;}img{  width: 100%;  box-sizing:border-box;  box-shadow: 2px 0 3px #ddd,0 2px 3px #ddd;}.img-item{  position: absolute;  padding: 3px;  box-sizing:border-box;  height: auto;  display: inline-block;}

2.开始

1.声明

//获取图片列表包裹层var $main = $('#main');//获取窗口,用于自适应var $mainWidth = $(window).width();//定义图片宽度var imgWidth = 150;//可显示的列数var columnNumber = Math.floor($mainWidth/imgWidth);//存储top信息var data = [];//初始化,比如当前可以显示6列,那么这里就初始化6个空间for (var i = 0; i < columnNumber; i++) {  data[i] = 0;}

2.主体

//var wall = function() {  //获取相册图片集合  var $imgs = $('.img-item');  //遍历图片集合修改top值  $.each($imgs, function(index, el) {    //计算当前列数    var currColumn = index % columnNumber;    //获取需要显示的高度    var size = $('img', el).data('size');    var height = imgWidth / parseInt(size.split('*')[0]) * parseInt(size.split('*')[1])    $(el).css({      width: imgWidth,      left: currColumn * imgWidth,      top: data[currColumn]    });    //如果需要动画可以使用$(el).animate    data[currColumn] += height;    //本来这里只需要+=$(el).height()就可以解决,但是初始化时有些问题未解决  });};

3.窗体大小改变事件

$(window).resize(function(event) {   //重置窗口宽度   $mainWidth = $(window).width();   //重置可显示的列数   columnNumber = Math.floor($mainWidth / imgWidth);   //动态修改#main相册包裹层的宽度,使整个相册看起来一直居中   $main.css({     width: imgWidth * columnNumber   });   //重置top信息   for (var i = 0; i < columnNumber; i++) {     data[i] = 0;   }   wall(); });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

利用Chrome DevTools直接调试Node.

利用Chrome DevTools直接调试Node.

方法,并行,调试,详解,电脑软件,前提Node.js 6.3+, 这个可上Node.js官网自行下载;Chrome 55+. 如果您本地的chrome升级到最新版后还是<55, 可以从此处下载:Chrome Canary,亲测可行。配置就目前来说,在浏览器端并行调试JavaScript与Node.js还属于…

js控制按钮,防止频繁点击响应的实

js控制按钮,防止频繁点击响应的实

控制,响应,频繁,实例,按钮,为了防止频繁点击按钮,可以采用一个策略,点击一次后让按钮灰掉,暂时不可以用,一段时间后再可以用,伪代码如下:var clicktag = 0; $('.a_cc').click(function () { if (clicktag == 0) { clickta…

解决局域网不能互相访问之全攻略

解决局域网不能互相访问之全攻略

局域网,全攻略,电脑软件,一般都是简单的设置和物理上的原因,其中XP之间不能互相访问是最近频繁遇到的问题。这篇文章就是来解决这些问题.分两个部分 一: 设置 现在,已经有许多人在使用Win2000和WinXP来联网,但在具体使用中有许多网友反映在Win…

wps文字如何同时打开两个文档wps文

wps文字如何同时打开两个文档wps文

文档,文字,方法,两个,电脑软件,  我们在办公时有时需要对两份文档进行对比,下面小编介绍下wps文字进行文档比较的方法。希望对你有帮助!wps文字同时打开两个文档的方法打开需要进行比较的文档。wps文字同时打开两个文档的方法图1  选择视…

详解vue嵌套路由-query传递参数

详解vue嵌套路由-query传递参数

嵌套,传递参数,路由,详解,电脑软件,在嵌套路由中我们经常会遇到父路由向子路由里面传递参数,传递参数有两种方法,通过 query 或者 paramsindex.html<div id="app"> <!-- router-view 路由出口, 路由匹配到的组件将渲染在这里 --> <rout…

简单谈谈axios中的get,post方法

简单谈谈axios中的get,post方法

方法,简单,电脑软件,post,axios,学习vue和nodejs的过程当中,涉及到了axios,今天为了测试,写了get和post两个方法来跟node服务端交互,结果因为header和参数弄了好久,在此记录一下,同时分享;由于刚接触axios,在测试方法中,写的都是很简单的东西,不过能…

为JQuery EasyUI 表单组件增加焦点

为JQuery EasyUI 表单组件增加焦点

表单,方法,组件,功能,焦点,1、背景说明 在使用 JQuery EasyUI 各表单组件时,实际客户端页面元素是由 JQuery EasyUI 生成的,元素的焦点切换,虽然 Tab 键可以正常用,但顺序控制属性 tabindex 不起作用,因为页面看到的元素,是生成的,没有tabinde…

ps怎么设计一款漂亮梦幻的中秋海报

ps怎么设计一款漂亮梦幻的中秋海报

中秋,海报,梦幻,漂亮,电脑软件,今天我们就来看看ps设计中秋节海报的教程,中秋节马上到了,学习制作一个中秋海报也不错,请看下文详细介绍。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、新建图层填充颜…

PS怎么制作透明的彩色线稿图?

PS怎么制作透明的彩色线稿图?

透明,彩色,电脑软件,PS,线稿图,大多数人提到PS时想到的是修图,磨皮。接下来给大家介绍新的玩法:如何使用PS制作透明彩色线稿图。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、打开一张需要制作的jpg…

WPS表格照相机使用方法是什么

WPS表格照相机使用方法是什么

照相机,使用方法,表格,电脑软件,WPS,  也许你有发现,在WPS工具栏中有一个&ldquo;照相机&rdquo;功能,可以用来拍照吗?以下是小编为您带来的关于WPS照相机使用方法,希望对您有所帮助。WPS照相机使用方法一、我们先在表格中建立一个数据区域并…

ps怎么合成人物头像创意海报?

ps怎么合成人物头像创意海报?

创意,头像,海报,人物,电脑软件,ps想要设计一幅人物头像创意海报,该怎么设计呢?下面我们就来看看详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、准备素材和新建文件2、把人物的头部抠出来,…

zTree异步加载展开第一级节点的实

zTree异步加载展开第一级节点的实

异步加载,方法,节点,电脑软件,zTree,在 setting 中的 callback 中加上 onAsyncSuccess:onAsyncSuccess 回调函数 , 然后实现回调函数 var isFirst = true;function onAsyncSuccess(event, treeId) { if (isFirst) { //获得树形图…