Responsive Touch Swiper Slider - jquery.slider.js
| File Size: | 37.5 KB |
|---|---|
| Views Total: | 3788 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
A flexible, responsive, mobile-friendly, and highly customizable swiper/slider/carousel/slideshow plugin created for both desktop and mobile.
Features:
- Supports touch and drag events.
- Slide and fade animations.
- Custom transition effects using CSS.
- Auto play.
- Infinite loop.
- Arrow navigation and numeric pagination.
- Easy to style using your own CSS styles.
How to use it:
1. The basic HTML structure for the swiper slider.
<div class="slider">
<div class="slider-container" id="slider">
<div class="slider-item">Item 1</div>
<div class="slider-item">Item 2</div>
<div class="slider-item">Item 3</div>
<div class="slider-item">Item 4</div>
<div class="slider-item">Item 5</div>
</div>
</div>
2. Place the jquery.slider.js script after jQuery library.
<script src="jquery.js"></script> <script src="jquery.slider.js"></script>
3. Attach the plugin to the slider container and done.
$('#slider').slider();
4. The example CSS to style the slider.
.slider {
display: flex;
align-items: center;
flex-wrap: wrap;
width: 60%;
margin: 0 auto;
}
.slider-container {
flex-grow: 1;
overflow: hidden;
position: relative;
height: 200px;
}
.slider-item {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
@media (max-width: 768px) {
.slider {
width: 100%;
}
}
4. Add custom navigation arrows to the slider.
<a href="#" class="slider-prev">←</a> <a href="#" class="slider-next">→</a>
$('#slider').slider({
prev: $('.slider-prev'),
next: $('.slider-next')
});
5. Add a numeric pagination to the slider.
<div class="slider-pagination"> <a href="#" class="slider-link">1</a> <a href="#" class="slider-link">2</a> <a href="#" class="slider-link">3</a> <a href="#" class="slider-link">4</a> <a href="#" class="slider-link">5</a> </div>
$('#slider').slider({
links: $('.slider-link')
});
6. Enable the autoplay functionality.
$('#slider').slider({
autoPlay: true,
delay: 5000 // interval
});
7. Set the transition effect. Default: 'slide'.
$('#slider').slider({
effect: 'fade',
});
8. You can also create your own transition effects as follows:
$('#slider').slider({
effect: 'myeffect',
effects: {
myeffect: {
oldSlideCSS: function(oldIdx, newIdx, ratio) {
return {
left: 0,
top: 0,
opacity: 1,
zIndex: 1
};
},
newSlideCSS: function(oldIdx, newIdx, ratio) {
var coef = (oldIdx < newIdx) ? 1 : -1;
if (this.opt.loop) {
if (oldIdx === 0 && newIdx === this.count - 1) {
coef = -1;
} else if (oldIdx === this.count - 1 && newIdx === 0) {
coef = 1;
}
}
return {
left: (coef * (1 - ratio) * 100) + '%',
top: (coef * (1 - ratio) * 100) + '%',
opacity: ratio,
zIndex: 2
};
},
resetSlideCSS() {
return {
left: '',
top: '',
opacity: '',
zIndex: ''
};
}
}
}
});
9. Full slider customization options with default values.
$('#slider').slider({
container: null,
items: null,
prev: null,
next: null,
links: null,
idx: 0,
vertical: false, // vertical mode
duration: 300,
loop: true,
autoPlay: false,
delay: 5000,
useSwipe: true, // enable/disable touch swipe
swipeChangeOn: 0.5,
swipeRatio(ratioX, ratioY) {
return this.opt.vertical ? ratioY : ratioX;
},
activeClass: 'is-active',
disabledClass: 'is-disabled',
hideArrows: false,
hideLinks: false,
effect: 'slide',
effects: {
slide: {
oldSlideCSS(oldIdx, newIdx, ratio) {
let coef = (((oldIdx < newIdx) && !(this.opt.loop && oldIdx === 0 && newIdx === this.count - 1)) || (this.opt.loop && oldIdx === this.count - 1 && newIdx === 0)) ? -1 : 1;
return this.opt.vertical ? { top: (coef * ratio * 100) + '%' } : { left: (coef * ratio * 100) + '%' };
},
newSlideCSS(oldIdx, newIdx, ratio) {
let coef = (((oldIdx < newIdx) && !(this.opt.loop && oldIdx === 0 && newIdx === this.count - 1)) || (this.opt.loop && oldIdx === this.count - 1 && newIdx === 0)) ? 1 : -1;
return this.opt.vertical ? { top: (coef * (1 - ratio) * 100) + '%' } : { left: (coef * (1 - ratio) * 100) + '%' };
},
resetSlideCSS() {
return this.opt.vertical ? { top: '' } : { left: '' };
}
},
fade: {
oldSlideCSS(oldIdx, newIdx, ratio) {
return { opacity: 1 - ratio, zIndex: 1 };
},
newSlideCSS(oldIdx, newIdx, ratio) {
return { opacity: ratio, zIndex: 2 };
},
resetSlideCSS() {
return { opacity: '', zIndex: '' };
}
}
}
});
10. Event handlers.
$('#slider').slider({
beforeChange: function(oldIdx, newIdx) {
console.log('beforeChange', oldIdx, newIdx);
},
afterChange: function(oldIdx, newIdx) {
console.log('afterChange', oldIdx, newIdx);
},
duringChange: function(oldIdx, newIdx, ratio) {
console.log('duringChange', oldIdx, newIdx, ratio);
}
});
11. API methods.
// Back to the previous slide
$('#slider').slider('showPrev');
// Go to the previous slide
$('#slider').slider('showNext');
// Go to a specific slide
$('#slider').slider('show', prompt('Slide index'));
// Start autoplay
$('#slider').slider('start');
// Stop autoplay
$('#slider').slider('stop');
// Return the number of slides
$('#slider').slider('count');
// Destroy the slider instance
$('#slider').slider('destroy');
Changelog:
2019-11-18
- Added Vertical mode.
This awesome jQuery plugin is developed by nikitanickzhukov. For more Advanced Usages, please check the demo page or visit the official website.










