全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

jQuery图片瀑布流的简单实现代码

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

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

已知BUG:

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

1.预备

1.基础html

<div id="main">
  <div class="img-item"><img src="images/img1.png" data-size="398*636" alt=""></div>
  <div class="img-item"><img src="images/img2.png" data-size="560*381" alt=""></div>
  <div class="img-item"><img src="images/img3.png" data-size="338*537" alt=""></div>
  <div class="img-item"><img src="images/img4.png" data-size="599*507" alt=""></div>
  <div class="img-item"><img src="images/img5.png" 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();
 });

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


# jQuery  # 瀑布流  # Jquery瀑布流插件使用介绍  # jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)  # jQuery瀑布流插件Wookmark使用实例  # jQuery Masonry瀑布流插件使用详解  # jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)  # jQuery实现瀑布流布局  # jQuery实现瀑布流布局详解(PC和移动端)  # jQuery.lazyload+masonry改良图片瀑布流代码  # jquery简单瀑布流实现原理及ie8下测试代码  # jquery实现瀑布流效果分享  # 自适应  # 情况下  # 会有  # 放在  # 遍历  # 几次  # 只需要  # 可以使用  # 解决办法  # 先将  # 具体内容  # 大家多多  # 就可以  # 不按  # 下一层  # alt  # data  # png  # size  # main 


相关文章: 专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  制作门户网站的参考文献在哪,小说网站怎么建立?  建站之星如何开启自定义404页面避免用户流失?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  大连网站制作公司哪家好一点,大连买房网站哪个好?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何选择高效可靠的多用户建站源码资源?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  宿州网站制作公司兴策,安徽省低保查询网站?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  建站之星在线版空间:自助建站+智能模板一键生成方案  如何快速查询网址的建站时间与历史轨迹?  如何通过cPanel快速搭建网站?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  linux top下的 minerd 木马清除方法  C#如何在一个XML文件中查找并替换文本内容  公司网站制作价格怎么算,公司办个官网需要多少钱?  制作网站的公司有哪些,做一个公司网站要多少钱?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  历史网站制作软件,华为如何找回被删除的网站?  如何选择适合PHP云建站的开源框架?  电商网站制作公司有哪些,1688网是什么意思?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  建站之星与建站宝盒如何选择最佳方案?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  网站制作软件有哪些,制图软件有哪些?  网站制作免费,什么网站能看正片电影?  自助网站制作软件,个人如何自助建网站?  网站企业制作流程,用什么语言做企业网站比较好?  网站制作壁纸教程视频,电脑壁纸网站?  如何在万网主机上快速搭建网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何基于云服务器快速搭建网站及云盘系统?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何实现建站之星域名转发设置?  中山网站制作网页,中山新生登记系统登记流程?  郑州企业网站制作公司,郑州招聘网站有哪些?  制作企业网站建设方案,怎样建设一个公司网站?  如何自定义建站之星模板颜色并下载新样式?  如何通过主机屋免费建站教程十分钟搭建网站?  如何在阿里云虚拟服务器快速搭建网站?  临沂网站制作企业,临沂第三中学官方网站?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  学校免费自助建站系统:智能生成+拖拽设计+多端适配  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  淘宝制作网站有哪些,淘宝网官网主页?  如何规划企业建站流程的关键步骤?  网站制作需要会哪些技术,建立一个网站要花费多少? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。