简单版的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小时内与您取得联系。