基于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 相关文章推荐
重定向实现代码
Nov 20 Javascript
extjs两个tbar问题探讨
Aug 08 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
$.each遍历对象、数组的属性值并进行处理
Jul 18 Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 Javascript
jQuery+json实现的简易Ajax调用实例
Dec 14 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
May 27 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
Nov 01 Javascript
vue cli3 配置proxy代理无效的解决
Oct 30 Javascript
探索node之事件循环的实现
Oct 30 Javascript
关于Vue Router的10条高级技巧总结
May 06 Vue.js
原生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注销代码(session注销)
2012/05/31 PHP
详解PHP中的Traits
2015/07/29 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
半角全角相互转换的js函数
2009/10/16 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
解决安装python库时windows error5 报错的问题
2018/10/21 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
后勤部经理岗位职责
2014/02/23 职场文书
公司员工奖惩制度
2015/08/04 职场文书
vue里使用create, mounted调用方法
2022/04/26 Vue.js