瀑布流(jquery)
2015-08-25 14:01
721 查看
注:这是本人面试的时候的一个小作业,加上优化和调bug用了2个白天做完的,因为之前看过瀑布流的实现方式,所以还算简单,但是当时很久没有动手比较手生时间用的比较久了,现在把代码贴出来,供大家吐槽
网站截图:
![](https://img-blog.csdn.net/20150825140754268?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
html代码:
css代码:
js代码:
data.json:(下边的图片链接是当时公司给的)
[{"timestamp":1373746212000,"title":"佐罗理想","sale":6,"price":91,"img":{"width":250,"height":495,"img":"http://placehold.it/250x495"}},{"timestamp":1399494398000,"title":"Apple美好","sale":8,"price":5,"img":{"width":255,"height":217,"img":"http://placehold.it/255x217"}},{"timestamp":1353872320000,"title":"理想理想","sale":7,"price":22,"img":{"width":244,"height":261,"img":"http://placehold.it/244x261"}},{"timestamp":1334625124000,"title":"图片图片","sale":5,"price":35,"img":{"width":254,"height":324,"img":"http://placehold.it/254x324"}},{"timestamp":1360987062000,"title":"Apple人生","sale":2,"price":44,"img":{"width":260,"height":543,"img":"http://placehold.it/260x543"}},{"timestamp":null,"title":"Apple梦","sale":5,"price":50,"img":{"width":250,"height":525,"img":"http://placehold.it/250x525"}},{"timestamp":1363562713000,"title":"梦热血","sale":6,"price":20,"img":{"width":253,"height":236,"img":"http://placehold.it/253x236"}},{"timestamp":1375829951000,"title":"海贼王热血","sale":3,"price":50,"img":{"width":260,"height":209,"img":"http://placehold.it/260x209"}},{"timestamp":1328396654000,"title":"热血图片","sale":5,"price":36,"img":{"width":253,"height":506,"img":"http://placehold.it/253x506"}},{"timestamp":1375724797000,"title":"梦理想","sale":7,"price":94,"img":{"width":250,"height":364,"img":"http://placehold.it/250x364"}}]
网站截图:
html代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>名片设计</title> <link rel="stylesheet" type="text/css" href="css/css.css"> <script type="text/javascript" src="js/jquery-2.1.4.min.js"></script> <script type="text/javascript" src="js/waterfall.js"></script> </head> <body> <header class="header"> <nav class="nav"> <a href="http://www.baidu.com/" class="logo"> <img src="images/logo.png" alt="这是网页logo"></a> <ul> <li id="li"> <a href="javascript:void(0)">首页</a> <span class="icon"></span> </li> <li> <a href="javascript:void(0)">视频素材</a> <span></span> </li> <li> <a href="javascript:void(0)">PPT模板</a> <span></span> </li> <li> <a href="javascript:void(0)">淘宝素材</a> <span></span> </li> <li> <a href="javascript:void(0)">装修设计</a> <span></span> </li> <li> <a href="javascript:void(0)">标志LOGO</a> <span></span> </li> <li> <a href="javascript:void(0)">更多作品</a> <span></span> </li> </ul> <form action=""> <input type="seach" name="seach" placeholder="你能找到任何你想要" /> </form> </nav> </header> <!-- 他们正在购买 --> <section id="center"> <section class="asides"> <aside class="otherPurchase more"> <h2>他们正在购买</h2> <section> <h3> <span class="aname">ZC软件</span> <span></span> 刚购买了 <span></span> <a href="" class="productName">国际简约大气名片</a> </h3> <a href="javascript:void(0)" class="productImg"> <img src="images/image1.png" alt=""></a> <p> 售价: <span class="price">¥8.00</span> 元 </p> <p> 购买: <span class="sale">9</span> 次 </p> </section> <section> <h3> <span class="aname">pomoa</span> <span class="txt">刚购买了</span> <a href="" class="productName">高端名片设计</a> </h3> <a href="javascript:void(0)" class="productImg"> <img src="images/image1.png" alt=""></a> <p> 售价: <span class="price">¥8.00</span> 元 </p> <p> 购买: <span class="sale">9</span> 次 </p> </section> <section> <h3> <span class="aname">joyday366</span> <span class="txt">刚购买了</span> <a href="" class="productName">高端名片设计</a> </h3> <a href="javascript:void(0)" class="productImg"> <img src="images/image2.png" alt=""></a> <p> 售价: <span class="price">¥8.00</span> 元 </p> <p> 购买: <span class="sale">9</span> 次 </p> </section> </aside> <!-- 他们正在上传 --> <aside class="otherUpload more"> <h2>他们正在上传</h2> <section> <h3> <span class="aname">zyq</span> <span class="txt">刚上传了</span> <a href="" class="productName">绿色玉器bann高端大气</a> </h3> <a href="javascript:void(0)" class="productImg"> <img src="images/image3.png" alt=""></a> <p> <a href="javascript:void(0)" class="productName">绿色玉器bann高端大气</a> </p> <p> 售价: <span class="price">¥8.00</span> 元 </p> </section> <section> <h3> <span class="aname">ricard</span> <span class="txt">刚上传了</span> <a href="" class="productName">商业公司名片</a> </h3> <a href="javascript:void(0)" class="productImg"> <img src="images/image4.png" alt=""></a> <p> <a href="javascript:void(0)" class="productName">商业公司名片</a> </p> <p> 售价: <span class="price">¥8.00</span> 元 </p> </section> <section> <h3> <span class="aname">杜莎夫人图片美化工作室</span> <span class="txt">刚上传了</span> <a href="javascript:void(0)" class="productName">时尚粉红花朵电视墙</a> </h3> <a href="javascript:void(0)" class="productImg"> <img src="images/image5.png" alt=""></a> <p> <a href="javascript:void(0)" class="productName">时尚粉红花朵电视墙</a> </p> <p> 售价: <span class="price">¥8.00</span> 元 </p> </section> </aside> </section> <!-- 75%以上的用户购买了这些 --> <article class="container mostPurchase waterfall"> <h2>75%以上的用户购买了这些</h2> <section class="box"> <a href="javascript:void(0)" class="product"> <img src="images/0.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section class="box"> <a href="javascript:void(0)" class="product"> <img src="images/1.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section class="box"> <a href="javascript:void(0)" class="product"> <img src="images/2.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section class="box"> <a href="javascript:void(0)" class="product"> <img src="images/3.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section class="box"> <a href="" class="product"> <img src="images/4.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section class="box"> <a href="javascript:void(0)" class="product"> <img src="images/5.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section class="box"> <a href="javascript:void(0)" class="product"> <img src="images/6.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section class="box"> <a href="javascript:void(0)" class="product"> <img src="images/7.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section class="box"> <a href="" class="product"> <img src="images/8.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section class="box"> <a href="javascript:void(0)" class="product"> <img src="images/9.jpg" /> <span class="hover productName">时尚粉红花朵电视墙</span> </a> <p> <span class="price">¥8.00元</span> <span class="sale">已出售9次</span> </p> </section > <section id="loading">正在加载……</section> </article> </section> <a href="javascript:void(0)" class="backTop" alt="回到顶部按钮" title="回到顶部"> <span class="btn"></span> </a> </body> </html>
css代码:
*{ margin:0; padding:0; } html{ width:100%; height:100%; } body{ font:bold 16px Microsoft YaHei,Arial, Helvetica, sans-serif; width:100%; height:100%; } a{ color:#000; text-decoration:none; } /* header */ .header{ width:100%; height:60px; line-height: 60px; position: fixed; top:0; left:0; background-color:#da4a4a; z-index: 5; } .nav{ display: block; width: 1120px; height: 60px; margin: 0 auto; } .nav a.logo{ float: left; line-height: 10px; margin-top: 9px; } .nav ul{ float: left; margin-left: 70px; list-style:none; } .nav ul li{ float: left; } li a{ display: block; color:#fff; padding: 0 15px; } li span.icon{ width: 0; height: 0; border-top: none; display: block; border-left: 10px solid transparent; border-right: 10px solid transparent; border-bottom: 10px solid #fff; margin: 0 auto; margin-top: -10px; } .nav input{ float:left; margin-left: 10px; margin-top: 15px; width: 220px; height: 25px; border: none; } /* 清除浮动 */ .nav::after, section::after{ content: "."; display: block; height: 0; visibility: hidden; clear: both; } /* header结束 */ /* aside 侧边栏 正在购买 */ #center{ width: 1150px; margin:100px auto; } aside.otherPurchase, aside.otherUpload{ padding: 15px; border: 1px solid #ddd; } section.asides{ float: left; width: 220px; } aside.more h2{ font-size: 16px; color:#393a3c; border-left: 3px solid #da4a4a; padding-left: 15px; margin-left:-15px; } aside.more section{ margin:20px 0; padding: 1px; } aside.more section span{ padding-right: 5px; } aside.more h3{ font-size: 13px; color: #aaa; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } h3 .productName{ color: #555; } aside section img{ float: left; margin-right: 10px; } aside section p{ /* margin-top: 10px; */ font-size: 14px; color: #333; } aside section a + p{ margin-top: 10px; } p .price, p .sale{ color:#da4a4a; } p a.productName{ display: block; font-size: 15px; color:#077ec2; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } aside section span.txt{ padding:0 5px; } /* 右边瀑布流 */ .container{ position: relative; width: 850px; margin-left: 260px; } .container h2{ color:#333; font-weight: normal; margin: 5px auto 5px 0; } .box{ display: block; padding: 15px 15px 0 15px; float: left; margin: 0px 10px 10px 0; width: 240px; border: 1px solid #ccc; } a.product span.productName{ display: block; text-align: center; width: 240px; height: 30px; line-height: 30px; color: #fff; background-color: rgba(0,0,0,0.4); position: relative; margin-top: -35px; } a.product span.productName:hover{ color: #077ec2; } .box img{ width: 240px; height: auto; } .box p{ height: 40px; line-height: 40px; background: #eee; margin: 10px -15px 0 -15px; padding: 0 15px; } .box p span{ color: #333; } .box p span.price{ float: left; } .box p span.sale{ float: right; } .container::after{ content: "."; display: block; height: 0; visibility: hidden; clear: both; } #loading { display:none; line-height: 30px; background: rgba(0,0,0,0.2); color:#fff; text-align: center; height: 30px; width: 100%; position:fixed; bottom:0; } a.backTop{ width: 50px; height: 50px; display: none; position: fixed; right: 0; bottom: 10%; background-color: rgba(0,0,0,0.2); } span.btn::before{ content: ""; width: 0; height: 0; border-top: none; display: block; margin: 0 auto; padding-top: 5px; border-left: 18px solid transparent; border-right: 18px solid transparent; border-bottom: 18px solid #999; } span.btn::after{ content: ""; width: 15px; height: 20px; display: block; background-color: #999; margin: 0 auto; }
js代码:
$(function() { var i = 1; /*回到顶部用的变量*/ var $bTop = $('.backTop'); var timer = null; var isTop = true; $(window).on("load", function() { waterfall(); }); $(window).on("resize", function() { waterfall(); }); $('li a').click(function() { var $span = $(this).next(); $('li span').removeClass('icon'); $span.addClass('icon'); }); function waterfall() { var cols = 3; var $boxs = $('.box'); var hArr = []; $boxs.each(function(i, el) { if (i < cols) { hArr.push($(el).outerHeight(true)); } else { var minBox = Math.min.apply(null, hArr); var minIndex = hArr.indexOf(minBox); // 计算及定义图片出现的位置 /* 35是h1的高度*/ $(el).css({ 'position': 'absolute', 'top': minBox + 35, 'left': $boxs.eq(minIndex).position().left, }); // 改变数组值 hArr[minIndex] += $(el).outerHeight(true); } }); } function getMore() { var html = ""; $('#loading').show(); $.getJSON("http://localhost/zhubajie_waterfall/data/data.json", function(data) { $.each(data, function(i, val) { html += '<section class="box"><a href="" class="product"><img src="' + val.img.img + '" /><span class="hover productName">' + val.title + '</span></a><p><span class="price">¥' + val.price + '元</span><span class="sale">已出售' + val.sale + '次</span></p></section >'; }); $('#loading').hide(); $('.container').append(html); waterfall(); i = 1; }); } $(window).bind("scroll", function() { if ($(document).scrollTop() + $(window).height() > $(document).height() - 10 && i == 1) { i = 0; getMore(); } /*回到顶部 */ //获取界面可视区域的高度 var clientH = $(window).height(); //滚动条滚动时触发,用户是否滚动 var osTop = $(document).scrollTop(); //获取滚动条距离顶部的高度 //隐藏显示按钮 if (osTop >= clientH) { $bTop.css("display", "block"); } else { $bTop.css("display", "none"); } if (!isTop) { clearInterval(timer); } isTop = false; }); $bTop.click(function() { $.extend({ backTopScroll: function() { var osTop = $(document).scrollTop(); //获取滚动条距离顶部的高度 var ispeed = Math.floor(-osTop / 10); $(window).scrollTop(osTop + ispeed); $(document).scrollTop(osTop + ispeed); isTop = true; if (osTop == 0) { clearInterval(timer); } } }); timer = setInterval("$.backTopScroll()", 30); }); });
data.json:(下边的图片链接是当时公司给的)
[{"timestamp":1373746212000,"title":"佐罗理想","sale":6,"price":91,"img":{"width":250,"height":495,"img":"http://placehold.it/250x495"}},{"timestamp":1399494398000,"title":"Apple美好","sale":8,"price":5,"img":{"width":255,"height":217,"img":"http://placehold.it/255x217"}},{"timestamp":1353872320000,"title":"理想理想","sale":7,"price":22,"img":{"width":244,"height":261,"img":"http://placehold.it/244x261"}},{"timestamp":1334625124000,"title":"图片图片","sale":5,"price":35,"img":{"width":254,"height":324,"img":"http://placehold.it/254x324"}},{"timestamp":1360987062000,"title":"Apple人生","sale":2,"price":44,"img":{"width":260,"height":543,"img":"http://placehold.it/260x543"}},{"timestamp":null,"title":"Apple梦","sale":5,"price":50,"img":{"width":250,"height":525,"img":"http://placehold.it/250x525"}},{"timestamp":1363562713000,"title":"梦热血","sale":6,"price":20,"img":{"width":253,"height":236,"img":"http://placehold.it/253x236"}},{"timestamp":1375829951000,"title":"海贼王热血","sale":3,"price":50,"img":{"width":260,"height":209,"img":"http://placehold.it/260x209"}},{"timestamp":1328396654000,"title":"热血图片","sale":5,"price":36,"img":{"width":253,"height":506,"img":"http://placehold.it/253x506"}},{"timestamp":1375724797000,"title":"梦理想","sale":7,"price":94,"img":{"width":250,"height":364,"img":"http://placehold.it/250x364"}}]
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- CSS3属性教程与案例分享
- CSS3属性教程与案例分享
- CSS3的calc()使用
- 使用CSS3的appearance属性改变元素的外观
- CSS3美化图片
- CSS3质感分析——表面线性渐变
- 分析选项卡底部内凹圆角制作
- 细说百度图片栏目——图片展示效果
- 8个实用的响应式设计框架
- 20+ Animation Scripts, Libraries and Plugins
- JavaScript演示排序算法
- jQuery Ajax 跨域调用
- 移动端的长按事件
- jquery教程靠边站,一分钱不花让你免费学会jquery
- JQuery+Strusts1.x无刷新登录
- HTML5中在客户端验证文件上传的大小
- 如何使用CSS3画出一个叮当猫
- jQuery菜单插件用法实例