API
Settings
| Name | Type | Default | Description |
|---|---|---|---|
accessibility | boolean | true | Enables arrow-key navigation on the slider, aria-hidden on inactive/cloned slides, and role="tablist"/aria-selected on dots. |
adaptiveHeight | boolean | false | Resizes .slick-list to match the height of the current slide. |
arrows | boolean | true | Shows prev/next arrows (hidden automatically once slideCount <= slidesToShow). |
autoplay | boolean | false | Automatically advances slides on an interval. |
autoplaySpeed | number | 3000 | Milliseconds between auto-advances. |
centerMode | boolean | false | Centers the active slide with partial neighbor slides visible on both sides. |
centerPadding | string | '50px' | CSS length reserved on each side of the list in centerMode. |
cssEase | string | 'ease' | CSS transition-timing-function used for the track's transform transition. |
dots | boolean | false | Shows pagination dots below the slider (adds slick-dotted to the root element). |
dotsClass | string | 'slick-dots' | Class name applied to the dots <ul>. |
draggable | boolean | true | Enables mouse-drag dragging in addition to touch. |
easing | string | 'linear' | Accepted for react-slick API compatibility only — has no effect. See Limitations. |
edgeFriction | number | 0.35 | Resistance multiplier applied to drag movement past the first/last slide in finite mode. |
fade | boolean | false | Crossfades slides in place instead of sliding the track. |
focusOnSelect | boolean | false | Clicking a partially visible slide navigates to it. |
infinite | boolean | true | Wraps around at the ends using cloned slides. |
initialSlide | number | 0 | Index of the slide shown on mount. |
lazyLoad | 'ondemand' | 'progressive' | null | null | Enables data-lazy image loading — 'ondemand' promotes images as their slide becomes active, 'progressive' loads all of them in the background after mount. |
mobileFirst | boolean | false | When true, responsive breakpoints match viewport widths >= the breakpoint instead of <=. |
pauseOnDotsHover | boolean | false | Pauses autoplay while hovering the dots. |
pauseOnFocus | boolean | true | Pauses autoplay while the slider has focus. |
pauseOnHover | boolean | true | Pauses autoplay while hovering the slider. |
responsive | { breakpoint: number, settings: Partial<Settings> | 'unslick' }[] | null | null | Breakpoint-specific setting overrides; 'unslick' renders a plain unstyled list at that breakpoint. |
respondTo | 'window' | 'slider' | 'min' | 'window' | Which width drives responsive breakpoint matching — the window, the slider container, or the smaller of the two. |
rows | number | 1 | Number of rows per slide group (grid mode); combine with slidesPerRow. |
rtl | boolean | false | Right-to-left layout; also flips which arrow key navigates forward/back. |
slidesPerRow | number | 1 | Number of slides per row when rows > 1. |
slidesToShow | number | 1 | Number of slides visible at once. |
slidesToScroll | number | 1 | Number of slides advanced per navigation. |
speed | number | 500 | Transition duration in milliseconds. |
swipe | boolean | true | Enables touch/pointer swipe navigation. |
swipeToSlide | boolean | false | Lets a drag land on any slide (nearest-slide snap) rather than always moving by slidesToScroll. |
touchMove | boolean | true | Gates the whole drag/swipe layer: false disables pointer dragging entirely (not just the visual "follow the finger" motion). Splitting that from swipe for full react-slick parity is a deferred fast-follow. |
touchThreshold | number | 5 | Divisor of the list width used to compute the drag distance required to trigger navigation. |
useCSS | boolean | true | Enables the CSS transition on the track/slide; false makes changes apply instantly. |
useTransform | boolean | true | Positions the track with transform: translate3d; false uses left/top instead (still CSS-transitioned). |
variableWidth | boolean | false | Slides size to their own content width instead of an even split of the list. |
vertical | boolean | false | Stacks and navigates slides vertically instead of horizontally. |
verticalSwiping | boolean | false | Enables vertical-axis dragging when vertical is true. |
waitForAnimate | boolean | true | Ignores new navigation requests while a transition is already in progress. |
Events
| Event | Payload | Fires when |
|---|---|---|
init | — | The carousel has mounted. |
re-init | — | The matched responsive breakpoint entry changes. |
before-change | (from: number, to: number) | Just before the current slide changes. |
after-change | (current: number) | After a slide change completes. |
edge | (direction: 'left' | 'right') | Navigation is attempted past the first/last slide in finite mode. |
swipe | (direction: string) | A drag/swipe gesture completes. |
lazy-load | (indexes: number[]) | data-lazy images finish loading for the given slide indexes. |
lazy-load-error | (index: number) | A data-lazy image fails to load. |
update:currentSlide | (index: number) | The active slide index changes — pair with v-model:currentSlide. |
Exposed methods
Access via a template ref on <SlickCarousel ref="slick">:
| Method | Description |
|---|---|
next() | Advance by slidesToScroll. |
prev() | Go back by slidesToScroll. |
goTo(index: number, dontAnimate?: boolean) | Jump to a specific slide index. |
play() | (Re)start autoplay. |
pause() | Stop autoplay. |
currentSlide | Read-only current slide index. |
goToUnsync(index) is also exposed; it exists to support asNavFor synchronization (it navigates without propagating back to a linked carousel, preventing ping-pong) and is not intended for direct use.
Slots
| Slot | Props | Purpose |
|---|---|---|
| default | — | Slide content — one child per slide (v-for works). |
prev-arrow | { disabled, onClick } | Replace the prev arrow's markup. |
next-arrow | { disabled, onClick } | Replace the next arrow's markup. |
dots | { dots: { count, current } } | Replace the whole dots list (equivalent to react-slick's appendDots). |
custom-paging | { index } | Replace an individual dot's content (equivalent to customPaging(i)). |
Limitations
easing(jQuery-animation easing name in the original slick/react-slick) is accepted for API compatibility but is a documented no-op — this port drives transitions with native CSS transitions, andcssEaseis the supported control for the timing curve.useCSS: falseanduseTransform: falseare honored (see the settings table above) but are legacy escape hatches carried over from react-slick, not the recommended path.