- Framework7教程
 - Framework7 - 主页
 - Framework7 - 概述
 - Framework7 - 环境
 
- Framework7 组件
 - Framework7 - 布局
 - Framework7 - 导航栏
 - Framework7 - 工具栏
 - Framework7 - 搜索栏
 - Framework7 - 状态栏
 - Framework7 - 侧面板
 - Framework7 - 内容块
 - Framework7 - 布局网格
 - Framework7 - 覆盖层
 - Framework7 - 预加载器
 - Framework7 - 进度条
 - Framework7 - 列表视图
 - Framework7 - 手风琴
 - Framework7 - 卡片
 - Framework7 - 芯片
 - Framework7 - 按钮
 - Framework7 - 操作按钮
 - Framework7 - 表格
 - Framework7 - 选项卡
 - Framework7 - Swiper 滑块
 - Framework7 - 照片浏览器
 - Framework7 - 自动完成
 - Framework7 - 选择器
 - Framework7 - 日历
 - Framework7 - 刷新
 - Framework7 - 无限滚动
 - Framework7 - 消息
 - Framework7 - 消息栏
 - Framework7 - 通知
 - Framework7 - 延迟加载
 
- Framework7 样式
 - Framework7 - 颜色主题
 - Framework7 - 细线
 
- Framework7 模板
 - Framework7 - 模板概述
 - Framework7 - 自动编译
 - Framework7 - Template7 页面
 
- Framework7 快速点击
 - Framework7 - 活动状态
 - Framework7 - 点击保持事件
 - Framework7 - 触摸波纹
 
- Framework7 有用的资源
 - Framework7 - 快速指南
 - Framework7 - 有用的资源
 - Framework7 - 讨论
 
Framework7 - 无限滚动
描述
无限滚动允许您加载附加内容并在页面接近底部时执行所需的操作。
以下 HTML 布局显示了无限滚动 -
<div class = "page">
   <div class = "page-content infinite-scroll" data-distance = "100">
      ...
   </div>
</div>
上面的布局包含以下类 -
page-contentInfinity-scroll-用于无限滚动容器。
data-distance - 该属性允许您配置距页面底部的距离(以像素为单位)以触发无限滚动事件,其默认值为50像素。
如果您想在页面顶部使用无限滚动,则需要向“page-content”添加额外的“infinite-scroll-top”类-
<div class = "page">
   <div class = "page-content infinite-scroll infinite-scroll-top">
      ...
   </div>
</div>
无限滚动事件
无限- 用于当页面滚动到达底部指定距离时触发。它将成为div class = "page-contentInfinity-scroll"的目标。
有两种应用程序的方法可以与无限滚动容器一起使用 -
要将无限滚动事件侦听器添加到指定的 HTML 容器,请使用以下方法 -
myApp.attachInfiniteScroll(container)
您可以使用以下方法从指定的 HTML 容器中删除无限滚动事件侦听器 -
myApp.detachInfiniteScroll(container)
其中参数是必需的选项,用作无限滚动容器的HTMLElement或字符串。
例子
以下示例演示了当页面滚动接近底部时加载附加内容的无限滚动 -
<!DOCTYPE html>
<html>
   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name="apple-mobile-web-app-capable" content="yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>infinite_scroll</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>
   
   <body>
      <div class = "views">
         <div class = "view view-main">
         
            <div class = "navbar">
               <div class = "navbar-inner">
                  <div class = "left"> </div>
                  <div class = "center sliding">Infinite Scroll</div>
                  <div class = "right"> </div>
               </div>
            </div>
         
            <div class = "pages navbar-through">
               <div data-page = "home" class = "page">
                  <div class = "page-content infinite-scroll">
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 1</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 2</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 3</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 4</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 5</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 6</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 7</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 8</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 9</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 10</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 11</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 12</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 13</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 14</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 15</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 16</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 17</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 18</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 19</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 20</div>
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "infinite-scroll-preloader">
                        <div class = "preloader"></div>
                     </div>
                  </div>
               </div>
            </div>
         
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <style>
         .infinite-scroll-preloader {
            margin-top:-20px;
            margin-bottom:10px;
            text-align:center;
         }
         
         .infinite-scroll-preloader .preloader {
            width:34px;
            height:34px;
         }
      </style>
      
      <script>
         var myApp = new Framework7();
         var $$ = Dom7;
         // Loading flag
         var loading = false;
         // Last loaded index
         var lastIndex = $$('.list-block li').length;
         // Max items to load
         var maxItems = 60;
         // Append items per load
         var itemsPerLoad = 20;
         // Attach 'infinite' event handler
         $$('.infinite-scroll').on('infinite', function () {
            // Exit, if loading in progress
            if (loading) return;
            // Set loading flag
            loading = true;
            // Emulate 1s loading
            setTimeout(function () {
               // Reset loading flag
               loading = false;
               if (lastIndex >= maxItems) {
                  // Nothing more to load, detach infinite scroll events to prevent unnecessary loadings
                  myApp.detachInfiniteScroll($$('.infinite-scroll'));
                  
                  // Remove preloader
                  $$('.infinite-scroll-preloader').remove();
                  return;
               }
               // Generate new items HTML
               var html = '';
               for (var i = lastIndex + 1; i <= lastIndex + itemsPerLoad; i++) {
                  html += '<li class = "item-content">
                     <div class = "item-inner">
                        <div class = "item-title">
                           Item ' + i + '
                        </div>
                     </div>
                  </li>';
               }
               // Append new items
               $$('.list-block ul').append(html);
               // Update last loaded index
               lastIndex = $$('.list-block li').length;
            }, 1000);
         });
      </script>
   </body>
</html>
输出
让我们执行以下步骤来看看上面给出的代码是如何工作的 -
将上面给定的 HTML 代码保存为服务器根文件夹中的Infinity_scroll.html文件。
以 http://localhost/infinite_scroll.html 打开此 HTML 文件,输出如下所示。
该示例允许在页面滚动达到底部指定距离时加载附加内容。