Header Carousel
<div class="header-carousel js-header-carousel">
<div class="header-carousel__slides js-slides">
<!-- Slide 1 -->
<div class="header-carousel__slide">
<div class="header-carousel__item">
<div class="header-carousel__image" style="background-image: url(https://via.placeholder.com/1170x530/013f8c/1475ff)"></div>
<div class="header-carousel__content-wrapper">
<div class="header-carousel__content">
<h2 class="header-carousel__title">COLLECTION TITLE</h2>
<div class="header-carousel__intro">
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Repellendus error architecto quia voluptatibus amet, eligendi, optio sint quas veritatis aliquam harum rem laborum. Molestias debitis deserunt nobis quia doloribus culpa?</p>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Repellendus error architecto quia voluptatibus amet, eligendi, optio sint quas veritatis aliquam harum rem laborum. Molestias debitis deserunt nobis quia doloribus culpa?</p>
</div>
<div class="header-carousel__actions">
<a href="#button-1" class="btn btn-primary">Button</a>
<a href="#button-2" class="btn btn-default">Button</a>
<a href="#button-3" class="btn btn-link">Button</a>
</div>
</div>
</div>
</div>
</div>
<!-- /Slide 1 -->
<!-- Slide 2 -->
<div class="header-carousel__slide">
<div class="header-carousel__item">
<div class="header-carousel__image" style="background-image: url(https://via.placeholder.com/1170x530/960064/f870ff)"></div>
<div class="header-carousel__content-wrapper">
<div class="header-carousel__content">
<h2 class="header-carousel__title">SLIDE 2 TITLE</h2>
<div class="header-carousel__intro">
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Repellendus error architecto quia voluptatibus amet, eligendi, optio sint quas veritatis aliquam harum rem laborum. Molestias debitis deserunt nobis quia doloribus culpa?</p>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Repellendus error architecto quia voluptatibus amet, eligendi, optio sint quas veritatis aliquam harum rem laborum. Molestias debitis deserunt nobis quia doloribus culpa?</p>
</div>
<div class="header-carousel__actions">
<a href="#button-1" class="btn btn-primary">Button</a>
<a href="#button-2" class="btn btn-default">Button</a>
<a href="#button-3" class="btn btn-link">Button</a>
</div>
</div>
</div>
</div>
</div>
<!-- /Slide 2 -->
<!-- Slide 3 -->
<div class="header-carousel__slide">
<div class="header-carousel__item">
<div class="header-carousel__image" style="background-image: url(https://via.placeholder.com/1170x530/006550/00d256)"></div>
<div class="header-carousel__content-wrapper">
<div class="header-carousel__content">
<h2 class="header-carousel__title">SLIDE 3 TITLE</h2>
<div class="header-carousel__intro">
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Repellendus error architecto quia voluptatibus amet, eligendi, optio sint quas veritatis aliquam harum rem laborum. Molestias debitis deserunt nobis quia doloribus culpa?</p>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Repellendus error architecto quia voluptatibus amet, eligendi, optio sint quas veritatis aliquam harum rem laborum. Molestias debitis deserunt nobis quia doloribus culpa?</p>
</div>
<div class="header-carousel__actions">
<a href="#button-1" class="btn btn-primary">Button</a>
<a href="#button-2" class="btn btn-default">Button</a>
<a href="#button-3" class="btn btn-link">Button</a>
</div>
</div>
</div>
</div>
</div>
<!-- /Slide 3 -->
</div>
<div class="header-carousel__controls">
<button type="button" class="carousel-arrow carousel-prev js-carousel-prev">Previous</button>
<div class="carousel-dots-wrapper js-carousel-dots"></div>
<button type="button" class="carousel-arrow carousel-next js-carousel-next">Next</button>
</div>
</div>
.header-carousel {
color: $color-base-white;
background-color: $color-base-blue;
margin-left: -15px;
margin-right: -15px;
position: relative;
margin-bottom: 2.4rem;
.carousel-dots-wrapper {
margin: 0 0.8rem;
}
.carousel-dots {
padding: 0;
margin: 0;
list-style: none;
li {
position: relative;
display: inline-block;
margin: 0;
padding: 0;
cursor: pointer;
button {
font-size: 0;
line-height: 0;
display: block;
padding: 0.8rem;
cursor: pointer;
color: transparent;
border: 0;
outline: none;
background: transparent;
&:hover,
&:focus {
outline: none;
}
&::before {
font-family: "FontAwesome";
font-size: 1.6rem;
line-height: 1;
content: "\f10c";
text-align: center;
opacity: 0.5;
color: $color-base-white;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
&:hover::before,
&:focus::before {
opacity: 1;
}
}
}
li.slick-active button::before {
opacity: 1;
color: $color-base-white;
content: "\f111";
}
}
.carousel-arrow {
z-index: 1;
font-size: 0;
line-height: 0;
display: block;
padding: 0.8rem;
cursor: pointer;
color: transparent;
border: none;
outline: none;
background: transparent;
&::before {
font-family: "FontAwesome";
font-size: 1.6rem;
line-height: 1;
opacity: 0.75;
color: $color-base-white;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
&:hover,
&:focus {
color: transparent;
outline: none;
background: transparent;
&::before {
opacity: 1;
}
}
}
.carousel-prev::before {
content: "\f177";
}
.carousel-next::before {
content: "\f178";
}
}
.header-carousel__controls {
position: absolute;
bottom: 0;
width: 100%;
height: 3.2rem;
display: inline-flex;
justify-content: center;
@media (min-width: $breakpoint-tablet) {
bottom: 2.4rem;
}
}
.header-carousel__image {
aspect-ratio: 1170 / 530; // Match image aspect ratio
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.header-carousel__item {
position: relative;
// Gradient behind controls
&::after {
position: absolute;
height: 8rem;
right: 0;
bottom: 0;
left: 0;
content: "";
@media (min-width: $breakpoint-desktop) {
background-image: linear-gradient(to top, rgba($color-base-blue, 1), rgba($color-base-blue, 0));
}
}
}
.header-carousel__content-wrapper {
padding-bottom: 6.4rem;
// Gradient behind content
@media (min-width: $breakpoint-desktop) {
background-image: linear-gradient(to right, rgba($color-base-blue, 1), rgba($color-base-blue, 0));
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 50%;
}
}
.header-carousel__content {
padding: 2.4rem;
@media (min-width: $breakpoint-desktop) {
padding-top: 12.8rem;
padding-left: 2.4rem;
}
}
.header-carousel__category {
@include typeCaption(true);
margin-bottom: 0.4rem;
}
.header-carousel__title {
@include typeHeadline(true);
text-align: center;
margin-bottom: 2.4rem;
@media (min-width: $breakpoint-tablet) {
@include typeDisplay(true);
}
@media (min-width: $breakpoint-desktop) {
@include typeDisplayMedium(true);
text-align: left;
}
}
.header-carousel__intro {
@include typeSubheader(true);
margin-bottom: 2.4rem;
}
$(document).ready(function () {
$(".js-header-carousel").each(function () {
const $component = $(this);
$component.find(".js-slides").slick({
autoplay: false,
dots: true,
dotsClass: "carousel-dots",
appendDots: $component.find(".js-carousel-dots"),
prevArrow: $component.find(".js-carousel-prev"),
nextArrow: $component.find(".js-carousel-next"),
});
});
});