You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
2.5 KiB
137 lines
2.5 KiB
4 years ago
|
// Carousels
|
||
|
// The number of carousel images
|
||
|
$carousel-number: 8;
|
||
|
|
||
|
%carousel-image-checked {
|
||
|
animation: carousel-slidein .75s ease-in-out 1;
|
||
|
opacity: 1;
|
||
|
z-index: $zindex-1;
|
||
|
}
|
||
|
|
||
|
%carousel-nav-checked {
|
||
|
color: $gray-color-light;
|
||
|
}
|
||
|
|
||
|
.carousel {
|
||
|
background: $bg-color;
|
||
|
display: block;
|
||
|
overflow: hidden;
|
||
|
position: relative;
|
||
|
width: 100%;
|
||
|
-webkit-overflow-scrolling: touch;
|
||
|
z-index: $zindex-0;
|
||
|
|
||
|
.carousel-container {
|
||
|
height: 100%;
|
||
|
left: 0;
|
||
|
position: relative;
|
||
|
&::before {
|
||
|
content: "";
|
||
|
display: block;
|
||
|
padding-bottom: 56.25%;
|
||
|
}
|
||
|
|
||
|
.carousel-item {
|
||
|
animation: carousel-slideout 1s ease-in-out 1;
|
||
|
height: 100%;
|
||
|
left: 0;
|
||
|
margin: 0;
|
||
|
opacity: 0;
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
width: 100%;
|
||
|
|
||
|
&:hover {
|
||
|
.item-prev,
|
||
|
.item-next {
|
||
|
opacity: 1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.item-prev,
|
||
|
.item-next {
|
||
|
background: rgba($gray-color-light, .25);
|
||
|
border-color: rgba($gray-color-light, .5);
|
||
|
color: $gray-color-light;
|
||
|
opacity: 0;
|
||
|
position: absolute;
|
||
|
top: 50%;
|
||
|
transition: all .4s;
|
||
|
transform: translateY(-50%);
|
||
|
z-index: $zindex-1;
|
||
|
}
|
||
|
.item-prev {
|
||
|
left: 1rem;
|
||
|
}
|
||
|
.item-next {
|
||
|
right: 1rem;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.carousel-locator {
|
||
|
@for $i from 1 through ($carousel-number) {
|
||
|
&:nth-of-type(#{$i}):checked ~ .carousel-container .carousel-item:nth-of-type(#{$i}) {
|
||
|
@extend %carousel-image-checked;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@for $i from 1 through ($carousel-number) {
|
||
|
&:nth-of-type(#{$i}):checked ~ .carousel-nav .nav-item:nth-of-type(#{$i}) {
|
||
|
@extend %carousel-nav-checked;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.carousel-nav {
|
||
|
bottom: $layout-spacing;
|
||
|
display: flex;
|
||
|
justify-content: center;
|
||
|
left: 50%;
|
||
|
position: absolute;
|
||
|
transform: translateX(-50%);
|
||
|
width: 10rem;
|
||
|
z-index: $zindex-1;
|
||
|
|
||
|
.nav-item {
|
||
|
color: rgba($gray-color-light, .5);
|
||
|
display: block;
|
||
|
flex: 1 0 auto;
|
||
|
height: $unit-8;
|
||
|
margin: $unit-1;
|
||
|
max-width: 2.5rem;
|
||
|
position: relative;
|
||
|
|
||
|
&::before {
|
||
|
background: currentColor;
|
||
|
content: "";
|
||
|
display: block;
|
||
|
height: $unit-h;
|
||
|
position: absolute;
|
||
|
top: .5rem;
|
||
|
width: 100%;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@keyframes carousel-slidein {
|
||
|
0% {
|
||
|
transform: translateX(100%);
|
||
|
}
|
||
|
100% {
|
||
|
transform: translateX(0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@keyframes carousel-slideout {
|
||
|
0% {
|
||
|
opacity: 1;
|
||
|
transform: translateX(0);
|
||
|
}
|
||
|
100% {
|
||
|
opacity: 1;
|
||
|
transform: translateX(-50%);
|
||
|
}
|
||
|
}
|