Skip to content

API ​

Settings ​

NameTypeDefaultDescription
accessibilitybooleantrueEnables arrow-key navigation on the slider, aria-hidden on inactive/cloned slides, and role="tablist"/aria-selected on dots.
adaptiveHeightbooleanfalseResizes .slick-list to match the height of the current slide.
arrowsbooleantrueShows prev/next arrows (hidden automatically once slideCount <= slidesToShow).
autoplaybooleanfalseAutomatically advances slides on an interval.
autoplaySpeednumber3000Milliseconds between auto-advances.
centerModebooleanfalseCenters the active slide with partial neighbor slides visible on both sides.
centerPaddingstring'50px'CSS length reserved on each side of the list in centerMode.
cssEasestring'ease'CSS transition-timing-function used for the track's transform transition.
dotsbooleanfalseShows pagination dots below the slider (adds slick-dotted to the root element).
dotsClassstring'slick-dots'Class name applied to the dots <ul>.
draggablebooleantrueEnables mouse-drag dragging in addition to touch.
easingstring'linear'Accepted for react-slick API compatibility only — has no effect. See Limitations.
edgeFrictionnumber0.35Resistance multiplier applied to drag movement past the first/last slide in finite mode.
fadebooleanfalseCrossfades slides in place instead of sliding the track.
focusOnSelectbooleanfalseClicking a partially visible slide navigates to it.
infinitebooleantrueWraps around at the ends using cloned slides.
initialSlidenumber0Index of the slide shown on mount.
lazyLoad'ondemand' | 'progressive' | nullnullEnables data-lazy image loading — 'ondemand' promotes images as their slide becomes active, 'progressive' loads all of them in the background after mount.
mobileFirstbooleanfalseWhen true, responsive breakpoints match viewport widths >= the breakpoint instead of <=.
pauseOnDotsHoverbooleanfalsePauses autoplay while hovering the dots.
pauseOnFocusbooleantruePauses autoplay while the slider has focus.
pauseOnHoverbooleantruePauses autoplay while hovering the slider.
responsive{ breakpoint: number, settings: Partial<Settings> | 'unslick' }[] | nullnullBreakpoint-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.
rowsnumber1Number of rows per slide group (grid mode); combine with slidesPerRow.
rtlbooleanfalseRight-to-left layout; also flips which arrow key navigates forward/back.
slidesPerRownumber1Number of slides per row when rows > 1.
slidesToShownumber1Number of slides visible at once.
slidesToScrollnumber1Number of slides advanced per navigation.
speednumber500Transition duration in milliseconds.
swipebooleantrueEnables touch/pointer swipe navigation.
swipeToSlidebooleanfalseLets a drag land on any slide (nearest-slide snap) rather than always moving by slidesToScroll.
touchMovebooleantrueGates 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.
touchThresholdnumber5Divisor of the list width used to compute the drag distance required to trigger navigation.
useCSSbooleantrueEnables the CSS transition on the track/slide; false makes changes apply instantly.
useTransformbooleantruePositions the track with transform: translate3d; false uses left/top instead (still CSS-transitioned).
variableWidthbooleanfalseSlides size to their own content width instead of an even split of the list.
verticalbooleanfalseStacks and navigates slides vertically instead of horizontally.
verticalSwipingbooleanfalseEnables vertical-axis dragging when vertical is true.
waitForAnimatebooleantrueIgnores new navigation requests while a transition is already in progress.

Events ​

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

MethodDescription
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.
currentSlideRead-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 ​

SlotPropsPurpose
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, and cssEase is the supported control for the timing curve.
  • useCSS: false and useTransform: false are honored (see the settings table above) but are legacy escape hatches carried over from react-slick, not the recommended path.