This plugin allows you to create fully customizable slider. Slidizle is focused on managing your slider by just applying some classes on each of your html elements so you can have the full control over your slider look.
You can download or clone the repo, or just use bower like this
bower install jquery.slidizle
You can find some demos here : http://olivierbossel.github.io/slidizle/
First, you need to include the scripts and css in your page
<script src="jquery.js"></script>
<script src="jquery.slidizle.js"></script>
You will need some html to describe your slider. This can be fully changed. You will just need the different slidizle attributes...
<div class="my-cool-slider" data-slidizle>
<ul class="my-cool-slider-content" data-slidizle-content>
<li class="my-cool-slide">
Hello world
</li>
<li class="my-cool-slide">
Hello world
</li>
<li class="my-cool-slide">
Hello world
</li>
</ul>
<ul class="my-cool-navigation" data-slidizle-navigation>
<!-- automagically filled with some li for your navigation -->
<!-- can be custom too (cf. sample index.html) -->
</ul>
<button class="my-cool-next-button" data-slidizle-next>Next</button>
<button class="my-cool-previous-button" data-slidizle-next>Previous</button>
</div>
Then, you have multiple options to use slidizle :
This is of course a jQuery plugin, so you can use it as it
jQuery(function($) {
// init slidizle on all data-overlizle elements
var $sliders = $('[data-slidizle]').slidizle();
// you can pass options directly at instanciation like this
var $sliders = $('[data-slidizle]').slidizle({
pauseOnHover : true,
timeout : 5000
// etc...
});
// use the api through jquery element
$sliders.filter(':first').slidizle('next');
// get the api from element and use it :
var api = $sliders.filter(':first').data('slidizle_api');
api.next();
You can also use slidizle as a "Class" directly in your javascript code. The dependence to jQuery remain of course...
// instanciate slidizle :
var mySlider = new Slidizle($('#mySlider'), {
timeout : 5000
// etc...
});
// using the api :
mySlider.goto(2); // go to slide with index 2 (mean third slide)
// etc...
This is totally under your control. You just need to know that slidizle will apply the classes described bellow on each elements of your slider.
There are the different classes that are applied on your html
- slidizle : applied on the container
- slidizle-content : applied on the content container
- slidizle-slide : applied on each of your slides
- slidizle-next : applied on the next button
- slidizle-previous : applied on the previous button
- slidizle-navigation : applied on the navigation container
These classes are applied at the initialisation
There classes describe the state of your slider
- active : applied on the active slide
- loading : applied on the container and the slide that is currently loading
- forward : applied on the container when go forward
- backward : applied on the container when go backward
- disabled : applied on the next and previous element when need to be disabled
- played : applied on the container when the slider is in play mode
- paused : applied on the container when the slider is in pause mode
- stoped : applied on the container when the slider is in stop mode
- slide-{index} : applied on the container (slide-0, slide-1, etc...)
- loaded-slide-{index} : same as slide-{index} but applied only when the slide is loaded
- first : applied on the first slide
- last : applied on the last slide
- previous : applied on the previous slide
- next : applied on the next slide
- before-active : applied on all the slides that are before the active one
- after-active : opposite of before-active
Here's the list of all the available options :
classes : {
// class applied on content wrrapper
content : 'slidizle-content',
// class applied on next navigation element
next : 'slidizle-next',
// class applied on previous navigation element
previous : 'slidizle-previous',
// class applied on all slides that are before the active one
beforeActive : 'before-active',
// class applied on all slides that are after the active one
afterActive : 'after-active',
// class applied on the next active slide
nextActive : 'next',
// class applied on the previous active slide
previousActive : 'previous',
// class applied on container when the slider is in forward mode
forward : 'forward',
// class applied on container when the slider is in backward mode
backward : 'backward',
// class applied on navigation element
navigation : 'slidizle-navigation',
// class applied on timer element
timer : 'slidizle-timer', // not documented
// class applied on each slide
slide : 'slidizle-slide',
// class applied on the next and previous navigation, or the all slider when disabled
disabled : 'disabled',
// the class applied on container when the slider is at his first slide
first : 'first',
// the class applied on container when the slider is at his last slide
last : 'last',
// the play class applied on the container
play : 'played',
// the pause class applied on the container
pause : 'paused',
// the stop class applied on the container
stop : 'stoped',
// an class to access the slider
slider : 'slidizle',
// the className to add to active navigation, slides, etc...
active : 'active',
// the className to add to the slider and slides when it is in loading mode
loading : 'loading'
},
// the slider interval time between each medias
timeout : null,
// set if the slider has to make pause on mouse hover
pauseOnHover : false,
// set if the slider has to go next on mouse click
nextOnClick : false,
// set if the slider has to go first item when next on last
loop : false,
// set if the slider has to play directly or not if a timeout is specified
autoPlay : true,
// activate or not the keyboard
keyboardEnabled : true,
// activate or not the touch navigation for mobile (swipe)
touchEnabled : true,
// specify if need to load the next content before the transition
loadBeforeTransition : true,
// specify if the slider is disabled or not (can be a function that return true or false)
disabled : false,
// callback when the slider is inited
onInit : null,
// callback when a slide is clicked
onClick : null,
// callback before the slider change from one media to another
beforeChange : null,
// callback when the slider change from one media to another
onChange : null,
// callback after the slider change from one media to another
afterChange : null,
// callback before the slider begin to load the slide
beforeLoading : null,
// callback during the loading progress
onLoading : null,
// callback after the slider has loaded the next slide (before the actual change)
afterLoading : null,
// callback when the slider change for the next slide
onNext : null,
// callback when the slider change for the previous slide
onPrevious : null,
// callback when the slider change his state to play
onPlay : null,
// callback when the slider change his state to pause
onPause : null,
// callback when the slider resume after a pause
onResume : null
All the options can be set directly on the DOM element using the pattern : data-overlizle-{option-separated-with-dash}="{value}"
<div data-slidizle data-slidizle-pause-on-hover="true" data-slidizle-classes-loading="myLoadingClass"> <!-- slider content here... --> </div>
## Attributes
Slidizle provide some attributes that you need to apply on your different html elements in order to describe it. Here's the list
- data-slidizle-content : has to be applied on the element that contains your slides (slides need to be direct childs)
- data-slidizle-navigation : applied on the element where you need (or have) your navigation
- data-slidizle-next : make the marked element a trigger to go to the next slide
- data-slidizle-previous : make the marked element a trigger to go to the previous slide
- data-slidizle-slide-id="..." : link a slide with a navigation element (cf the doc bellow)
- data-slidizle-timeout="..." : has to be applied on a slide to specify a custom timeout (milisecond)
Slidizle trigger some events that you can catch to make what you want at certain point of the code execution
- slidizle.init : when ready
- slidizle.beforeChange : before the change happens
- slidizle.change : when change to another slide
- slidizle.afterChange : after the change has been done
- sliditle.beforeLoading : before the loading of next slide is launched (if loadBeforeTransition is at true)
- sliditle.onLoading : during the loading of next slide (if loadBeforeTransition is at true)
- sliditle.afterLoading : after the loading of next slide is launched (if loadBeforeTransition is at true)
- slidizle.next : when go to the next slide
- slidizle.previous : when go to the previous slide
- slidizle.play : when pass in play mode
- slidizle.pause : when pass in pause mode
- slidizle.resume : when the slider get out of pause
- slidizle.stop : when pass in stop mode
- slidizle.click : when clicked on a slide
Slidizle expose a simple but powerful api :
Go to next slide
Go to previous slide
id : can be an index of slide, an id (#myCoolSlide) or an slide-id (cf doc)
Go to a certain slide.
Same as goto but launch a play after
Same as goto but launch a stop after
This method is used to play the slider. This wotks only if a timeout is specified in settings
Pause the slider
Stop the slider
Switch between play and pause state
Return the current slide
Return the next slide
Return the previous slide
Return the previous active slide
Return all the slides
Return the loading progress of the next slide (will return 0 is the loadBeforeTransition setting is at false)
Return the remaining timeout until the next slide change (only if a timeout is specified in settings)
Return the current timeout in ms since the slide is active (only if a timeout is specified in settings)
Return the time that the active slide has to be displayed (only if a timeout is specified in settings)
Return true if is the last slide active
Return true if is the first slide active
Return if the slider has to loop or not
Return if the slider is in play state
Return if the slider is disabled or not
Return if the slider is in pause state
Return is the slider is in stop state
Return if the mouse if hover the slider
Return the settings of the slider
These are some useful advanced usage of slidizle
By default, slidizle will populate your data-slidizle-navigation with the corresponding child on witch the attribute is applied. But if this element is not empty, slidizle will take your elements as navigation.
<div class="my-cool-slider" data-slidizle>
<ul class="my-cool-slider-content" data-slidizle-content>
<li class="my-cool-slide">
Hello world
</li>
<li class="my-cool-slide">
Hello world
</li>
<li class="my-cool-slide">
Hello world
</li>
</ul>
<ul class="my-cool-navigation" data-slidizle-navigation>
<li>Navigation item 1</li>
<li>Navigation item 2</li>
<li>Navigation item 3</li>
</ul>
</div>
By default, the element at index 0 will twigger the slide at index 0, etc... You can change that by using the data-slidizle-slide-id attribute like this
<div class="my-cool-slider" data-slidizle>
<ul class="my-cool-slider-content" data-slidizle-content>
<li class="my-cool-slide" data-slidizle-slide-id="my-first-slide">
Hello world
</li>
<li class="my-cool-slide" data-slidizle-slide-id="my-second-slide">
Hello world
</li>
<li class="my-cool-slide" data-slidizle-slide-id="my-third-slide">
Hello world
</li>
</ul>
<ul class="my-cool-navigation" data-slidizle-navigation>
<li data-slidizle-slide-id="my-second-slide">Navigation item 1 that trigger slide 2</li>
<li data-slidizle-slide-id="my-first-slide">Navigation item 2 that trigger slide 1</li>
<li data-slidizle-slide-id="my-third-slide">Navigation item 3 that trigger slide 3</li>
</ul>
</div>