jquery代码实现简单的随机图片瀑布流效果
更新时间:2024-02-09 23:22:01 阅读量: 经典范文大全 文档下载
篇一:打造漂亮的图片列表瀑布流
前言
发展至今已经有 5 个年头,目前论坛注册的QQ会员 5000 多人,捐赠用户 500 多人(捐赠用户转化率达到10%以上,在国内开源领域相信这是一个梦幻数字!也足以证明FineUI旺盛的生命力!)。在这 5 年七年,FineUI总共发布了 100 多个版本!也积攒了大量的典型案例。
然而一直以来,FineUI的典型案例都是在论坛上以帖子的形式进行展示,没有一个集中展示的地方。今天我们就使用前段时间比较流行的瀑布流来解决FineUI典型案例的展示问题。最终的显示效果如下图所示。
五大插件简介
为了制作FineUI的《典型案例》页面,我们综合运用了Bootstrap+jQuery+Masoy+imagesLoaded+Lightbox五大插件,下面先对这 5 个插件进行简单的介绍。
1. Bootstrap:强大的CSS框架,由Twitter的开发工程师推出,不仅仅是960布局,而且包含很多很多拿来就用的漂亮样式。从Bootstrap推出第一个版本作者就开始使用,http://t
2. jQuery:JavaScript框架,业界事实的标准。
3. Masoy:制作瀑布流布局的JavaScript库。
4. imagesLoad:监测图片是否加载完毕的JavaScript库。
5. Lightbox:以弹框形式集中展示图片的JavaScript库。
用Bootstrap打底
首先为每个案例准备1-2张截图、案例名称以及案例作者,并创建简单的HTML布局如下: <div id="masoy" class="container-fluid">
<div class="thumbnail">
<div class="imgs">
<img src="./images/2426.png" />
</div>
<div class="caption">
<div class="title">简单OA管理系统</div>
<div class="content">
</div>
<div class="author">
by <a target="_blank" href="http://fineui.com/bbs/home.php?mod=space&uid=2426">小小生</a>
</div>
</div>
</div>
</div>
为HTML元素定义简单的CSS样式:
<style>
#masoy
{
padding: 0;
min-height: 450px;
margin: 0 auto;
}
#masoy .thumbnail
{
width: 330px;
margin: 20px;
padding: 0;
border-width: 1px;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);}
#masoy .thumbnail .imgs
{
padding: 10px;
}
#masoy .thumbnail .imgs img
{
margin-bottom: 5px;
}
#masoy .thumbnail .caption
{
background-color: #fff;
padding-top: 0;
font-size: 13px;
}
#masoy .thumbnail .caption .title
{
font-size: 13px;
font-weight: bold;
margin: 5px 0;
text-align: left;
}
#masoy .thumbnail .caption .author
{
font-size: 11px;
text-align: right;
}
</style>
此时的页面看起来如下图所示(源代码在 index_1.html 中,文章最后会提供下载地址)。
用Masoy+imagesLoaded创建瀑布流
由于列表中包含图片,我们需要所有图片加载完毕后再调用Masoy的瀑布流布局,从而方式列表中的元素重叠在一起。为上述页面添加如下简单的JavaScript代码。
<script>
$(function() {
var masoyNode = $('#masoy');
masoyNode.imagesLoaded(function(){
masoyNode.masoy({
itemSelector: '.thumbnail',
isFitWidth: true
});
});
});
</script>
此时页面显示效果如下图所示(源代码在 index_2.html 中,文章最后会提供下载地址)。
手工创建随机序列和延迟加载效果
篇二:Jquery瀑布流布局
<!doctype html> <html> <head>
<meta charset="utf-8">
<title>Jquery瀑布流布局(每行代码都有详细注释)-作者:刘晓帆</title>
<style type="text/css">body, ul, li, h3 { margin: 0; padding: 0; list-style: none; font: bold 12px "微软雅黑"; }
/*瀑布流布局样式*/#lxf-box { position: relative; }
#lxf-box li { position: absolute; background: #fff; border: solid 1px #ccc; text-align: center; padding: 10px; left: 0px; top: 0; } h3 { padding-top: 8px; }
img { width: 200px; height: auto; display: block; border: 0 }
/*css3动画*/li { -webkit-transition: all .7s ease-out .1s; -moz-transition: all .7s ease-out; -o-transition: all .7s ease-out .1s; transition: all .7s ease-out .1s } </style> <script </head> <body>
<ul id="lxf-box"><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li>
href="/"><img
src="/demo/waterfall/rSmEiZGlAvvuZ.jpg"></a>
href="/"><img
src="/demo/waterfall/rabGVkIGq.jpg"></a>
href="/"><img
src="/demo/waterfall/WbWXwqpcxqcued.jpg"></a>
href="/"><img
src="/demo/waterfall/msbvKWyQQzZuZy.jpg"></a>
href="/"><img
src="/demo/waterfall/OLqypfV.jpg"></a>
src="http://liuxiaofan.com/demo/js/jquery-1.6.4.min.js"
type="text/javascript"></script>
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li>
src="/demo/waterfall/YewRtz.jpg"></a>
href="/"><img
src="/demo/waterfall/STVDndiZsIduZyLv.jpg"></a>
href="/"><img
src="/demo/waterfall/mWFuVrzCzpPdzdje.jpg"></a>
href="/"><img
src="/demo/waterfall/MsZvAyOFukxdzdjefXwi.jpg"></a>
href="/"><img
src="/demo/waterfall/OEycuedk.jpg"></a>
href="/"><img
src="/demo/waterfall/YwabRquVKrxd.jpg"></a>
href="/"><img
src="/demo/waterfall/+nwbuJpc.jpg"></a>
href="/"><img
src="/demo/waterfall/qymffF.jpg"></a>
href="/"><img
src="/demo/waterfall/DvKZdxCjtfqMv.jpg"></a>
href="/"><img
src="/demo/waterfall/SOmyOQZtlUfdzdjefXwi.jpg"></a>
href="/"><img
src="/demo/waterfall/REsUNXUvAkrdzdj.jpg"></a>
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li><li><a
<h3>图片标题</h3></li>
src="/demo/waterfall/DQJwrFnDpgtdz.jpg"></a>
href="/"><img
src="/demo/waterfall/eJupzWlGPxz.jpg"></a>
href="/"><img
src="/demo/waterfall/IWpjipjp.jpg"></a>
href="/"><img
src="/demo/waterfall/OXsDgKacJeTdzdjefXwi.jpg"></a>
href="/"><img
src="/demo/waterfall/QPIzxiMkmlHdzdjefX.jpg"></a>
href="/"><img
src="/demo/waterfall/mrTNaJTaQyluZyLvvnWS.jpg"></a>
href="/"><img
src="/demo/waterfall/mqXLNuWiPrbdz.jpg"></a>
href="/"><img
src="/demo/waterfall/MiEJRJdimxPdzdjefXw.jpg"></a>
href="/"><img
src="/demo/waterfall/CczowVxqM.jpg"></a>
href="/"><img
src="/demo/waterfall/rabGVkIGq.jpg"></a>
href="/"><img
src="/demo/waterfall/zwPqjasxHYvdz.jpg"></a>
<script>
/*原理:1.把所有的li的高度值放到数组里面2.第一行的top都为0
3.计算高度值最小的值是哪个li4.把接下来的li放到那个li的下面 作者:刘晓帆
博客地址:[url]http://liuxiaofan.com[/url] 编写时间:2012年6月9日 */
var margin = 10;//这里设置间距 var li=$("li");//这里是区块名称
var li_W = li[0].offsetWidth+margin;//取区块的实际宽度(包含间距,这里使用源生的offsetWidth函数,不适用jQuery的width()函数是因为它不能取得实际宽度,例如元素内有pandding就不行了)
function liuxiaofan(){//定义成函数便于调用 var h=[];//记录区块高度的数组
var n = document.documentElement.offsetWidth/li_W|0;//窗口的宽度除以区块宽度就是一行能放几个区块
for(var i = 0;i < li.length;i++) {//有多少个li就循环多少次li_H = li[i].offsetHeight;//获取每个li的高度if(i < n) {//n是一行最多的li,所以小于n就是第一行了 h[i]=li_H;//把每个li放到数组里面
li.eq(i).css("top",0);//第一行的Li的top值为0
li.eq(i).css("left",i * li_W);//第i个li的左坐标就是i*li的宽度 }else{
min_H =Math.min.apply(null,h) ;//取得数组中的最小值,区块中高度值最小的那个
minKey = getarraykey(h, min_H);//最小的值对应的指针 h[minKey] += li_H+margin ;//加上新高度后更新高度值
li.eq(i).css("top",min_H+margin);//先得到高度最小的Li,然后把接下来的li放到它的下面
li.eq(i).css("left",minKey * li_W); //第i个li的左坐标就是i*li的宽度}
$("h3").eq(i).text("编号:"+i+",高度:"+li_H);//把区块的序号和它的高度值写入对应的区块H3标题里面 } }
/* 使用for in运算返回数组中某一值的对应项数(比如算出最小的高度值是数组里面的第几个) */function getarraykey(s, v) {for(k in s) {if(s[k] == v) {return k;}}}
/*这里一定要用onload,因为图片不加载完就不知道高度值*/window.onload = function() {liuxiaofan();};
/*浏览器窗口改变时也运行函数
*/window.oesize = function() {liuxiaofan();}; </script> </body> </html>
篇三:jquery瀑布流布局(masoy.js)===
引用插件实例:
<style type="text/css">
img { border:none; }
.wrapper { width:1000px; margin:0 auto; }
.wrapper
h3{color:#3366cc;font-size:16px;height:35px;line-height:1.9;text-align:center;border-bottom:1px solid #E5E5E5;margin:0 0 10px 0;}
#con1_1 { position:relative; }
#con1_1 .product_list { position:absolute; left:0px; top:0px; padding:10px; background:#eee; margin:5px;}
.product_list img { width:200px;}
.product_list p { padding:5px 0px; font-size:12px; text-align:center; color:#333; white-space:normal; width:200px;}
</style>
<div class="wrapper">
<h3>瀑布流实例</h3>
<div id="con1_1">
<div class="product_list"> <a href="#"><img
src="images/img6.jpg"></a><p>【乖怪蜜桃.搭搭配】~貂绒嫁到~今年好流行的材质呢~跟风购入~颜色质感都好喜欢de 说呢~重点还很保暖</p></div> <div class="product_list"> <a href="#"><img
src="images/img4.jpg"></a><p>夏天花裤子是一定要有的哦!</p> </div> <div class="product_list"> <a href="#"><img
src="images/img1.jpg"></a><p>薄荷绿的西裤子 怎么穿怎么好看</p></div> <div class="product_list"> <a href="#"><img
src="images/img2.jpg"></a><p>超长款的雪纺开衫,很仙很气场呢,敞开穿比较大气,扣起来系个腰带,很淑女哈</p></div>
<div class="product_list"> <a href="#"><img
src="images/img3.jpg"></a><p>二零一二,十月。去年夏季最喜欢的雏菊小衬衫+牛仔长裙 还有最爱的复古手工包</p></div>
<div class="product_list"> <a href="#"><img
src="images/img5.jpg"></a><p>还有4年就奔3了,现在就拼命地装嫩吧,不然真到30大几岁还这副模样真真是恶心透了 啊哈哈~~ 装嫩必备蛋糕裙!</p></div>
<div class="product_list"> <a href="#"><img
src="images/img8.jpg"></a><p>依旧牛仔上衣和室内照。不要以为主角是衣服,其实是鞋子。</p></div>
<div class="product_list"> <a href="#"><img
src="images/img7.jpg"></a><p>很简单的大学生而已</p></div>
</div>
</div>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript"
src="js/jquery.masoy.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var $container = $('#con1_1');
$container.imagesLoaded(function(){
$container.masoy({
itemSelector: '.product_list',
columnWidth: 5 //每两列之间的间隙为5像素
});
});
});
</script>
如果不想使用插件,也可以把上面的js部分换为:
<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript">
/*
原理:1.把所有的li的高度值放到数组里面
2.第一行的top都为0
3.计算高度值最小的值是哪个li
4.把接下来的li放到那个li的下面
*/
var margin = 10;//设置间距
var li=$(".product_list");//区块名称
var li_W = li[0].offsetWidth+margin;//取区块的实际宽度
function liuxiaofan(){
var h=[];//记录区块高度的数组
var n = 960/li_W|0;
for(var i = 0;i < li.length;i++) {
li_H = li[i].offsetHeight;//获取每个li的高度
if(i < n) {//n是一行最多的li,所以小于n就是第一行了 max_H =Math.max.apply(null,h);
h[i]=li_H;//把每个li放到数组里面
li.eq(i).css("top",0);//第一行的Li的top值为0
li.eq(i).css("left",i * li_W);//第i个li的左坐标就是i*li的宽度
}
else{
min_H =Math.min.apply(null,h) ;//取得数组中的最小值,区块中高度值最小的那个
minKey = getarraykey(h, min_H);//最小的值对应的指针 h[minKey] += li_H+margin ;//加上新高度后更新高度值
li.eq(i).css("top",min_H+margin);//先得到高度最小的Li,然后把接下来的li放到它的下面
li.eq(i).css("left",minKey * li_W); //第i个li的左坐标就是i*li的宽度
}
// $("p").eq(i).text("高度:"+li_H);//把区块高度值写入对应的区块H2标题里面
}
max =Math.max.apply(null,h) ;
$("#con1_1").css("height",max);
}
/* 使用for in运算返回数组中某一值的对应项数(比如算出最小的高度值是数组里面的第几个) */
function getarraykey(s, v) {for(k in s) {if(s[k] == v) {return k;}}} /*这里一定要用onload,因为图片不加载完就不知道高度值*/
window.onload = function() {liuxiaofan();}; window.oesize = function() {liuxiaofan();};
//鼠标在上样式
$(function(){
$(".product_list").hover(function(){ $(this).css("background-color","#ddd"); },function() {
$(this).css("background-color","#eee"); });
});
</script>
猛击这里下载实例
正在阅读:
前列腺增生症的发病率 docx03-10
工程项目施工监理研究06-15
ASTM SA 751-201004-17
2014年华东师范大学金融硕士考研笔记考试大纲历年真题07-27
外阴炎病人的护理01-31
嘉兴学院商学院2012届毕业论文(设计)和毕业实习工作安排05-08
进口过氧化氢H2O2传感器05-18
- 关于实施新冠肺炎疫情精准防控的指导意见
- 学生党员在疫情期间做出的思想汇报
- 《深度工作》读书感悟
- 抗"疫"期间思想汇报5篇
- 学校承诺书|面对疫情,我们承诺
- 公司战“疫”感悟_我想和你们在一起
- 国培送教下乡培训感悟总结
- 只盼“樱花”早盛开,烂漫如当年
- 疫情防控工作感悟
- 关于疫情的几点思考及感悟
- 读蒋廷黻《中国近代史》有感
- 党小组长培训资料汇
- 2019年度副镇长述职述德述廉报告
- 疫情期间教师直播感悟
- 新型冠状病毒肺炎疫情防控心得体会4篇
- 在书记抓党建工作述职评议大会上的讲话
- 《老师请回答》观后感
- 2020年党组织书记党建工作考核办法
- 在疫情防控暨企业复工复产工作会议上的讲话
- 企业疫期复工管理方式与措施
- 瀑布
- 随机
- 效果
- 代码
- 实现
- 简单
- jquery
- 图片