slick-carousel-react-web-component v0.0.3
Slick Carousel Web Component
The Slick Carousel Web Component is a feature-rich web component that wraps react-slick carousel functionality. It provides an easy-to-use carousel experience with extensive customization options through HTML attributes.
Features
- Web Component-based carousel makes it easy to include in any HTML or modern web framework.
- Extensive customization through HTML attributes in kebab-case.
- Access to all
react-slickfunctionalities. - Fully responsive with touch and swipe features.
Installation
As a web component, slick-carousel should be included directly in your web project. Make sure to reference the JavaScript file that registers the custom element.
<script
type="module"
src="https://unpkg.com/slick-carousel-react-web-component"
></script>Usage
To use the slick-carousel in your web page, define the carousel element and pass the desired properties:
<slick-carousel autoplay="true" slides-to-show="3" infinite="true">
<img src="https://picsum.photos/1980/1080?1" alt="Description" />
<img src="https://picsum.photos/1980/1080?2" alt="Description" />
<img src="https://picsum.photos/1980/1080?3" alt="Description" />
<img src="https://picsum.photos/1980/1080?4" alt="Description" />
<!-- Additional slides -->
</slick-carousel>Properties
The web component supports the following properties for customization:
accessibility(Boolean): Enables tabbing and arrow key navigation. Defaults totrue.adaptive-height(Boolean): Adapts slider height to the current slide. Defaults tofalse.autoplay(Boolean): Enables auto play of slides. Defaults tofalse.autoplay-speed(Number): Auto play change interval in milliseconds. Defaults to3000.center-mode(Boolean): Enables centered view with partial prev/next slides. Defaults tofalse.center-padding(String): Side padding when in center mode (px or %). Defaults to'50px'.dots(Boolean): Shows current slide indicator dots. Defaults tofalse.infinite(Boolean): Enables infinite looping of slides. Defaults totrue.pause-on-hover(Boolean): Pauses autoplay on hover. Defaults totrue.rows(Number): Number of rows per slide. Defaults to1.slides-per-row(Number): Number of slides per row in grid mode. Defaults to1.slides-to-scroll(Number): Number of slides to scroll at once. Defaults to1.slides-to-show(Number): Number of slides to show at once. Defaults to1.speed(Number): Transition speed in milliseconds. Defaults to300.swipe(Boolean): Enables touch swipe. Defaults totrue.vertical(Boolean): Enables vertical slide direction. Defaults tofalse.arrows(Boolean): Shows next/prev navigation arrows. Defaults totrue.dot-class(String): Class for slide indicator dots container. Defaults to'slick-dots'.draggable(Boolean): Enables desktop dragging. Defaults totrue.fade(Boolean): Enables fade effect for slides. Defaults tofalse.focus-on-select(Boolean): Enables focus on selected element when clicked. Defaults tofalse.rtl(Boolean): Changes the slider's direction to right-to-left. Defaults tofalse.swipe-to-slide(Boolean): Allows swiping to any slide regardless ofslides-to-scroll. Defaults tofalse.variable-width(Boolean): Allows variable width for slides. Defaults tofalse.z-index(Number): Sets the zIndex for slides. Defaults to1000.as-nav-for(String): Selector or HTMLElement to sync with another carousel.css-ease(String): CSS3 easing string for slide animation. Defaults to'ease'.easing(String): jQuery easing string for animate() fallback. Defaults to'linear'.edge-friction(Number): Resistance when swiping edges of non-infinite carousels. Defaults to0.15.lazy-load(String): Sets lazy load technique, accepts'ondemand'or'progressive'. Defaults to'ondemand'.mobile-first(Boolean): Uses mobile-first calculation for responsive settings. Defaults tofalse.pause-on-dots-hover(Boolean): Pauses autoplay when a dot is hovered. Defaults tofalse.pause-on-focus(Boolean): Pauses autoplay when the slider is focused. Defaults totrue.respond-to(String): Selector to set width for responsive settings. Defaults to'window'.responsive(String): JSON stringified array of breakpoint and settings objects for responsive settings.touch-move(Boolean): Allows slides to move with touch. Defaults totrue.touch-threshold(Number): Threshold for swipe length to advance slides. Defaults to5.use-css(Boolean): Enables/Disables CSS Transitions. Defaults totrue.use-transform(Boolean): Enables/Disables CSS Transforms. Defaults totrue.vertical-swiping(Boolean): Allows vertical swiping. Defaults tofalse.wait-for-animate(Boolean): Ignores requests to advance slides while animating. Defaults totrue.
<slick-carousel
accessibility="true"
adaptive-height="false"
arrows="true"
autoplay="false"
autoplay-speed="3000"
center-mode="false"
center-padding="50px"
css-ease="ease"
dots="false"
dots-class="slick-dots"
draggable="true"
easing="linear"
edge-friction="0.15"
fade="false"
focus-on-select="false"
focus-on-change="false"
infinite="true"
initial-slide="0"
lazy-load="ondemand"
mobile-first="false"
pause-on-dots-hover="false"
pause-on-focus="true"
pause-on-hover="true"
respond-to="window"
responsive='[{"breakpoint": 1024, "settings": {"slides-to-show": 1}}, {"breakpoint": 600, "settings": {"slides-to-show": 2}}]'
rows="1"
rtl="false"
slide=""
slides-per-row="1"
slides-to-scroll="1"
slides-to-show="1"
speed="300"
swipe="true"
swipe-to-slide="false"
touch-move="true"
touch-threshold="5"
use-css="true"
use-transform="true"
variable-width="false"
vertical="false"
vertical-swiping="false"
wait-for-animate="true"
z-index="1000"
>
<img src="https://picsum.photos/1980/1080?1" alt="Description" />
<img src="https://picsum.photos/1980/1080?2" alt="Description" />
<img src="https://picsum.photos/1980/1080?3" alt="Description" />
<img src="https://picsum.photos/1980/1080?4" alt="Description" />
<!-- Add more items here -->
</slick-carousel>Events
The slick-carousel web component emits custom events that you can listen to for carousel interactions and state changes. Here's a list of the events and the details they provide:
afterChange: Fired after a slide change.event.detailcontains{ currentSlide: number }.beforeChange: Fired before a slide change.event.detailcontains{ currentSlide: number, nextSlide: number }.onEdge: Fired when a swipe is detected that doesn't result in a slide change, such as at the carousel boundaries.event.detailcontains{ swipeDirection: string }.onInit: Fired after the carousel initializes.event.detailis an empty object{}.onLazyLoad: Fired when a lazy load for slides is triggered.event.detailcontains{ slidesToLoad: number[] }.onReInit: Fired when the carousel re-initializes, usually after some state change.event.detailis an empty object{}.onSwipe: Fired during a swipe interaction.event.detailcontains{ swipeDirection: string }.swipeEvent: Fired for every swipe event.event.detailcontains{ swipeDirection: string }.
To listen to carousel events, add event listeners to the slick-carousel element in your JavaScript:
const carousel = document.querySelector("slick-carousel");
carousel.addEventListener("afterChange", (event) => {
console.log("After change, current slide:", event.detail.currentSlide);
});
carousel.addEventListener("beforeChange", (event) => {
console.log(
"Before change, current slide:",
event.detail.currentSlide,
"Next slide:",
event.detail.nextSlide,
);
});
carousel.addEventListener("onEdge", (event) => {
console.log("On edge, swipe direction:", event.detail.swipeDirection);
});
carousel.addEventListener("onInit", () => {
console.log("Carousel initialized");
});
carousel.addEventListener("onLazyLoad", (event) => {
console.log("Lazy load, slides to load:", event.detail.slidesToLoad);
});
carousel.addEventListener("onReInit", () => {
console.log("Carousel re-initialized");
});
carousel.addEventListener("onSwipe", (event) => {
console.log("On swipe, direction:", event.detail.swipeDirection);
});
carousel.addEventListener("swipeEvent", (event) => {
console.log("Swipe event, direction:", event.detail.swipeDirection);
});Methods
The slick-carousel also exposes methods for programmatically controlling the carousel:
slickGoTo(index, dontAnimate): Go to a specific slide index.slickNext(): Go to the next slide.slickPrev(): Go to the previous slide.slickPlay(): Start the autoplay.slickPause(): Pause the autoplay.
To call a method, you can directly invoke it on the slick-carousel element:
const carousel = document.querySelector("slick-carousel");
// Go to the third slide without animation
carousel.slickGoTo(2, true);Styling
You can style the carousel directly with CSS or inline styles. Target the slick-carousel element and its children in your CSS file.
slick-carousel {
/* Styles for the carousel container */
}
slick-carousel img {
/* Styles for the images */
}Contributing
We encourage contributions! If you have suggestions or improvements, please fork the repository and submit a pull request.
License
Slick Carousel Web Component is released under the MIT license.