The carousel is an interaction that allows horizontal scrolling (with touch or buttons) between a set of items.
The CSS we need to use here is pretty picky, so make sure to check out the "required styles" below.
data-ur-set="carousel"
data-ur-carousel-component="scroll_container"
data-ur-carousel-component="item"
data-ur-carousel-component="button"
data-ur-carousel-button-type="prev"/"next"
data-ur-set="carousel"
data-ur-touch
: enabled/disableddata-ur-infinite
: enabled/disabled (specify front to back wrapping behavior)data-ur-autoscroll
: enabled/disabled (automatically scroll with interval)data-ur-autoscroll-delay
: integer (autoscroll delay in milliseconds, default: 5000)data-ur-autoscroll-dir
: next/prev (specify autoscroll direction)data-ur-transform3d
: enabled/disabled (force use of translate3d on all devices)data-ur-fill
: integer (force n carousel items to fit in container width, default: 0)data-ur-center
: enabled/disabled (horizontally center current item)
data-ur-carousel-component="scroll_container"
position: relative
.
data-ur-carousel-component="item"
float: left
style
data-ur-carousel-component="button"
data-ur-carousel-button-type: "next"/"prev"
for the next and previous buttons, respectively
data-ur-carousel-component="count"
data-ur-template
: moustache template, e.g., "{{index}}/{{count}}"
data-ur-carousel-component="dots"
data-ur-state
on the corresponding child
You can also directly initialize the widget in JavaScript (components can be passed in as strings/elements/arrays):
Uranium.lib.carousel({ set: "#a", scroll_container: "#b", item: "#b > *" }, { infinite: false // data-ur-* options });
Access the widget via Uranium.carousel["DATA-UR-ID"]
. The following methods are exposed for each widget:
update(options)
{center: true, fill: 2}
jumpToIndex(index)
autoscrollStart()
autoscrollStop()
load.ur.carousel
data-ur-set="carousel"
node when all images have loadedslidestart
data-ur-set="carousel"
node when a transition from one thumbnail to the next startsslideend
data-ur-set="carousel"
node when a transition from one thumbnail to the next ends<div data-ur-set="carousel" data-ur-infinite="disabled"> <a data-ur-carousel-component="button" data-ur-carousel-button-type="prev">Prev</a> <a data-ur-carousel-component="button" data-ur-carousel-button-type="next">Next</a> <span data-ur-carousel-component="count"></span> <div data-ur-carousel-component="scroll_container"> <img data-ur-carousel-component="item" src="http://placekitten.com/g/200/200" alt="1"> <img data-ur-carousel-component="item" src="http://placekitten.com/g/200/200" alt="2"> <img data-ur-carousel-component="item" src="http://placekitten.com/g/200/200" alt="3"> <img data-ur-carousel-component="item" src="http://placekitten.com/g/200/200" alt="4"> <img data-ur-carousel-component="item" src="http://placekitten.com/g/200/200" alt="5"> <img data-ur-carousel-component="item" src="http://placekitten.com/g/200/200" alt="6"> <img data-ur-carousel-component="item" src="http://placekitten.com/g/200/200" alt="7"> <img data-ur-carousel-component="item" src="http://placekitten.com/g/200/200" alt="8"> </div> </div>
[data-ur-set="carousel"] { overflow: hidden; position: relative; } [data-ur-carousel-component="scroll_container"] { clear: both; display: block; } [data-ur-carousel-component="scroll_container"]:after { clear: both; content: ""; display: table; } [data-ur-carousel-component="scroll_container"] img { -webkit-user-drag: none; } [data-ur-carousel-component="item"] { display: inline-block; float: left; }
Carousels inside disabled content (display: none
) aren't able to calculate their widths so alternate CSS is used here.
<div data-ur-set="toggler"> <div data-ur-toggler-component="button">Show/Hide Carousel</div> <div data-ur-toggler-component="content" class="carousel-toggler"> <div data-ur-set="carousel"> <div data-ur-carousel-component="scroll_container"> <img data-ur-carousel-component="item" src="/images/sample1.png" alt="1"> <img data-ur-carousel-component="item" src="/images/sample2.png" alt="2"> <img data-ur-carousel-component="item" src="/images/sample3.png" alt="3"> <img data-ur-carousel-component="item" src="/images/sample4.png" alt="4"> </div> </div> </div> </div>
.carousel-toggler:not([data-ur-state="enabled"]) { display: block; overflow: hidden; height: 0; }
Here we have a carousel that loops from front to back (default state for carousel). The carousel also has a custom count template, and indicator dots showing what item is currently selected. The indicator dots have a data-ur-state
of "inactive" until the corresponding item is selected, when the data-ur-state
changes to "active" — you can use this for styling the dots.
data-ur-carousel-component="dots"
<div data-ur-set="carousel" data-ur-infinite="enabled"> <div data-ur-carousel-component="dots"></div> <span data-ur-carousel-component="count" data-ur-template="{{index}}/{{count}}"></span> <a data-ur-carousel-component="button" data-ur-carousel-button-type="prev">Prev</a> <a data-ur-carousel-component="button" data-ur-carousel-button-type="next">Next</a> <div data-ur-carousel-component="scroll_container"> <img data-ur-carousel-component="item" src="images/sample1.png" alt="1"> <img data-ur-carousel-component="item" src="images/sample2.png" alt="2"> <img data-ur-carousel-component="item" src="images/sample3.png" alt="3"> <img data-ur-carousel-component="item" src="images/sample4.png" alt="4"> <img data-ur-carousel-component="item" src="images/sample5.png" alt="5"> <img data-ur-carousel-component="item" src="images/sample6.png" alt="6"> <img data-ur-carousel-component="item" src="images/sample7.png" alt="7"> <img data-ur-carousel-component="item" src="images/sample8.png" alt="8"> </div> </div>
Here we have a carousel that automatically scrolls to the next item. The default is every 5 seconds, but you can specify the time using the attribute listed below.
data-ur-autoscroll="enabled"
data-ur-autoscroll-delay="5000"
<div data-ur-set="carousel" data-ur-autoscroll="enabled"> <span data-ur-carousel-component="count"></span> <a data-ur-carousel-component="button" data-ur-carousel-button-type="prev">Prev</a> <a data-ur-carousel-component="button" data-ur-carousel-button-type="next">Next</a> <div data-ur-carousel-component="scroll_container"> <img data-ur-carousel-component="item" src="images/sample1.png" alt="1"> <img data-ur-carousel-component="item" src="images/sample2.png" alt="2"> <img data-ur-carousel-component="item" src="images/sample3.png" alt="3"> <img data-ur-carousel-component="item" src="images/sample4.png" alt="4"> <img data-ur-carousel-component="item" src="images/sample5.png" alt="5"> <img data-ur-carousel-component="item" src="images/sample6.png" alt="6"> <img data-ur-carousel-component="item" src="images/sample7.png" alt="7"> <img data-ur-carousel-component="item" src="images/sample8.png" alt="8"> </div> </div>
Here we have a carousel that forces a set number of items to fill the container with equal widths.
data-ur-fill="5"
<div data-ur-set="carousel" data-ur-fill="5" data-ur-infinite="disabled"> <div data-ur-carousel-component="dots"></div> <a data-ur-carousel-component="button" data-ur-carousel-button-type="prev">Prev</a> <a data-ur-carousel-component="button" data-ur-carousel-button-type="next">Next</a> <div data-ur-carousel-component="scroll_container"> <img data-ur-carousel-component="item" src="images/sample1.png" alt="1"> <img data-ur-carousel-component="item" src="images/sample2.png" alt="2"> <img data-ur-carousel-component="item" src="images/sample3.png" alt="3"> <img data-ur-carousel-component="item" src="images/sample4.png" alt="4"> <img data-ur-carousel-component="item" src="images/sample5.png" alt="5"> <img data-ur-carousel-component="item" src="images/sample6.png" alt="6"> <img data-ur-carousel-component="item" src="images/sample7.png" alt="7"> <img data-ur-carousel-component="item" src="images/sample8.png" alt="8"> </div> </div>