基于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 相关文章推荐
游戏人文件夹程序 ver 3.0
Jul 14 Javascript
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
ajax java 实现自动完成功能
Dec 19 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
Dec 18 Javascript
使用npm发布Node.JS程序包教程
Mar 02 Javascript
javascript正则表达式中分组详解
Jul 17 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
Sep 17 Javascript
js获取时间函数及扩展函数的方法
Oct 30 Javascript
jQuery快速实现商品数量加减的方法
Feb 06 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
Aug 25 Javascript
推荐几个不错的console调试技巧实现
Dec 20 Javascript
JavaScript实现登录窗体
Jun 22 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
详解Window7 下开发php扩展
2015/12/31 PHP
jQuery select控制插件
2009/08/17 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
javascript委托(Delegate)blur和focus用法实例分析
2015/05/26 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
python 随机数生成的代码的详细分析
2011/05/15 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
python统计字符的个数代码实例
2020/02/07 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
python爬虫---requests库的用法详解
2020/09/28 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
路政管理专业推荐信
2013/11/11 职场文书
数控专业大学生的自我鉴定
2013/11/13 职场文书
主要负责人任命书
2014/06/06 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS