Touch Enabled Content Slider in jQuery & Vanilla JavaScript - lory
| File Size: | 349 KB |
|---|---|
| Views Total: | 10577 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
lory is a Vanilla JavaScript library that makes it easier to create a touch-enabled content slider/scroller with arrows navigation. Also provides a jQuery plugin which allows you to implement a minimal slider in your jQuery projects.
Key features:
- Supports single element or multiple elements in one slide.
- Provides options to custom easing effects.
- Custom transition effects & animation speed.
- Carousel-like infinite looping.
How to use it:
1. Install and import the lory module.
# Yarn $ yarn add lory.js # NPM $ npm install lory.js --save
import { lory } from 'lory.js';
2. To use the lory as a jQuery plugin, download and include the jquery.lory.js script after jQuery library.
<script src="//code.jquery.com/jquery.min.js"></script> <script src="dist/jquery.lory.js"></script>
3. Add slides together with next & prev navigation arrows into the slider.
<div class="slider js_demo demo">
<div class="frame js_frame">
<ul class="slides js_slides">
<li class="js_slide">Slide 1</li>
<li class="js_slide">Slide 2</li>
<li class="js_slide">Slide 3</li>
</ul>
</div>
<span class="js_prev prev">
<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 501.5 501.5">
<g>
<path fill="#2E435A" d="M302.67 90.877l55.77 55.508L254.575 250.75 358.44 355.116l-55.77 55.506L143.56 250.75z"/>
</g>
</svg> </span> <span class="js_next next"> <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 501.5 501.5">
<g>
<path fill="#2E435A" d="M199.33 410.622l-55.77-55.508L247.425 250.75 143.56 146.384l55.77-55.507L358.44 250.75z"/>
</g>
</svg>
</span>
</div>
4. Initialize the content slider with default options.
// JavaScript
document.addEventListener('DOMContentLoaded', function() {
var mySlider = document.querySelector('.js_demo');
lory(mySlider, {
// options here
});
});
// jQuery Plugin
$(function() {
$('.js_demo').lory({
// options here
});
});
5. Available options.
/** * slides scrolled at once * @slidesToScroll {Number} */ slidesToScroll: 1, /** * time in milliseconds for the animation of a valid slide attempt * @slideSpeed {Number} */ slideSpeed: 300, /** * time in milliseconds for the animation of the rewind after the last slide * @rewindSpeed {Number} */ rewindSpeed: 600, /** * time for the snapBack of the slider if the slide attempt was not valid * @snapBackSpeed {Number} */ snapBackSpeed: 200, /** * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function * cubic bezier easing functions: http://easings.net/de * @ease {String} */ ease: 'ease', /** * if slider reached the last slide, with next click the slider goes back to the startindex. * use infinite or rewind, not both * @rewind {Boolean} */ rewind: false, /** * number of visible slides or false * use infinite or rewind, not both * @infinite {number} */ infinite: false, /** * the slide index to show when the slider is initialized. * @initialIndex {number} */ initialIndex: 0, /** * class name for slider frame * @classNameFrame {string} */ classNameFrame: 'js_frame', /** * class name for slides container * @classNameSlideContainer {string} */ classNameSlideContainer: 'js_slides', /** * class name for slider prev control * @classNamePrevCtrl {string} */ classNamePrevCtrl: 'js_prev', /** * class name for slider next control * @classNameNextCtrl {string} */ classNameNextCtrl: 'js_next', /** * class name for current active slide * if emptyString then no class is set * @classNameActiveSlide {string} */ classNameActiveSlide: 'active', /** * enables mouse events for swiping on desktop devices * @enableMouseEvents {boolean} */ enableMouseEvents: false, /** * window instance * @window {object} */ window: typeof window !== 'undefined' ? window : null, /** * If false, slides lory to the first slide on window resize. * @rewindOnResize {boolean} */ rewindOnResize: true
6. Event handlers.
var mySlider = $('.js_demo');
function handleEvent(e) {
// custom function here
}
mySlider.on('before.lory.init', handleEvent);
mySlider.on('after.lory.init', handleEvent);
mySlider.on('before.lory.slide', handleEvent);
mySlider.on('after.lory.slide', handleEvent);
mySlider.on('before.lory.destroy', handleEvent);
mySlider.on('after.lory.destroy', handleEvent);
mySlider.on('on.lory.resize', handleEvent);
mySlider.on('on.lory.touchend', handleEvent);
mySlider.on('on.lory.touchmove', handleEvent);
mySlider.on('on.lory.touchstart', handleEvent);
7. API methods.
// slide to a specific slide mySlider.data().lory.slideTo(2); // go to the next slide mySlider.data().lory.prev(); // back to the previous slide mySlider.data().lory.next(); // reset the slider mySlider.data().lory.reset(); // destroy the slider mySlider.data().lory.destroy(); // return the index of the current slide mySlider.data().lory.returnIndex(); // bind eventlisteners, merging default and user options, setup the slides based on DOM mySlider.data().lory.setup();
Changelog:
2019-06-22
- Bug Fixes
2018-10-22
- fix: add option for rewind on prev button
This awesome jQuery plugin is developed by loryjs. For more Advanced Usages, please check the demo page or visit the official website.










