基于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中使用正则匹配多条,且获取每条中的分组数据
Nov 30 Javascript
jQuery点击弹出下拉菜单的小例子
Aug 01 Javascript
js模拟点击以提交表单为例兼容主流浏览器
Nov 29 Javascript
js点击选择文本的方法
Feb 09 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
jQuery自动完成插件completer附源码下载
Jan 04 Javascript
javascript运算符——逻辑运算符全面解析
Jun 27 Javascript
基于Bootstrap仿淘宝分页控件实现代码
Nov 07 Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
layer.js open 隐藏滚动条的例子
Sep 05 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日期时间函数的高级应用技巧
2009/05/16 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
又一个小巧的图片预加载类
2007/05/05 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
js实现烟花特效
2020/03/02 Javascript
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
详解python eval函数的妙用
2017/11/16 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
Python各种扩展名区别点整理
2020/02/27 Python
Python bytes string相互转换过程解析
2020/03/05 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
加拿大留学自荐信
2014/01/28 职场文书
刊首寄语大全
2014/04/11 职场文书
停车场管理协议书范本
2014/10/08 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
《花钟》教学反思
2016/02/17 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
python基础之爬虫入门
2021/05/10 Python
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技