diff --git a/docs/4.0/components/carousel.md b/docs/4.0/components/carousel.md index edd35df4f3..0aa132ed77 100644 --- a/docs/4.0/components/carousel.md +++ b/docs/4.0/components/carousel.md @@ -20,7 +20,7 @@ Lastly, if you're building our JavaScript from source, it [requires `util.js`]({ Carousels don't automatically normalize slide dimensions. As such, you may need to use additional utilities or custom styles to appropriately size content. While carousels support previous/next controls and indicators, they're not explicitly required. Add and customize as you see fit. -Be sure to set a unique id on the `.carousel` for optional controls, especially if you're using multiple carousels on a single page. +**The `.active` class needs to be added to one of the slides** otherwise the carousel will not be visible. Also be sure to set a unique id on the `.carousel` for optional controls, especially if you're using multiple carousels on a single page. ### Slides only @@ -103,12 +103,6 @@ You can also add the indicators to the carousel, alongside the controls, too. {% endexample %} -{% callout warning %} -##### Initial active element required - -The `.active` class needs to be added to one of the slides. Otherwise, the carousel will not be visible. -{% endcallout %} - ### With captions Add captions to your slides easily with the `.carousel-caption` element within any `.carousel-item`. They can be easily hidden on smaller viewports, as shown below, with optional [display utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/display/). We hide them initially with `.d-none` and bring them back on medium-sized devices with `.d-md-block`. @@ -164,6 +158,35 @@ Add captions to your slides easily with the `.carousel-caption` element within a {% endhighlight %} +### Crossfade + +Add `.carousel-fade` to your carousel to animate slides with a fade transition instead of a slide. + +{% example html %} + +{% endexample %} + + ## Usage ### Via data attributes diff --git a/scss/_carousel.scss b/scss/_carousel.scss index 72a503445b..3b048e0d1a 100644 --- a/scss/_carousel.scss +++ b/scss/_carousel.scss @@ -1,4 +1,13 @@ -// Wrapper for the slide container and indicators +// Notes on the classes: +// +// 1. The .carousel-item-left and .carousel-item-right is used to indicate where +// the active slide is heading. +// 2. .active.carousel-item is the current slide. +// 3. .active.carousel-item-left and .active.carousel-item-right is the current +// slide in it's in-transition state. Only one of these occur at a time. +// 4. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right +// is the upcoming slide in transition. + .carousel { position: relative; } @@ -31,7 +40,6 @@ top: 0; } -// CSS3 transforms when supported by the browser .carousel-item-next.carousel-item-left, .carousel-item-prev.carousel-item-right { transform: translateX(0); @@ -60,6 +68,42 @@ } +// +// Alternate transitions +// + +.carousel-fade { + .carousel-item { + opacity: 0; + transition-duration: .6s; + transition-property: opacity; + } + + .carousel-item.active, + .carousel-item-next.carousel-item-left, + .carousel-item-prev.carousel-item-right { + opacity: 1; + } + + .active.carousel-item-left, + .active.carousel-item-right { + opacity: 0; + } + + .carousel-item-next, + .carousel-item-prev, + .carousel-item.active, + .active.carousel-item-left, + .active.carousel-item-prev { + transform: translateX(0); + + @supports (transform-style: preserve-3d) { + transform: translate3d(0, 0, 0); + } + } +} + + // // Left/right controls for nav //