基于JavaScript实现无限加载瀑布流


Posted in Javascript onJuly 21, 2017

本文实例为大家分享了JS实现无限加载瀑布流展示的具体代码,供大家参考,具体内容如下

1.在外层的div中,插入4个ul,ul左浮动
2.每次在创建节点之后,插入节点之前,要获取每个ul的高度,找到最小的高度,然后将新创建的li节点插入该ul中
3.当文档的高度 - 文档的可视高度 <= 鼠标的滑动距离时 开始继续创建节点

代码:

<!DOCTYPE html> 
<html> 
 
  <head> 
    <meta charset="UTF-8"> 
    <title>瀑布流效果动态加载</title> 
    <style type="text/css"> 
      * { 
        margin: 0; 
        padding: 0; 
      } 
       
      #content { 
        width: 1000px; 
        border: 3px solid red; 
        margin: 0 auto; 
        overflow: hidden; 
      } 
       
      #content > ul { 
        width: 240px; 
        padding: 4px; 
        border: 1px solid blue; 
        float: left; 
        list-style-type: none; 
      } 
       
      #content > ul > li { 
        background-color: yellow; 
        font-size: 100px; 
        color: white; 
        text-align: center; 
        margin-bottom: 5px; 
      } 
    </style> 
  </head> 
 
  <body> 
    <div id="content"> 
      <ul></ul> 
      <ul></ul> 
      <ul></ul> 
      <ul></ul> 
    </div> 
  </body> 
  <script type="text/javascript"> 
    //随机[m,n]之间的整数 
    function randomNumber(m, n) { 
      return Math.floor(Math.random() * (n - m + 1) + m); 
    } 
    //随机颜色 
    function randomColor() { 
      return "rgb(" + randomNumber(0, 255) + "," + randomNumber(0, 255) + "," + randomNumber(0, 255) + ")"; 
    } 
    //获取当前的scrollTop 
    var scrollTopDistance; 
    //获取所有的ul 
    var uls = document.getElementsByTagName("ul"); 
    var i = 0; 
    var k = i; 
    function waterFall(){ 
      for (i = k;i < k + 4;i++) { 
        //创建li 
        var li = document.createElement("li"); 
        //随机颜色 
        li.style.backgroundColor = randomColor(); 
        //随机高度 
        li.style.height = randomNumber(150, 500) + "px"; 
        //手动转换为字符串 
        li.innerHTML = i + 1 + ""; 
        //插入到对应的ul中 
        //判断哪个ul的高度低,该次创建的li就插入到此ul中 
        var index = 0; //记录下标 
        for (var j = 0; j < uls.length; j++) { 
          if (uls[j].offsetHeight < uls[index].offsetHeight) { 
            index = j; 
          } 
        } 
        //将元素节点插入文档中 
        uls[index].appendChild(li); 
      } 
      k = i; 
      return uls[index].offsetHeight; 
    } 
    waterFall(); 
    var height; 
    //无限加载瀑布流方法,核心思想就是 
    document.onmousewheel = function(){ 
      //文档的高度 - 文档的可视高度 < 鼠标的滑动距离 时开始加载图片 
      height = document.body.clientHeight - document.documentElement.clientHeight; 
      if(height <= document.body.scrollTop){ 
        waterFall(); 
      } 
    } 
  </script> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 鼠标移动显示图片的简单实例
Dec 25 Javascript
javascript 中的 delete及delete运算符
Nov 15 Javascript
JavaScript交换两个变量值的七种解决方案
Dec 01 Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
Jun 01 Javascript
vue-cli+webpack项目 修改项目名称的方法
Feb 28 Javascript
layui radio点击事件实现input显示和隐藏的例子
Sep 02 Javascript
AngularJS动态生成select下拉框的方法实例
Nov 17 Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 Javascript
Vue中keep-alive组件的深入理解
Aug 23 Javascript
js实现抽奖功能
Nov 24 Javascript
原生JS实现自定义滚动条效果
Oct 27 #Javascript
JS HTML图片显示Canvas 压缩功能
Jul 21 #Javascript
JavaScript 用fetch 实现异步下载文件功能
Jul 21 #Javascript
详解vue 模版组件的三种用法
Jul 21 #Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
Jul 21 #Javascript
vue-resource调用promise取数据方式详解
Jul 21 #Javascript
Vue resource中的GET与POST请求的实例代码
Jul 21 #Javascript
You might like
PHP 验证码的实现代码
2011/07/17 PHP
PHP中PDO的错误处理
2011/09/04 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
php获取远程文件内容的函数
2015/11/02 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
使用Python的turtle模块画图的方法
2017/11/15 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
python中如何使用虚拟环境
2020/10/14 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
物业管理员岗位职责范文
2013/11/25 职场文书
中国央视网签名寄语
2014/01/18 职场文书
新三好学生主要事迹
2014/01/23 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
寄语是什么意思
2014/04/10 职场文书
社区文化建设方案
2014/05/02 职场文书
啤酒节策划方案
2014/05/28 职场文书
以权谋私检举信范文
2015/03/02 职场文书
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python