What are Bootstrap Infinite scroll ?
This feature adds a scroll event listener (to the window or the component it's attached to if it has the overflow-y property set to scroll) and calls a callback method every time a user reaches an end of a page/container.
Installation
Manual installation (zip package)
To take advantage of our Bootstrap images component and use them in your project, you first need to install the MDB 5 Free package
MDB CLI
Watch our Quick Start Tutorial to discover and use the full potential of MDB 5 and MDB CLI
NPM
Prerequisites
Before starting the project make sure to install Node LTS (12.x.x recommended).
Installation
To install MDB UI KIT in your project easily type the following command in the terminal:
npm i mdb-ui-kit
Importing JS modules
You can import the entire library or just individual modules:
import * as mdb from 'mdb-ui-kit'; // lib
import { Input } from 'mdb-ui-kit'; // module
Importing CSS file
To import MDB stylesheet please use the following syntax:
@import '~mdb-ui-kit/css/mdb.min.css';
Importing SCSS modules
You can also import individual SCSS modules. To do it properly, we recommend to copy them from the node_modules/mdb-ui-kit/src/scss location directly to your project and import in the same way as CSS files.
Webpack integration
You can significantly speed up the process of creating a new project based on Webpack using our Starter.
CDN
Installation via CDN is one of the easiest methods of integrating MDB UI KIT with your project. Just copy the latest compiled JS script tag and CSS link tag from cdnjs to the application.
Don't forget to add also Font Awesome and Roboto font if you need. Here's an example code:
CSS
<!-- Font Awesome -->
<link
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css"
rel="stylesheet"
/>
<!-- Google Fonts -->
<link
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
rel="stylesheet"
/>
<!-- MDB -->
<link
href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/3.3.0/mdb.min.css"
rel="stylesheet"
/>
JS
<!-- MDB -->
<script
type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/3.3.0/mdb.min.js"
></script>
Customization
Basic example
HTML
<div class="infinite-scroll" data-mdb-infinite-direction="y" data-mdb-infinite-container="infinite-scroll-basic">
<ul
class="container list-group infinite-scroll infinite-scroll-basic"
id="basic-example"
style="max-height: 261px; overflow-y: scroll"
>
<li class="list-group-item d-flex align-items-center">
<i class="far fa-angry fa-3x me-4"></i> Angry
</li>
<li class="list-group-item d-flex align-items-center">
<i class="far fa-dizzy fa-3x me-4"></i> Dizzy
</li>
<li class="list-group-item d-flex align-items-center">
<i class="far fa-flushed fa-3x me-4"></i> Flushed
</li>
<li class="list-group-item d-flex align-items-center">
<i class="far fa-frown fa-3x me-4"></i> Frown
</li>
<li class="list-group-item d-flex align-items-center">
<i class="far fa-grimace fa-3x me-4"></i> Grimace
</li>
<li class="list-group-item d-flex align-items-center">
<i class="far fa-grin fa-3x me-4"></i> Grin
</li>
</ul>
</div>
JS
// An array of icon names
const icons = [
'Sad-Tear',
'Meh-Blank',
'Smile-Wink',
'Tired',
'Surprise',
'Kiss-Beam',
'Laugh-Squint',
];
// Get a scrollable container using an id attribute
const basicElement = document.getElementById('basic-example');
// An index of elements added after scrolling to the end of the container
let itemIndex = 0;
// items - an array of the created elements using the loop through icons array
const items = icons.map((icon) => {
// Create a list item element
const element = document.createElement('li');
// Change HTML code inside created list element using icon we are currently working on
element.innerHTML = `
<li class="list-group-item d-flex align-items-center">
<i class="far fa-${icon.toLowerCase()} fa-3x me-4"></i>${icon}
</li>
`;
// Return ready element
return element;
});
// Add an event listener to the scrollable container. The event below is triggered when a user scrolls to the end of the container
basicElement.addEventListener('complete.mdb.infiniteScroll', () => {
// Return nothing when user appended all of the generated items
if (itemIndex === icons.length - 1) return;
// Append next element to the scrollable container
basicElement.appendChild(items[itemIndex]);
// Increment amount of items that are appended
itemIndex++;
});
Direction
Use data-mdb-infinite-direction
to define the scrolling direction.
HTML
<div class="infinite-scroll py-3 text-center" id="direction-example"
style="max-width: 1500px; overflow-x: scroll; white-space: nowrap;" data-mdb-infinite-direction="x">
<span class="mx-5"><i class="far fa-angry fa-3x me-4"></i> Angry</span>
<span class="mx-5"><i class="far fa-dizzy fa-3x me-4"></i> Dizzy</span>
<span class="mx-5"><i class="far fa-flushed fa-3x me-4"></i> Flushed</span>
<span class="mx-5"><i class="far fa-grimace fa-3x me-4"></i> Grimace</span>
<span class="mx-5"><i class="far fa-grin fa-3x me-4"></i> Grin</span>
</div>
JS
// Get a scrollable container using an id attribute
const directionElement = document.getElementById('direction-example');
// An index of elements added after scrolling to the end of the container
let itemIndex = 0;
// An array of icon names
const icons = [
'Sad-Tear',
'Meh-Blank',
'Smile-Wink',
'Tired',
'Surprise',
'Kiss-Beam',
'Laugh-Squint',
];
// items - an array of the created elements using the loop through icons array
const items = icons.map((icon) => {
// Create a span element
const element = document.createElement('span');
// Add class mx-5 to the created element, which defines left and right margin
element.classList.add('mx-5');
// Change HTML code inside created span element using icon we are currently working on
element.innerHTML = `
<i class="far fa-${icon.toLowerCase()} fa-3x me-4"></i>
${icon}
`;
// Return ready element
return element;
});
// Add an event listener to the scrollable container. The event below is triggered when a user scrolls to the end of the container
directionElement.addEventListener('complete.mdb.infiniteScroll', () => {
// Return nothing when user appended all of the generated items
if (itemIndex === items.length - 1) return;
// Append next element to the scrollable container
directionElement.appendChild(items[itemIndex]);
// Increment amount of items that are appended
itemIndex++;
});
You can see more customization examples on the π Infinite scroll documentation page
Crucial Resources
Here are the resources that we have prepared to help you work with this component:
- Read π Infinite scroll documentation page <-- start here
- In to get the most out of your project, you should also get acquainted with other Methods options related to Infinite scroll. See the section below to find the list of them.
- You can use Methods in π₯ Starter Bootstrap 5 templates
- Templates are a part of π¦ Free UI Kit for Bootstrap 5
- After finishing the project you can publish it with CLI in order to receive π½ Free hosting (beta)
Related Methods options & features
Learn Bootstrap 5 in 1.5H
Additional resources
Learn web development with our learning roadmap:
π Start Learning
Join our mailing list & receive exclusive resources for developers
π Get gifts
Join our private FB group for inspiration & community experience
π¨βπ©βπ§βπ¦ Ask to join
Support creation of open-source packages with a STAR on GitHub
Top comments (0)