the last carousel you'll ever need





GitHub Stars



Last Commit

2yrs ago








Type Definitions






the last carousel you'll ever need

Changes (compared to original)

Removes the need for jquery as a module and hereby makes it possible to load jquery form elsewhere



To start working with Slick right away, there's a couple of CDN choices availabile to serve the files as close, and fast as possible to your users:

#####Example using jsDelivr

Just add a link to the css file in your <head>:

<link rel="stylesheet" type="text/css" href="//"/>
<!-- Add the slick-theme.css if you want default styling -->
<link rel="stylesheet" type="text/css" href="//"/>

Then, before your closing <body> tag add:

<script type="text/javascript" src="//"></script>

Package Managers

# Bower
bower install --save slick-carousel

npm install slick-carousel


PLEASE review CONTRIBUTING.markdown prior to requesting a feature, filing a pull request or filing an issue.

Data Attribute Settings

In slick 1.5 you can now add settings using the data-slick attribute. You still need to call $(element).slick() to initialize slick on the element.


<div data-slick='{"slidesToShow": 4, "slidesToScroll": 4}'>


accessibilitybooleantrueEnables tabbing and arrow key navigation
adaptiveHeightbooleanfalseAdapts slider height to the current slide
autoplaybooleanfalseEnables auto play of slides
autoplaySpeedint3000Auto play change interval
centerModebooleanfalseEnables centered view with partial prev/next slides. Use with odd numbered slidesToShow counts.
centerPaddingstring'50px'Side padding when in center mode. (px or %)
cssEasestring'ease'CSS3 easing
customPagingfunctionn/aCustom paging templates. See source for use example.
dotsbooleanfalseCurrent slide indicator dots
dotsClassstring'slick-dots'Class for slide indicator dots container
draggablebooleantrueEnables desktop dragging
easingstring'linear'animate() fallback easing
edgeFrictioninteger0.15Resistance when swiping edges of non-infinite carousels
fadebooleanfalseEnables fade
arrowsbooleantrueEnable Next/Prev arrows
appendArrowsstring$(element)Change where the navigation arrows are attached (Selector, htmlString, Array, Element, jQuery object)
appendDotsstring$(element)Change where the navigation dots are attached (Selector, htmlString, Array, Element, jQuery object)
mobileFirstbooleanfalseResponsive settings use mobile first calculation
prevArrowstring (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.
nextArrowstring (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.
infinitebooleantrueInfinite looping
initialSlideinteger0Slide to start on
lazyLoadstring'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.
pauseOnFocusbooleantruePauses autoplay when slider is focussed
pauseOnHoverbooleantruePauses autoplay on hover
pauseOnDotsHoverbooleanfalsePauses autoplay when a dot is hovered
respondTostring'window'Width that responsive object responds to. Can be 'window', 'slider' or 'min' (the smaller of the two).
responsivearraynullArray 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.
rowsint1Setting this to more than 1 initializes grid mode. Use slidesPerRow to set how many slides should be in each row.
slidestring''Slide element query
slidesPerRowint1With grid mode initialized via the rows option, this sets how many slides are in each grid row.
slidesToShowint1# of slides to show at a time
slidesToScrollint1# of slides to scroll at a time
speedint300Transition speed
swipebooleantrueEnables touch swipe
swipeToSlidebooleanfalseSwipe to slide irrespective of slidesToScroll
touchMovebooleantrueEnables slide moving with touch
touchThresholdint5To advance slides, the user must swipe a length of (1/touchThreshold) * the width of the slider.
useCSSbooleantrueEnable/Disable CSS Transitions
useTransformbooleantrueEnable/Disable CSS Transforms
variableWidthbooleanfalseDisables automatic slide width calculation
verticalbooleanfalseVertical slide direction
verticalSwipingbooleanfalseChanges swipe direction to vertical
rtlbooleanfalseChange the slider's direction to become right-to-left
waitForAnimatebooleantrueIgnores requests to advance the slide while animating
zIndexnumber1000Set the zIndex values for slides, useful for IE9 and lower
Responsive Option Example

The responsive option, and value, is quite unique and powerful. You can use it like so:


  // normal options...
  infinite: false,

  // the magic
  responsive: [{

      breakpoint: 1024,
      settings: {
        slidesToShow: 3,
        infinite: true

    }, {

      breakpoint: 600,
      settings: {
        slidesToShow: 2,
        dots: true

    }, {

      breakpoint: 300,
      settings: "unslick" // destroys slick



In slick 1.4, callback methods were deprecated and replaced with events. Use them before the initialization of slick as shown below:

// On swipe event
$('.your-element').on('swipe', function(event, slick, 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){
afterChangeevent, slick, currentSlideAfter slide change callback
beforeChangeevent, slick, currentSlide, nextSlideBefore slide change callback
breakpointevent, slick, breakpointFires after a breakpoint is hit
destroyevent, slickWhen slider is destroyed, or unslicked.
edgeevent, slick, directionFires when an edge is overscrolled in non-infinite mode.
initevent, slickWhen Slick initializes for the first time callback. Note that this event should be defined before initializing the slider.
reInitevent, slickEvery time Slick (re-)initializes callback
setPositionevent, slickEvery time Slick recalculates position
swipeevent, slick, directionFires after swipe/drag
lazyLoadedevent, slick, image, imageSourceFires after image loads lazily
lazyLoadErrorevent, slick, image, imageSourceFires after image fails to load


Methods are called on slick instances through the slick method itself in version 1.4, see below:

// Add a slide

// Get the current slide
var currentSlide = $('.your-element').slick('slickCurrentSlide');

This new syntax allows you to call any internal slick method as well:

// Manually refresh positioning of slick
slickoptions : objectInitializes Slick
unslickDestroys Slick
slickNextTriggers next slide
slickPrevTriggers previous slide
slickPausePause Autoplay
slickPlayStart Autoplay (will also set autoplay option to true)
slickGoToindex : int, dontAnimate : boolGoes to slide by index, skipping animation if second parameter is set to true
slickCurrentSlideReturns the current slide index
slickAddelement : html or DOM object, index: int, addBefore: boolAdd 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
slickRemoveindex: int, removeBefore: boolRemove 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.
slickFilterfilter : selector or functionFilters slides using jQuery .filter syntax
slickUnfilterRemoves applied filter
slickGetOptionoption : string(option name)Gets an option value.
slickSetOptionchange an option, refresh is always boolean and will update UI changes...
option, value, refreshchange a single option to given value; refresh is optional.
"responsive", [{ breakpoint: n, settings: {} }, ... ], refreshchange or add whole sets of responsive options
{ option: value, option: value, ... }, refreshchange multiple options to corresponding values.


Initialize with:

  dots: true,
  speed: 500

Change the speed with:

$(element).slick('slickSetOption', 'speed', 5000, true);

Destroy with:


Sass Variables

$slick-font-pathstring"./fonts/"Directory path for the slick icon font
$slick-font-familystring"slick"Font-family for slick icon font
$slick-loader-pathstring"./"Directory path for the loader image
$slick-arrow-colorcolorwhiteColor of the left/right arrow icons
$slick-dot-colorcolorblackColor of the navigation dots
$slick-dot-color-activecolor$slick-dot-colorColor of the active navigation dot
$slick-prev-characterstring'\2190'Unicode character code for the previous arrow icon
$slick-next-characterstring'\2192'Unicode character code for the next arrow icon
$slick-dot-characterstring'\2022'Unicode character code for the navigation dot icon
$slick-dot-sizepixels6pxSize of the navigation dots

Browser support

Slick works on IE8+ in addition to other modern browsers such as Chrome, Firefox, and Safari.


jQuery 1.7


Copyright (c) 2014 Ken Wheeler

Licensed under the MIT license.

Free as in Bacon.

Rate & Review

Great Documentation0
Easy to Use0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Unwelcoming Community0
No reviews found
Be the first to rate


No alternatives found


No tutorials found
Add a tutorial