基于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 相关文章推荐
javascript网页关键字高亮代码
Jul 30 Javascript
JavaScript 以对象为索引的关联数组
May 19 Javascript
javascript学习笔记(十一) 正则表达式介绍
Jun 20 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
Oct 21 Javascript
JavaScript极简入门教程(二):对象和函数
Oct 25 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
Nov 23 Javascript
JavaScript实现同一个页面打开多张图片
Dec 29 Javascript
bootstrap Table插件使用demo
Aug 07 Javascript
浅谈express.js框架中间件(middleware)
Apr 07 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
Jan 04 Javascript
深入解析微信小程序开发中遇到的几个小问题
Jul 11 Javascript
jquery实现简单拖拽效果
Jul 20 jQuery
原生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中ini_set与ini_get用法实例
2014/11/04 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
javascript里的条件判断
2007/02/27 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js函数调用的方式
2014/05/06 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
详解vue-cli3使用
2018/08/14 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
幼儿园中班下学期评语
2014/04/18 职场文书
中等生评语大全
2014/05/04 职场文书
力学专业求职信
2014/07/23 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
python爬虫selenium模块详解
2021/03/30 Python
Python Numpy库的超详细教程
2022/04/06 Python