Framework7 Starter
HTML
<script src="https://unpkg.com/[email protected]/js/framework7.bundle.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/css/framework7.bundle.min.css">
<div id="app">
<div class="panel panel-left panel-cover theme-dark">
<div class="page"></div>
</div>
<div class="panel panel-right panel-reveal theme-dark">
<div class="page"></div>
</div>
<div class="view view-main ios-edges">
<div class="page" data-name="home">
<div class="navbar">
<div class="navbar-inner">
<div class="left">
<a href="#" class="link panel-open" data-panel="left">Left Panel</a>
</div>
<div class="title sliding">My App</div>
<div class="right">
<a href="#" class="link panel-open" data-panel="right">Right Panel</a>
</div>
</div>
</div>
<!-- Toolbar-->
<div class="toolbar toolbar-bottom">
<div class="toolbar-inner">
<a href="#" class="link">Left Link</a>
<a href="#" class="link">Right Link</a>
</div>
</div>
<!-- Scrollable page content-->
<div class="page-content infinite-scroll-content">
<div class="block">
<div class="row">
<button class="button col" id="btn-a">Button A</button>
<button class="button col" id="btn-b">Button B</button>
</div>
</div>
<div class="list simple-list">
<ul></ul>
</div>
<div class="preloader infinite-scroll-preloader" style="display: none"></div>
</div>
</div>
</div>
</div>
JavaScript
var app = new Framework7({
root: '#app',
theme: 'auto',
routes: [{
path: '/about/',
content: `
<div class="page">
<div class="navbar">
<div class="navbar-inner sliding">
<div class="left">
<a href="#" class="link back">
<i class="icon icon-back"></i>
<span class="ios-only">Back</span>
</a>
</div>
<div class="title">About</div>
</div>
</div>
<div class="page-content">
<div class="block block-strong">About page</div>
</div>
</div>
`
}]
});
var viewMain = app.views.create('.view-main');
var $$ = Dom7;
// Loading flag
var allowInfinite = true;
// Last loaded index
var lastItemIndex = $$('.list li').length;
// Max items to load
var maxItems = 200;
// Append items per load
var itemsPerLoad = 20;
var timer;
// Attach 'infinite' event handler
$$('.infinite-scroll-content').on('infinite', function () {
// Exit, if loading in progress
if (!allowInfinite) return;
$$('.infinite-scroll-preloader').show();
add();
});
function add() {
// Set loading flag
allowInfinite = false;
// Emulate 1s loading
timer = setTimeout(function () {
// Reset loading flag
allowInfinite = true;
if (lastItemIndex >= maxItems) {
// Nothing more to load, detach infinite scroll events to prevent unnecessary loadings
app.infiniteScroll.destroy('.infinite-scroll-content');
// Remove preloader
$$('.infinite-scroll-preloader').remove();
return;
}
// Generate new items HTML
var html = '';
for (var i = lastItemIndex + 1; i <= lastItemIndex + itemsPerLoad; i++) {
html += '<li>Item ' + i + '</li>';
}
// Append new items
$$('.list ul').append(html);
// Update last loaded index
lastItemIndex = $$('.list li').length;
$$('.infinite-scroll-preloader').hide();
}, 3000);
...