• Stars
    star
    28,260
  • Rank 622 (Top 0.02 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 10 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

the last carousel you'll ever need

slick

the last carousel you'll ever need

Demo

http://kenwheeler.github.io/slick

CDN

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>:

<!-- Add the slick-theme.css if you want default styling -->
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.css"/>
<!-- Add the slick-theme.css if you want default styling -->
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick-theme.css"/>

Then, before your closing <body> tag add:

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/slick/slick.min.js"></script>

Package Managers

# Bower
bower install --save slick-carousel

# NPM
npm install slick-carousel

Contributing

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.

Example:

<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>

Settings

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
Responsive Option Example

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

$(".slider").slick({

  // 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

    }]
});

Events

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){
  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

Methods

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

// Add a slide
$('.your-element').slick('slickAdd',"<div></div>");

// 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
$('.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 options to corresponding values.

Example

Initialize with:

$(element).slick({
  dots: true,
  speed: 500
});

Change the speed with:

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

Destroy with:

$(element).slick('unslick');

Sass Variables

Variable Type Default Description
$slick-font-path string "./fonts/" Directory path for the slick icon font
$slick-font-family string "slick" Font-family for slick icon font
$slick-loader-path string "./" Directory path for the loader image
$slick-arrow-color color white Color of the left/right arrow icons
$slick-dot-color color black Color of the navigation dots
$slick-dot-color-active color $slick-dot-color Color of the active navigation dot
$slick-prev-character string '\2190' Unicode character code for the previous arrow icon
$slick-next-character string '\2192' Unicode character code for the next arrow icon
$slick-dot-character string '\2022' Unicode character code for the navigation dot icon
$slick-dot-size pixels 6px Size of the navigation dots

Browser support

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

Dependencies

jQuery 1.7

License

Copyright (c) 2017 Ken Wheeler

Licensed under the MIT license.

Free as in Bacon.

More Repositories

1

mcfly

Flux architecture made easy
JavaScript
762
star
2

brogrammer-theme

Brogrammer is a flat sexy Sublime Text theme. Pushups not included.
JavaScript
650
star
3

guff

SASS framework for gentlemen
CSS
254
star
4

reactive2015

Reactive2015 Contest Entry
Objective-C
179
star
5

hooks-drum-machine

React Day Berlin Demo
JavaScript
177
star
6

camlsynth

OCaml
158
star
7

structure

Declarative flexbox grid framework
CSS
140
star
8

browserSwipe

Swipe your browser like you swipe your phone
CSS
105
star
9

broceanic-theme

Broceanic Sublime Text Theme
JavaScript
78
star
10

react-amsterdam-demos

Demos from 2018 React Amsterdam talk
JavaScript
62
star
11

handsome.js

Javascript Form UI Replacements
JavaScript
54
star
12

react-native-game-kit

JavaScript
49
star
13

glow-in-the-dark-gucci-shark-bites-vim

14k cobra whiskers for your nvim pleasure
Vim Script
47
star
14

react-canvas-experiment

blurhhhhh
JavaScript
41
star
15

InstaLax

Slide based responsive parallax
JavaScript
40
star
16

react-hunt

React Duck Hunt for ExponentJS React Conf Contest
JavaScript
27
star
17

nipple

Mobile Finger Navigation
JavaScript
23
star
18

roundabout

A Responsive Swipeable Carousel
JavaScript
20
star
19

mobile-preview

Atom Editor package that opens either a remote/local url or your current file in a mobile preview panel
CoffeeScript
19
star
20

dispatch

Global events manager
CSS
18
star
21

biff-boilerplate

Boilerplate Project for Biff, ES6, Webpack & React
JavaScript
17
star
22

gulp-helper

Gulp view/helper for Atom Editor
CoffeeScript
16
star
23

app-browser

nothing to see here
JavaScript
15
star
24

gamekit-native-demo

Objective-C
14
star
25

porkRoll.js

Turn JSON into HTML. Magically.
JavaScript
12
star
26

rn-getting-started

Sample application for react native workshop
JavaScript
11
star
27

apollo-workshop

Phoenix Apollo Workshop
JavaScript
11
star
28

detectAutoComplete

Detect and apply change events to inputs and selects when forms are autopopulated
JavaScript
10
star
29

brogrammer-ui

Pushup Powered Atom Editor Theme
CSS
10
star
30

task-list

Task list viewer based on TODO comments for Atom Editor
CoffeeScript
9
star
31

brogrammer-syntax

Atom syntax theme
CSS
9
star
32

react-postocracy

move along
JavaScript
8
star
33

mobile-day-demo

Mobile Day ExponentJS Demo
JavaScript
8
star
34

brogrammer-devtools

Devtools theme
CSS
8
star
35

kenwheeler.io-old-

Bout time
JavaScript
7
star
36

ng-preso

Please don't look at this
TypeScript
6
star
37

silo

Nothing to see here. Move along
JavaScript
5
star
38

808-bass-synth

808 Bass Synth, in the browser
TypeScript
5
star
39

workshop

Redux Workshop
JavaScript
5
star
40

glow-in-the-dark-gucci-shark-bites-hyperterm

Simply stupendous Hyperterm theme
JavaScript
5
star
41

language-demandware

Demandware syntax highlighting package for Atom Editor
CoffeeScript
5
star
42

ReasonDraw

Really simple OpenGL drawing with ReasonML
Rust
4
star
43

apollo-workshop-api

Phoenix Apollo Workshop API
JavaScript
4
star
44

lookbook

lookbook
PHP
3
star
45

jTab

jQuery Tab Order Plugin
JavaScript
3
star
46

react-conf

React Conf deck
JavaScript
3
star
47

app-template

move along
JavaScript
3
star
48

Parse-Todos

Example of persistent ToDos with Facebook authentication using Thorax and Parse
JavaScript
3
star
49

coworks-workshop

JavaScript
1
star
50

megapop-demo

JavaScript
1
star