omni-carousel
Version:
A lightweight carousel to enhance scrollable areas
153 lines (104 loc) • 3.83 kB
Markdown
Configuration options
================================================================================
Configuration example
-----------------------------------------
This is a basic example that starts Omni for a carousel
while also passing a few options:
```js
import createOmniCarousel from 'omni-carousel';
const root = document.querySelector('.carousel');
const carousel = createOmniCarousel(root, {
scrollSteps: 'auto',
preloadAdjacentImages: true,
selectors: {
track: '.carousel-track',
slide: '.carousel-slide',
prevButton: '.prev-button',
nextButton: '.next-button'
}
});
carousel.init();
```
Make sure the DOM is ready before selecting your root element!
Default configuration
-----------------------------------------
```js
{
scrollAlign: 'start', // 'start' | 'center'
scrollSteps: 'one', // 'one' | 'auto'
indicatorNumbers: false,
transitionHelpers: false,
hasEqualWidths: true,
preloadAdjacentImages: false,
selectors: {
track: '[data-omni-track]',
slide: '[data-omni-slide]',
prevButton: '[data-omni-button-prev]',
nextButton: '[data-omni-button-next]',
startButton: '[data-omni-button-start]',
endButton: '[data-omni-button-end]',
indicatorArea: '[data-omni-indicators]',
indicator: '[data-omni-indicator]'
}
}
```
selectors
----------------------------------------
Omni has default selectors for the carousel elements it manages or needs to know about.
You can change any of those to any valid CSS selectors.
Default:
```js
selectors: {
track: '[data-omni-track]',
slide: '[data-omni-slide]',
prevButton: '[data-omni-button-prev]',
nextButton: '[data-omni-button-next]',
startButton: '[data-omni-button-start]',
endButton: '[data-omni-button-end]',
indicatorArea: '[data-omni-indicators]',
indicator: '[data-omni-indicator]'
}
```
scrollAlign
----------------------------------------
Default: `'start'`
Valid values: `'start'` and `'center'`
This option is an alternative to setting `scroll-snap-align` in CSS.
Omni determines the scroll alignment it will use in this order:
- `scroll-snap-align` value of the first slide (if set)
- `scrollAlign` value from the configuration if it exists
- `'start'` (default)
scrollSteps
----------------------------------------
Default: `'one'`
Valid values: `'one'` and `'auto'`
This controls how many slides the previous and next buttons scroll at a time:
either one or automatically as many as can fit.
Use `'auto'` when multiple slides are fully visible per view
and you want the buttons to scroll by *pages* of slides rather than one at a time.
indicatorNumbers
----------------------------------------
Default: `false`
Set to `true` to get numbers in the autogenerated indicators.
transitionHelpers
----------------------------------------
Default: `false`
When set to `true`, Omni adds helper classes to slides as they enter and leave the viewport:
- `is-omni-entering` for slides entering the viewport
- `is-omni-exiting` for slides leaving the viewport
These CSS classes can be used to create custom animations or visual effects during transitions.
hasEqualWidths
----------------------------------------
Default: `true`
By default Omni assumes all slides are the same width.
If you use `scrollSteps: 'auto'` **and** slides of different widths,
set to `false` so that each slide is measured separately.
This is important for Omni to be able to calculate correctly
how many slides it can bring in at each scroll step.
preloadAdjacentImages
----------------------------------------
Default: `false`
Useful for carousels with `loading="lazy"` in images.
When set to `true`, Omni removes the loading attribute from one image
on each side of the visible slides so that the image
starts loading before it enters into view.