Options
- Setup
- cellSelector
- initialIndex
- accessibility
- setGallerySize
- resize
- Cell position
- cellAlign
- contain
- imagesLoaded
- percentPosition
- rightToLeft
- Behavior
- draggable
- freeScroll
- wrapAround
- lazyLoad
- autoPlay
- watchCSS
- asNavFor
- selectedAttraction & friction
- freeScrollFriction
- UI
- prevNextButtons
- pageDots
- arrowShape
Setup
cellSelector
Specify selector for cell elements. cellSelector is useful if you have other elements in your carousel elements that are not cells.
cellSelector: '.carousel-cell'
<div class="carousel">
<div class="static-banner">Static banner 1</div>
<div class="static-banner">Static banner 2</div>
<div class="carousel-cell"></div>
<div class="carousel-cell"></div>
<div class="carousel-cell"></div>
...
</div>
initialIndex
Zero-based index of the initial selected cell.
initialIndex: 2
accessibility
Enable keyboard navigation. Users can tab to a Flickity carousel, and pressing left & right keys to change cells. Enabled by default accessibility: true.
accessibility: false
// disables being able to tab to Flickity
// and keyboard navigation
setGallerySize
Sets the height of the carousel to the height of the tallest cell. Enabled by default setGallerySize: true.
Use setGallerySize: false if you prefer to size the carousel with CSS, rather than using the size of cells.
setGallerySize: false
/* carousel height */
.carousel {
height: 160px;
}
/* cell inherit height from carousel */
.carousel-cell {
height: 100%;
}
With setGallerySize: false, you can set the size of the carousel to 100% width and height, for a "full-bleed" carousel.
setGallerySize: false
/* inherit height from parent */
.carousel { height: 100%; }
.carousel-cell { height: 100% }
/* move page dots into carousel */
.flickity-page-dots { bottom: 10px; }
You can size the carousel height as percentage of its width with padding-bottom and .flickity-viewport CSS.
setGallerySize: false
/* carousel height, as percentage of width */
.carousel {
padding-bottom: 33.3%;
}
/* viewport inherit size from carousel */
.carousel .flickity-viewport {
position: absolute;
width: 100%;
}
/* cell inherit height from carousel */
.carousel-cell {
height: 100%;
}
resize
Adjusts sizes and positions when window is resized. Enabled by default resize: true.
resize: false
// disables resize logic
/* carousel has fixed width */
.carousel {
width: 300px;
}
Cell position
cellAlign
Align cells within the carousel element.
cellAlign: 'left'
// default cellAlign: 'center'
cellAlign: 'right'
contain
Contains cells to carousel element to prevent excess scroll at beginning or end. Has no effect if wrapAround: true.
contain: true
imagesLoaded
Unloaded images have no size, which can throw off cell positions. To fix this, the imagesLoaded option re-positions cells once their images have loaded.
imagesLoaded: true
imagesLoaded requires the flickity-imagesloaded package. It already is included with flickity.pkgd.js, but not with Flickity as a stand-alone package. If you are using Browserify or RequireJS without flickity.pkgd.js, you need to install and require flickity-imagesloaded separately. See details in Extras.
percentPosition
Sets positioning in percent values, rather than pixel values. If your cells do not have percent widths, we recommended percentPosition: false.
// default percentPosition: true
// sets cell position in percentages
/* cell width in percent */
.carousel-cell {
width: 66%;
}
percentPosition: false
// sets cell position in pixels
/* cell width in pixels */
.carousel-cell {
width: 300px;
}
rightToLeft
Enables right-to-left layout.
rightToLeft: true
Behavior
draggable
Enables dragging and flicking. Enabled by default dragging: true.
draggable: false
freeScroll
Enables content to be freely scrolled and flicked without aligning cells to an end position.
freeScroll: true
Enable freeScroll and contain for a simple horizontal scroller.
freeScroll: true,
contain: true,
// disable previous & next buttons and dots
prevNextButtons: false,
pageDots: false
Enable freeScroll and wrapAround and you can flick forever, man.
freeScroll: true,
wrapAround: true
wrapAround
At the end of cells, wrap-around to the other end for infinite scrolling.
wrapAround: true
lazyLoad
Loads cell images when a cell is selected.
Set the image's URL to load with data-flickity-lazyload.
<img data-flickity-lazyload="full.jpg" />
<!-- Set optional placeholder src -->
<img src="placeholder.jpg" data-flickity-lazyload="full.jpg" />
lazyLoad: true
// lazyloads image in selected cell
<div class="carousel">
<div class="carousel-cell">
<img class="carousel-cell-image"
data-flickity-lazyload="tulip.jpg" />
</div>
<div class="carousel-cell">
<img class="carousel-cell-image"
data-flickity-lazyload="grapes.jpg" />
</div>
...
</div>
Set lazyLoad to a number to load images in adjacent cells.
lazyLoad: 2
// load images in selected cell
// and next 2 cells
// and previous 2 cells
After loading the image, Flickity will add flickity-lazyloaded class to the image, or flickity-lazyerror to a broken image. You can use this class to add a transition when images are loaded.
/* fade in image when loaded */
.carousel-cell-image {
transition: opacity 0.4s;
opacity: 0;
}
.carousel-cell-image.flickity-lazyloaded,
.carousel-cell-image.flickity-lazyerror {
opacity: 1;
}
If using natural size of images for the size of cells, set a min-width to cells have a size when images are not loaded.
<div class="carousel">
<img class="carousel-image"
data-flickity-lazyload="tulip.jpg" />
<img class="carousel-image"
data-flickity-lazyload="grapes.jpg" />
...
</div>
.carousel-image {
min-width: 150px;
}
autoPlay
Automatically advances to the next cell.
Auto-playing will pause when mouse is hovered over, and resume when mouse is hovered off. Auto-playing will stop when the carousel is clicked or a cell is selected.
autoPlay: true
// advance cells every 3 seconds
autoPlay: 1500 // {Number}
// advance cells ever {Number} milliseconds
// 1500 will advance cells every 1.5 seconds
Auto-playing will pause when the user hovers over the carousel. Set pauseAutoPlayOnHover: false to disable this behavior.
autoPlay: 1500,
pauseAutoPlayOnHover: false
// auto play continues when user hovers over carousel
watchCSS
You can enable and disable Flickity with CSS. watchCSS option watches the content of :after of the carousel element. Flickity is enabled if :after content is 'flickity'.
IE8 and Android 2.3 do not support watching :after. Flickity will be disabled when watchCSS: true. Set watchCSS: 'fallbackOn' to enable Flickity for these browsers.
watchCSS: true
// enable Flickity in CSS when
// element:after { content: 'flickity' }
// Flickity is disabled for IE8 and Android 2.3
/* enable Flickity by default */
.carousel:after {
content: 'flickity';
display: none; /* hide :after */
}
@media screen and ( min-width: 768px ) {
/* disable Flickity for large devices */
.carousel:after {
content: '';
}
}
asNavFor
Use one Flickity carousel as navigation for another.
- Clicking the nav carousel will select the content carousel.
- Selecting a cell in the content carousel will sync to the nav carousel.
// asNavFor can be set a selector string
asNavFor: '.carousel-main'
// or an element
asNavFor: $('.carousel-main')[0]
asNavFor: document.querySelector('.carousel-main')
// 1st carousel, main
$('.carousel-main').flickity();
// 2nd carousel, navigation
$('.carousel-nav').flickity({
asNavFor: '.carousel-main',
contain: true,
pageDots: false
});
/* is-nav-selected class added to nav cells */
.carousel-nav .carousel-cell.is-nav-selected {
background: #ED2;
}
asNavFor requires the flickity-as-nav-for package. It already is included with flickity.pkgd.js, but not with Flickity as a stand-alone package. If you are using Browserify or RequireJS without flickity.pkgd.js, you need to install and require flickity-as-nav-for separately. See details in Extras.
selectedAttraction & friction
selectedAttraction and friction are the two options that control the speed and motion of the slider.
selectedAttraction attracts the position of the slider to the selected cell. Higher attraction makes the slider move faster. Lower makes it move slower. Default selectedAttraction: 0.025.
friction slows the movement of slider. Higher friction makes the slider feel stickier and less bouncy. Lower friction makes the slider feel looser and more wobbly. Default friction: 0.28.
selectedAttraction: 0.2,
friction: 0.8
// higher attraction and higher friction
// faster transitions
selectedAttraction: 0.01,
friction: 0.15
// lower attraction and lower friction
// slower transitions
// easier to flick past cells
freeScrollFriction
Slows movement of slider when freeScroll: true. Higher friction makes the slider feel stickier. Lower friction makes the slider feel looser. Default freeScrollFriction: 0.075.
freeScroll: true,
freeScrollFriction: 0.03
// lower friction, slides easier
UI
prevNextButtons
Creates and enables previous & next buttons. Enabled by defaultprevNextButtons: true.
prevNextButtons: false
// Disable previous & next buttons
pageDots
Creates and enables page dots. Enabled by defaultpageDots: true.
pageDots: false
// Disable page dots
arrowShape
Draws the shape of the arrows in the previous & next buttons.
The arrow is drawn on a 100 × 100 viewbox with four points (p0, p1, p2, p3) made up of six coordinates x0, x1, y1, x2, y2, x3. The four points draw the top half on the left arrow.
Set a custom shape by setting arrowShape to a SVG path string. The path is for the left arrow drawn in a 100 × 100 viewbox.
arrowShape: 'M 0,50 L 60,00 L 50,30 L 80,30 L 80,70 L 50,70 L 60,100 Z'