JavaScript实现瀑布流布局与无限滚动加载

作者:纸飞机

时间:2026-10-21

浏览:384

本文详解JavaScript如何实现瀑布流布局与无限滚动加载。通过动态计算列高并插入元素,实现参差不齐的多栏展示。结合滚动事件监听与高度判断,自动在底部加载新数据,优化图片浏览体验,同时分析该布局在电商等场景下的优缺点及注意事项。

文章目录

瀑布流布局概述

一、瀑布流布局概述

瀑布流是一种流行的网页页面布局方式,其视觉特征为多栏高度不一的参差不齐排列。当用户向下滚动页面时,系统会持续加载新的数据块并附加到当前内容的尾部,实现无缝浏览。

该布局模式最早由Pinterest网站采用,随后在国内逐渐流行。以百度图片为例,早期版本需要用户逐页点击查看更多图片,而采用瀑布流布局后,用户无需翻页即可浏览更多图片,查找体验更为便捷。

瀑布流布局概述

瀑布流布局的优缺点分析

二、瀑布流布局的优缺点分析

优点:

1. 节省页面空间,无需传统的导航栏和页码按钮。

2. 提升用户体验,将用户注意力集中在内容浏览上,而非翻页操作上。

缺点:

1. 适用场景有限:

瀑布流布局仅适用于特定类型的内容和产品。

例如在淘宝购物时,用户需要记住特定页码的商品位置以便返回购买,此时传统的分页按钮更有助于记忆,而瀑布流反而可能增加操作难度。

2. 页脚难以触及:

若采用无限滚动加载模式,用户将永远无法看到页脚。当用户滚动至底部时,新内容自动加载,导致页脚链接或登录入口始终无法点击,这会极大降低用户体验,甚至导致用户关闭页面。

3. 页面数量影响:

虽然自动加载对用户浏览方便,但减少了传统意义上的页面数量,可能导致网站展示的相关信息减少,最显著的影响是广告展示量下降。

瀑布流实现原理与代码

三、瀑布流实现原理与代码

瀑布流的具体形态如下,我们将通过代码实现一个简单的瀑布流布局。首先编写基础样式和HTML结构,为节省篇幅,此处省略缩进格式。

CSS样式:


*{margin: 0;padding: 0;} 
#wrap{width: 840px;margin: 0 auto;border: 1px solid black;overflow: hidden;}
#wrap ul{width: 200px;margin: 0 5px;float: left;}
#wrap ul li{width: 200px;list-style: none;margin: 10px 0;background: palegreen;font-size: 50px;color: white;text-align: center;}

HTML结构:


<div id="wrap">
 <ul></ul>
 <ul></ul>
 <ul></ul>
 <ul></ul>
</div>

以下是核心JavaScript代码:


var wrap=document.querySelector("#wrap");
var ul=document.querySelectorAll("#wrap ul");//声明元素块
//先创建一个随机数的函数
function ranDom(min,max){
 return Math.random()*(max-min+1)+min;
}
//再创建一个添加li的函数
function createLi(num){
 for(var i=0;i<num;i++){
  var newLi=document.createElement("li");//创建li
  newLi.style.height=ranDom(100,400)+"px";//使用随机数函数创建高度不同的li
  var arrul=[];
//将ul的高度进行储存和比较
  for(var j=0;j<ul.length;j++){
   arrul.push(ul[j].offsetHeight);//储存ul的高度
  }
  var minHeight=arrul[0];
  var minIndex=0;
  for(var k=0;k<arrul.length;k++){
   if(minHeight>arrul[k]){
    minHeight=arrul[k];//比较出高度最短的ul然后赋值给minHeight
    minIndex=k;//把高度最短的ul所在下标赋值给minIndex
   }
  }
 ul[minIndex].appendChild(newLi);//向高度最短的ul里添加li
 } 
}
createLi(15);//执行函数,添加15个li,
//创建一个滚动事件
window.onscroll=function(){ 
// html总高度-可视化窗口高度=body的滚动高度
//兼容写法 
 var scrollTop=document.body.scrollTop; 
 var clientHeight=document.documentElement.clientHeight||document.body.clientHeight||window.innerHeight; 
 if(document.documentElement.offsetHeight-clientHeight<=scrollTop){ 
  createLi(15); 
 } 
}
//当滚动快要到达底部,还没有到达的时候,再去执行函数,创建新的li 

通过上述代码,我们实现了无限滚动的瀑布流布局,用户始终无法看到页脚。

总结

四、总结

瀑布流的核心在于页面容器内多个高度不固定的子容器,通过不断添加内容形成参差不齐的排列。鼠标滚动时,系统自动在容器尾部加载数据,并填充至高度最短的空缺位置,形成循环。

瀑布流对图片展示高效且具吸引力,用户可通过快速扫视在短时间内获取大量信息。自动加载机制避免了手动点击翻页的操作,提升了浏览效率。

瀑布流的主要特征是错落有致,定宽不定高的设计使其区别于传统矩阵式图片布局。通过巧妙利用视觉层级和视线的自由流动,缓解了视觉疲劳,给人以不拘一格的感觉。

本文内容希望对您的学习有所帮助,欢迎支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章