基于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脚本实现Web页面信息交互
Oct 11 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
Sep 18 Javascript
js获取鼠标位置实例详解
Dec 09 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
Sep 01 Javascript
js仿手机页面文件下拉刷新效果
Oct 14 Javascript
jQuery动态创建元素以及追加节点的实现方法
Oct 20 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
Dec 18 Javascript
JS实现上传图片实时预览功能
May 22 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
Dec 19 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
vue全局使用axios的方法实例详解
Nov 22 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 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
牡丹941资料
2021/03/01 无线电
php中使用sftp教程
2015/03/30 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
js实现简易计算器小功能
2020/11/18 Javascript
Python pickle模块用法实例
2015/04/14 Python
使用Python生成随机密码的示例分享
2016/02/18 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
python 图片去噪的方法示例
2019/07/09 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
项目经理的岗位职责
2013/11/23 职场文书
家长对孩子的感言
2014/03/10 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
十佳少年事迹材料
2014/12/25 职场文书
医者仁心观后感
2015/06/17 职场文书
如何写观后感
2015/06/19 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
MySql分区类型及创建分区的方法
2022/04/13 MySQL
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL