jQuery 应用五之瀑布流效果的实现

举报
崔庆才丨静觅 发表于 2021/05/22 00:31:03 2021/05/22
4.9k+ 0 0
【摘要】 综述 这里我们来利用 jQuery 实现瀑布流效果。 在线演示 我们首先来在线演示一下效果,然后我们说一下是怎样的实现,点开链接进行预览吧 在线预览 代码分析 首先我们在页面中加入了一些图片元素,都加到 id 为 container 的元素中,每一张图片都在一个 class 为 box 的容器里,然后里面是一张图片。 1234567 <div id="conta...

综述

这里我们来利用 jQuery 实现瀑布流效果。

在线演示

我们首先来在线演示一下效果,然后我们说一下是怎样的实现,点开链接进行预览吧 在线预览

代码分析

首先我们在页面中加入了一些图片元素,都加到 id 为 container 的元素中,每一张图片都在一个 class 为 box 的容器里,然后里面是一张图片。

1
2
3
4
5
6
7
<div id="container">
 <div class="box">
 <div class="content">
 <img src="img/1.jpg">
 </div>
 </div>
</div>

在 JS 中,我们遍历了每一个 box,实现 box 的位置为上一行高度最小的 box 的位置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function imgLocation(){
 var box = $(".box");
 var boxWidth = box.eq(0).width();
 var num = Math.floor($(window).width()/boxWidth);
 var boxArr=[];
 box.each(function(index,value){
 var boxHeight = box.eq(index).height();
 if(index<num){
 boxArr[index]= boxHeight;
 }else{
 var minboxHeight = Math.min.apply(null,boxArr);
 var minboxIndex = $.inArray(minboxHeight,boxArr);
 $(value).css({
 "position":"absolute",
 "top":minboxHeight,
 "left":box.eq(minboxIndex).position().left
 });
 boxArr[minboxIndex]+=box.eq(index).height();
 }
 });
}

最后实现了滚动条滑动时的动态加载

1
2
3
4
5
6
7
function scrollside(){
 var box = $(".box");
 var lastboxHeight = box.last().get(0).offsetTop+Math.floor(box.last().height()/2);
 var documentHeight = $(document).width();
 var scrollHeight = $(window).scrollTop();
 return (lastboxHeight<scrollHeight+documentHeight)?true:false;
}

调用如下

1
2
3
4
5
6
7
8
9
10
window.onscroll = function(){
 if(scrollside()){
 $.each(dataImg.data,function(index,value){
 var box = $("<div>").addClass("box").appendTo($("#container"));
 var content = $("<div>").addClass("content").appendTo(box);
 $("<img>").attr("src","./img/"+$(value).attr("src")).appendTo(content);
 });
 imgLocation();
 }
 };

通过上述简单的设置我们就实现了瀑布流的效果。

源码下载

源码下载

综述

以上便是瀑布流效果的实现,希望对大家有一定帮助!

文章来源: cuiqingcai.com,作者:崔庆才,版权归原作者所有,如需转载,请联系作者。

原文链接:cuiqingcai.com/1680.html

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。