Add autofill banner pagination feature
This commit is contained in:
47
banner-autofill-pagination/index.js
Normal file
47
banner-autofill-pagination/index.js
Normal file
@@ -0,0 +1,47 @@
|
||||
// Add the code in main banner js code, before it's last closing bracket
|
||||
|
||||
// Idm-pagination
|
||||
const paginationContainer = document.createElement('div');
|
||||
paginationContainer.id = 'idm-pagination';
|
||||
mainBannerElement.appendChild(paginationContainer);
|
||||
|
||||
const slidesLength = slidesCount.length;
|
||||
const bars = [];
|
||||
|
||||
for (let i = 0; i < slidesLength; i++) {
|
||||
const bar = document.createElement('div');
|
||||
bar.className = 'bar';
|
||||
|
||||
const fill = document.createElement('div');
|
||||
fill.className = 'fill';
|
||||
|
||||
bar.appendChild(fill);
|
||||
paginationContainer.appendChild(bar);
|
||||
bars.push(fill);
|
||||
}
|
||||
|
||||
let activeIndex = 0;
|
||||
let autoplayDuration = sliderAutoplaySpeed || 5000;
|
||||
|
||||
function animateBar(index) {
|
||||
bars.forEach((bar, i) => {
|
||||
bar.style.transition = 'none';
|
||||
bar.style.width = i < index ? '100%' : '0%';
|
||||
});
|
||||
|
||||
const current = bars[index];
|
||||
if (!current) return;
|
||||
|
||||
void current.offsetWidth; // force reflow
|
||||
current.style.transition = `width ${autoplayDuration}ms linear`;
|
||||
current.style.width = '100%';
|
||||
}
|
||||
|
||||
if (autoplayEnable) {
|
||||
animateBar(activeIndex);
|
||||
|
||||
mainBanner.watchEvent('slideChange', (swiper) => {
|
||||
activeIndex = swiper.realIndex;
|
||||
animateBar(activeIndex);
|
||||
});
|
||||
}
|
||||
29
banner-autofill-pagination/index.less
Normal file
29
banner-autofill-pagination/index.less
Normal file
@@ -0,0 +1,29 @@
|
||||
// IdoMods Custom Pagination
|
||||
#idm-pagination {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: -1.6rem;
|
||||
transform: translateX(-50%);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
#idm-pagination .bar {
|
||||
min-width: 4rem;
|
||||
flex: 1;
|
||||
height: 3px;
|
||||
background-color: #C8C8C8;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#idm-pagination .fill {
|
||||
background-color: @less_idmcolorscheme_primary_black;
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
transition: width linear;
|
||||
}
|
||||
Reference in New Issue
Block a user