Autoplay
Auto-advances every 2 seconds. Hover to pause. Use the buttons to control it manually.
View code
<div class="c--slider-a" id="my-slider">
<div class="c--slider-a__wrapper">
<div class="c--slider-a__slide">1</div>
<div class="c--slider-a__slide">2</div>
<div class="c--slider-a__slide">3</div>
<div class="c--slider-a__slide">4</div>
<div class="c--slider-a__slide">5</div>
</div>
</div>
<div id="my-pagination" class="c--slider-a__pagination"></div>
<div class="ctrl-row">
<button id="btn-play">▶ Play</button>
<button id="btn-pause">⏸ Pause</button>
</div> .c--slider-a {
position: relative;
width: 100%;
overflow: hidden;
}
.c--slider-a__wrapper {
display: flex;
will-change: transform;
}
.c--slider-a__slide {
flex-shrink: 0;
width: 100%;
height: 260px;
}
/* Pagination dots */
.c--slider-a__pagination {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 12px 0;
}
.c--slider-a__pagination-bullet {
width: 10px;
height: 10px;
border-radius: 50%;
background: #d1d5db;
border: none;
cursor: pointer;
transition: background 0.2s, transform 0.2s;
}
.c--slider-a__pagination-bullet--active {
background: #6C2BD9;
transform: scale(1.3);
}
/* Auto-created arrows */
.c--slider-a__arrow {
position: absolute;
top: 50%;
transform: translateY(-50%);
z-index: 10;
width: 40px;
height: 40px;
border-radius: 50%;
border: none;
background: rgba(255, 255, 255, 0.9);
cursor: pointer;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
}
.c--slider-a__arrow--prev { left: 12px; }
.c--slider-a__arrow--next { right: 12px; }
.c--slider-a__arrow--disabled { opacity: 0.3; pointer-events: none; }
/* Play/Pause controls */
.ctrl-row { display: flex; gap: 8px; margin-top: 12px; }
.ctrl-row button {
padding: 7px 16px;
border: 1px solid #d1d5db;
border-radius: 6px;
background: #fff;
cursor: pointer;
font-size: 0.85rem;
font-weight: 500;
} .ctrl-row {
display: flex;
gap: 8px;
margin-top: 12px;
}
.ctrl-row button {
padding: 7px 16px;
border: 1px solid #d1d5db;
border-radius: 6px;
background: #fff;
cursor: pointer;
font-size: 0.85rem;
font-weight: 500;
}
.c--slider-a {
position: relative;
width: 100%;
overflow: hidden;
&__wrapper {
display: flex;
will-change: transform;
}
&__slide {
flex-shrink: 0;
width: 100%;
height: 260px;
}
&__pagination {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 12px 0;
}
&__pagination-bullet {
width: 10px;
height: 10px;
border-radius: 50%;
background: #d1d5db;
border: none;
cursor: pointer;
transition: background 0.2s, transform 0.2s;
&--active {
background: #6C2BD9;
transform: scale(1.3);
}
}
&__arrow {
position: absolute;
top: 50%;
transform: translateY(-50%);
z-index: 10;
width: 40px;
height: 40px;
border-radius: 50%;
border: none;
background: rgba(255, 255, 255, 0.9);
cursor: pointer;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
&--prev {
left: 12px;
}
&--next {
right: 12px;
}
&--disabled {
opacity: 0.3;
pointer-events: none;
}
}
} import { Slider } from '@andresclua/sliderkit'
import { arrows, pagination, autoplay } from '@andresclua/sliderkit-plugins'
const slider = new Slider('#my-slider', {
loop: true,
plugins: [
autoplay({ delay: 2000, pauseOnHover: true }),
arrows(),
pagination({ el: '#my-pagination', type: 'dots', clickable: true }),
],
})
document.getElementById('btn-play').addEventListener('click', () => slider.play())
document.getElementById('btn-pause').addEventListener('click', () => slider.pause())