Touch enabled minimalistic slider written in vanilla JavaScript.
- Autoplay
- RTL support
- Lazyload images support
- Stop sliding on hover
npm install basic-swiper --save
import { swiper } from 'basic-swiper.js';
document.addEventListener('DOMContentLoaded', () => {
const slider = document.querySelector('.js_slider');
swiper(slider, {
// options
});
});To install dev dependencies run:
npm install
To make a full new build run:
npm run build
The default classes can be overridden when instantiating swiper.
<div class="js_slider">
<div class="js_frame">
<ul class="js_slides">
<li class="js_slide">1</li>
<li class="js_slide">2</li>
<li class="js_slide">3</li>
<li class="js_slide">4</li>
<li class="js_slide">5</li>
<li class="js_slide">6</li>
</ul>
// Prev / Next buttons
<span class="js_prev prev"></span>
<span class="js_next next"></span>
</div>
// Pagination
<ul class="js_dots"></ul>
</div>.slider {}
.frame {
position: relative;
font-size: 0;
line-height: 0;
white-space: nowrap;
}
.slides {
display: inline-block;
}
li {
position: relative;
display: inline-block;
}
li img {
max-width: 100%;
}
.prev, .next {
position: absolute;
top: 50%;
margin-top: -25px;
display: block;
cursor: pointer;
}
.next {
right: 0;
}
.prev {
left: 0;
}
.next svg, .prev svg {
width: 25px;
}
.dots {
margin: 0;
padding: 0;
text-align: center;
position: absolute;
width: 100%;
}
.dots > li {
width: 7px;
height: 7px;
border: 1px solid #fff;
opacity: 0.5;
margin: 0 5px;
display: inline-block;
border-radius: 100%;
background-color: #000;
cursor: pointer;
}
.dots > li.active {
background-color: #fff;
border: 1px solid #999;
box-sizing: border-box;
width: 12px;
border-radius: 4px;
opacity: 1;
}| slidesToScroll | default: 1 |
| slidesPerView | default: 1 (number of visible slides) |
| enableMouseEvents | default: true |
| rewind | default: false |
| slideSpeed (ms) | default: 300 |
| rewindSpeed (ms) | default: 600 |
| snapBackSpeed (ms) | default: 200 |
| ease (cubic bezier easing functions: http://easings.net/de) | default: 'ease' |
| classNameFrame | default: 'js_frame' |
| classNameSlideContainer | default: 'js_slides' |
| classNameDotsContainer | default: 'js_dots' |
| classNamePrevCtrl | default: 'js_prev' |
| classNameNextCtrl | default: 'js_next' |
| classNameActiveSlide | default: 'active' |
| classNameDisabled | default: 'disabled' |
| autoplay | default: false |
| direction | default: 'ltr' |
| before.swiper.init | fires before initialisation (first in setup function) |
| after.swiper.init | fires after initialisation (end of setup function) |
| before.swiper.slide | fires before slide change | arguments: currentSlide, nextSlide |
| while.swiper.sliding | fires while swiper is transiting between slides |
| after.swiper.slide | fires after slide change | arguments: currentSlide |
| before.swiper.destroy | fires before the slider instance gets destroyed |
| after.swiper.destroy | fires after the slider instance gets destroyed |
| on.swiper.resize | fires on every resize event |
| on.swiper.touchstart | fires on every slider touchstart event |
| on.swiper.touchmove | fires on every slider touchmove event |
| on.swiper.touchend | fires on every slider touchend event |
- Chrome
- Safari
- FireFox
- Opera
- Internet Explorer 10+