基于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生成的html出现样式问题的解决方法
Apr 16 Javascript
js获取多个tagname的节点数组
Sep 22 Javascript
javascript和jquery修改a标签的href属性
Dec 16 Javascript
让angularjs支持浏览器自动填表
Nov 10 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
jQuery点击其他地方时菜单消失的实现方法
Apr 22 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
JS实现的DIV块来回滚动效果示例
Feb 07 Javascript
详解数组Array.sort()排序的方法
May 09 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
深入了解JavaScript 的 WebAssembly
Jun 15 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 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设计模式 Mediator (中介者模式)
2011/06/26 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
python实时分析日志的一个小脚本分享
2017/05/07 Python
python 文件操作删除某行的实例
2017/09/04 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
关于Java finally的面试题
2016/04/27 面试题
小学教师节活动方案
2014/01/31 职场文书
大家检讨书5000字
2014/02/03 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
教师个人鉴定材料
2014/02/08 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis