- 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-content infinite-scroll - 用于无限滚动容器。
data-distance - 此属性允许您配置触发无限滚动事件的页面底部距离(以 px 为单位),其默认值为 50px。
如果您想在页面顶部使用无限滚动,则需要向 "page-content" 添加额外的 "infinite-scroll-top" 类:
<div class = "page"> <div class = "page-content infinite-scroll infinite-scroll-top"> ... </div> </div>
无限滚动事件
infinite - 当页面滚动到达指定距离底部时触发。它将被 div class = "page-content infinite-scroll" 作为目标。
有两种 App 方法可以与无限滚动容器一起使用:
要向指定的 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 代码保存为 infinite_scroll.html 文件到您的服务器根文件夹。
以 https://127.0.0.1/infinite_scroll.html 的方式打开此 HTML 文件,显示的输出如下所示。
此示例允许在页面滚动到达指定距离底部时加载附加内容。
广告