Slick slider is a flexible, responsive and swipe enabled jQuery plugin that creates fully functional carousel as per your requirements. It has many predefined options to customize the carousel and you can customize it easily.
1. Include the Javascript slick.js
at the bottom of the web page.
<script src="path/to/slick.js"></script>
2. Include the CSS slick.css
in the header of the page.
<link rel="stylesheet" href="path/to/slick.css">
3. For default styling you can add slick-theme.css
.
<link rel="stylesheet" href="path/to/slick-theme.css">
4. Add the basic HTML to the page.
<div class="single-item">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
5. Initialize the plugin and we're ready to go.
$('.single-item').slick();
<div data-slick='{"slidesToShow": 4, "slidesToScroll": 4}'>
<div><h3>1</h3></div>
<div><h3>2</h3></div>
<div><h3>3</h3></div>
<div><h3>4</h3></div>
<div><h3>5</h3></div>
<div><h3>6</h3></div>
</div>
Option | Type | Default | Description |
---|---|---|---|
accessibility | boolean | true | Enables tabbing and arrow key navigation. Unless autoplay: true , sets browser focus to current slide (or first of current slide set, if multiple slidesToShow ) after slide change. For full a11y compliance enable focusOnChange in addition to this. |
adaptiveHeight | boolean | false | Adapts slider height to the current slide |
appendArrows | string | $(element) | Change where the navigation arrows are attached (Selector, htmlString, Array, Element, jQuery object) |
appendDots | string | $(element) | Change where the navigation dots are attached (Selector, htmlString, Array, Element, jQuery object) |
arrows | boolean | true | Enable Next/Prev arrows |
asNavFor | string | $(element) | Enables syncing of multiple sliders |
autoplay | boolean | false | Enables auto play of slides |
autoplaySpeed | int | 3000 | Auto play change interval |
centerMode | boolean | false | Enables centered view with partial prev/next slides. Use with odd numbered slidesToShow counts. |
centerPadding | string | '50px' | Side padding when in center mode. (px or %) |
cssEase | string | 'ease' | CSS3 easing |
customPaging | function | n/a | Custom paging templates. See source for use example. |
dots | boolean | false | Current slide indicator dots |
dotsClass | string | 'slick-dots' | Class for slide indicator dots container |
draggable | boolean | true | Enables desktop dragging |
easing | string | 'linear' | animate() fallback easing |
edgeFriction | integer | 0.15 | Resistance when swiping edges of non-infinite carousels |
fade | boolean | false | Enables fade |
focusOnSelect | boolean | false | Enable focus on selected element (click) |
focusOnChange | boolean | false | Puts focus on slide after change |
infinite | boolean | true | Infinite looping |
initialSlide | integer | 0 | Slide to start on |
lazyLoad | string | 'ondemand' | Accepts 'ondemand' or 'progressive' for lazy load technique. 'ondemand' will load the image as soon as you slide to it, 'progressive' loads one image after the other when the page loads. |
mobileFirst | boolean | false | Responsive settings use mobile first calculation |
nextArrow | string (html | jQuery selector) | object (DOM node | jQuery object) | <button type="button" class="slick-next">Next</button> |
Allows you to select a node or customize the HTML for the "Next" arrow. |
pauseOnDotsHover | boolean | false | Pauses autoplay when a dot is hovered |
pauseOnFocus | boolean | true | Pauses autoplay when slider is focussed |
pauseOnHover | boolean | true | Pauses autoplay on hover |
prevArrow | string (html | jQuery selector) | object (DOM node | jQuery object) | <button type="button" class="slick-prev">Previous</button> |
Allows you to select a node or customize the HTML for the "Previous" arrow. |
respondTo | string | 'window' | Width that responsive object responds to. Can be 'window', 'slider' or 'min' (the smaller of the two). |
responsive | array | null | Array of objects containing breakpoints and settings objects (see example). Enables settings at given breakpoint . Set settings to "unslick" instead of an object to disable slick at a given breakpoint. |
rows | int | 1 | Setting this to more than 1 initializes grid mode. Use slidesPerRow to set how many slides should be in each row. |
rtl | boolean | false | Change the slider's direction to become right-to-left |
slide | string | '' | Slide element query |
slidesPerRow | int | 1 | With grid mode initialized via the rows option, this sets how many slides are in each grid row. |
slidesToScroll | int | 1 | # of slides to scroll at a time |
slidesToShow | int | 1 | # of slides to show at a time |
speed | int | 300 | Transition speed |
swipe | boolean | true | Enables touch swipe |
swipeToSlide | boolean | false | Swipe to slide irrespective of slidesToScroll |
touchMove | boolean | true | Enables slide moving with touch |
touchThreshold | int | 5 | To advance slides, the user must swipe a length of (1/touchThreshold) * the width of the slider. |
useCSS | boolean | true | Enable/Disable CSS Transitions |
useTransform | boolean | true | Enable/Disable CSS Transforms |
variableWidth | boolean | false | Disables automatic slide width calculation |
vertical | boolean | false | Vertical slide direction |
verticalSwiping | boolean | false | Changes swipe direction to vertical |
waitForAnimate | boolean | true | Ignores requests to advance the slide while animating |
zIndex | number | 1000 | Set the zIndex values for slides, useful for IE9 and lower |
// On swipe event
$('.your-element').on('swipe', function(event, slick, direction){
console.log(direction);
// left
});
// On edge hit
$('.your-element').on('edge', function(event, slick, direction){
console.log('edge was hit')
});
// On before slide change
$('.your-element').on('beforeChange', function(event, slick, currentSlide, nextSlide){
console.log(nextSlide);
});
Event | Params | Description |
---|---|---|
afterChange | event, slick, currentSlide | After slide change callback |
beforeChange | event, slick, currentSlide, nextSlide | Before slide change callback |
breakpoint | event, slick, breakpoint | Fires after a breakpoint is hit |
destroy | event, slick | When slider is destroyed, or unslicked. |
edge | event, slick, direction | Fires when an edge is overscrolled in non-infinite mode. |
init | event, slick | When Slick initializes for the first time callback. Note that this event should be defined before initializing the slider. |
reInit | event, slick | Every time Slick (re-)initializes callback |
setPosition | event, slick | Every time Slick recalculates position |
swipe | event, slick, direction | Fires after swipe/drag |
lazyLoaded | event, slick, image, imageSource | Fires after image loads lazily |
lazyLoadError | event, slick, image, imageSource | Fires after image fails to load |
// Add a slide
$('.your-element').slick('slickAdd',"<div></div>");
// Get the current slide
var currentSlide = $('.your-element').slick('slickCurrentSlide');
// Manually refresh positioning of slick
$('.your-element').slick('setPosition');
Method | Argument | Description |
---|---|---|
slick |
options : object | Initializes Slick |
unslick |
Destroys Slick | |
slickNext |
Triggers next slide | |
slickPrev |
Triggers previous slide | |
slickPause |
Pause Autoplay | |
slickPlay |
Start Autoplay (will also set autoplay option to true ) |
|
slickGoTo |
index : int, dontAnimate : bool | Goes to slide by index, skipping animation if second parameter is set to true |
slickCurrentSlide |
Returns the current slide index | |
slickAdd |
element : html or DOM object, index: int, addBefore: bool | Add a slide. If an index is provided, will add at that index, or before if addBefore is set. If no index is provided, add to the end or to the beginning if addBefore is set. Accepts HTML String |
slickRemove |
index: int, removeBefore: bool | Remove slide by index. If removeBefore is set true, remove slide preceding index, or the first slide if no index is specified. If removeBefore is set to false, remove the slide following index, or the last slide if no index is set. |
slickFilter |
filter : selector or function | Filters slides using jQuery .filter syntax |
slickUnfilter |
Removes applied filter | |
slickGetOption |
option : string(option name) | Gets an option value. |
slickSetOption |
change an option, refresh is always boolean and will update UI changes... |
|
option, value, refresh |
change a single option to given value ; refresh is optional. |
|
"responsive", [{ breakpoint: n, settings: {} }, ... ], refresh |
change or add whole sets of responsive options | |
{ option: value, option: value, ... }, refresh |
change multiple option s to corresponding value s. |
<div class="single-item">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
$('.single-item').slick();
<div class="multiple-items">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>
$('.multiple-items').slick({
infinite: true,
slidesToShow: 3,
slidesToScroll: 3
});
<div class="responsive">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>
$('.responsive').slick({
dots: true,
infinite: false,
speed: 300,
slidesToShow: 4,
slidesToScroll: 4,
responsive: [
{
breakpoint: 1024,
settings: {
slidesToShow: 3,
slidesToScroll: 3,
infinite: true,
dots: true
}
},
{
breakpoint: 600,
settings: {
slidesToShow: 2,
slidesToScroll: 2
}
},
{
breakpoint: 480,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}
}
// You can unslick at a given breakpoint now by adding:
// settings: "unslick"
// instead of a settings object
]
});
<div class="center">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>
$('.center').slick({
centerMode: true,
centerPadding: '60px',
slidesToShow: 3,
responsive: [
{
breakpoint: 768,
settings: {
arrows: false,
centerMode: true,
centerPadding: '40px',
slidesToShow: 3
}
},
{
breakpoint: 480,
settings: {
arrows: false,
centerMode: true,
centerPadding: '40px',
slidesToShow: 1
}
}
]
});