Slider
Create a responsive carousel slider.
Table of contents
-
Usage -
Container -
Gap -
Center -
Autoplay -
Infinite Scrolling -
Slide Sets -
Navigation -
Navigation outside -
Parallax animation -
Card -
Content overlays -
Content parallax -
Content transitions -
Component options -
JavaScript -
Accessibility
The Slider component is fully responsive and supports touch and swipe navigation as well as mouse drag for desktops. It even accelerates to keep up with your pace when you click through the `previous and next navigation. All animations are hardware accelerated for a smoother performance.
Usage
To apply this component, add the data-uk-slider
attribute to a container element and create a list of slides with the .uk-slider-items
class. Add an image or any other content to each item.
To define the widths of the slider items, you can use the width utility classes from Tailwind CSS. If no specific width is set, each item’s width depends on the dimensions of the content itself.
Note To lazy load images in the
slides, use the loading="lazy"
attribute. The Slider will automatically remove
the attribute from images in adjacent slides.
Container
The .uk-slider-container
class is responsible for the clipping of the slider items. By default, the data-uk-slider
attribute applies this class to the same element. Alternatively, you can add this class manually to any element within the slider. That way, you can control which container clips the slider items.
Since the slider effect needs a clipping container, box shadows of content items are also clipped. To widen the container to prevent box-shadows from clipping, add the .uk-slider-container-offset
class.
Gap
To apply a gap to the slider items, add left padding to each item, then add an equally negative margin on the parent element.
Center
By default, items of the slider always are aligned to the left. To center the list items, just add center: true
to the attribute.
Autoplay
To activate autoplay, just add the autoplay: true
option to the attribute. You can also set the interval in milliseconds between switching slides using autoplay-interval: 6000
. To pause autoplay when hovering the slider, use pause-on-hover: true
.
Infinite Scrolling
By default, infinite scrolling is enabled. To disable this behavior, just add the finite: true
option to the attribute.
Slide Sets
To loop through a set of slides instead of single items, just add sets: true
to the attribute.
Navigation
To navigate through your slides, just use the data-uk-slider-item
attribute. To target the slides, set the attribute of every nav item to the index number of the respective slider item. The elements with the data-uk-slider-item
attribute need to be inside the uk-slider
container. Setting the attribute to next
and previous
will switch to the adjacent slides.
The flexibility of the Slideshow component allows you to use any of the other UIkit components to navigate through items. For example the Slidenav, Dotnav and Thumbnav components can be used to style the slideshow navigations.
If there is no item specific content in the navigation items, you can also add the .uk-slider-nav
class instead of adding navigation items manually. It will generate its items automatically using <li><a href></a></li>
as markup. This is a useful shortcut when using the Dotnav.
Navigation outside
To place a navigation outside of a slider, add the .uk-position-center-left-out
and the .uk-position-center-right-out
class from the Position component to the previous
and next
navigation. Make sure the .uk-slider-container
class, which is responsible for the clipping of the slider items, doesn’t clip the navigation, too.
Parallax animation
Instead of a step-by-step animation using navigation controls, the slider can use a stepless parallax animation based on its scroll position in the viewport. Just add parallax: true
to the attribute. If a navigation is set in the markup it won’t be clickable but it will get the active state of the current slide.
To adjust the parallax duration, set the parallax-start
and parallax-end
options. The parallax-start
option defines when the animation starts. The default value of 0
means that the slider’s top border and viewport’s bottom border intersect. The end
option defines when the animation ends. The default value of 0
means that the slider’s bottom border and the viewport’s top border intersect. Values can be set in any dimension units, namely vh
, %
and px
. The %
unit relates to the slider’s height. Both options allow basic mathematics operands, +
and -
.
Card
The slider is not restricted to images. Any content can be used like text, videos, images with text overlays or ken burns effect. Here is an example using the Card component.
Note Since the slider effect
needs a clipping container, box shadows of content items are also clipped. To
widen the container to prevent box-shadows from clipping, add the
.uk-slider-container-offset
class. Alternatively, use the uk-slider="center: true"
mode if your content items have a box shadow.
Content overlays
Add content overlays using the Position component. It allows you to place the content anywhere inside the slide.
Content parallax
Add the data-uk-slider-parallax
attribute to any element inside the slides to animate it together with the slider animation. Add an option with the desired animation values for each CSS property you want to animate. Define at least one start and end value. It can be done by passing two values separated by a comma.
This functionality is inherited from the Parallax component, and it allows animating CSS properties depending on the scroll position of the slider animation. Take a look at the possible properties that can be animated.
In the example above, the content will start at 100
and animate halfway to 0
while the slide moves in. When the slide starts again to move out, the content will continue to animate to -100
. This works because the start and end values have the same distance. For different distances, three values are needed: Start (Slide animates in), Middle (Slide is centered), End (Slide animates out).
The next example defines different in and out animations. The content slides in by moving from 100
to 0
and fades out from 1
to 0
.
Content transitions
Add clsActivated: uk-transition-active
to the attribute to trigger transition classes from the Transition component automatically inside slides. Contrary to the parallax effect, transitions are not attached to the slider animation and start playing independently after the slider animation.
Toggle on hover
To toggle transitions on hover, use the .uk-transition-toggle
class from the Transition component and tabindex="0"
. This will trigger the transition when the element is hovered or focused.
Component options
Any of these options can be applied to the component attribute. Separate multiple options with a semicolon. Learn more
Option | Value | Default | Description |
---|---|---|---|
autoplay | Boolean | false | Slider autoplays. |
autoplay-interval | Number | 7000 | The delay between switching slides in autoplay mode. |
center | Boolean | false | Center the active slide. |
draggable | Boolean | true | Enable pointer dragging. |
easing | String | ease | The animation easing (CSS timing functions or cubic-bezier). |
finite | Boolean | false | Disable infinite sliding. |
index | Number | 0 | Slider item to show. 0 based index. |
active | String | all | Slider item/items to apply the transition active class to (all, first). |
pause-on-hover | Boolean | true | Pause autoplay mode on hover. |
sets | Boolean | false | Slide in sets. |
velocity | Number | 1 | The animation velocity (pixel/ms). |
JavaScript
Learn more about JavaScript components.
Initialization
Events
The following events will be triggered on elements with this component attached:
Name | Description |
---|---|
beforeitemshow | Fires before an item is shown. |
itemshow | Fires after an item is shown. |
itemshown | Fires after an item’s show animation has been completed. |
beforeitemhide | Fires before an item is hidden. |
itemhide | Fires after an item’s hide animation has started. |
itemhidden | Fires after an item’s hide animation has been completed. |
Methods
The following methods are available for the component:
Show
Shows the slider item.
StartAutoplay
Starts the slider autoplay.
StopAutoplay
Stops the slider autoplay.
Accessibility
The Slider component adheres to the Carousel WAI-ARIA design pattern and automatically sets the appropriate WAI-ARIA roles, states and properties.
- The slider has the
aria-roledescription
property set tocarousel
. - The slide list has an ID and the
aria-live
property. - The slides have an ID, the
group
role if the slider has only a previous/next navigation or thetabpanel
role if it has a tab navigation, thearia-roledescription
property set toslide
and anaria-label
property.
The tab navigation adheres to the tab pattern.
- The tab navigation has the
tablist
role. - The tab navigation items have the
presentation
role. - The tab navigation links have the
tab
role, thearia-selected
state, thearia-controls
property set to the ID of the respective slide, and anaria-label
property.
The previous/next navigation adheres to the button pattern.
- The prev/next navigation items have an
aria-label
property, thearia-controls
property set to the ID of the slide list, and if an<a>
element is used, thebutton
role.
Keyboard interaction
Autoplay stops when any element in the Slider component receives focus. The tab navigation can be accessed through the keyboard using the following keys.
- The tab or shift+tab keys place focus on the active tab in the tab navigation. If the focus already is on the active tab, the focus will move to the next element outside the tab navigation.
- The left/right arrow or right/down arrow keys, depending on the orientation, navigate through the tabs. The corresponding slide will get active automatically. If the focus is on the last tab, it moves to the first tab.
- The home or end keys move the focus to the first or last tab.
Internationalization
The Slider component uses the following translation strings. Learn more about translating components.
Key | Default | Description |
---|---|---|
next | Next Slide | aria-label for next slide button. |
previous | Previous Slide | aria-label for previous slide button. |
slideX | Slide %s | aria-label for pagination slide button. |
slideLabel | %s of %s | aria-label for slide. |