| 1 |
/** |
| 2 |
* Frontend Styles |
| 3 |
*/ |
| 4 |
@import "./variables"; |
| 5 |
|
| 6 |
.ghostkit-carousel { |
| 7 |
// Display better styles before JS init. |
| 8 |
&:not(.ghostkit-carousel-ready) { |
| 9 |
&[data-effect="slide"]="slide""] { |
| 10 |
.ghostkit-carousel-items { |
| 11 |
display: flex; |
| 12 |
} |
| 13 |
@for $i from 1 through 10 { |
| 14 |
&[data-slides-per-view="#{$i}"]="#{$i}""] .ghostkit-carousel-slide:nth-child(#{$i}) ~ div { |
| 15 |
display: none; |
| 16 |
} |
| 17 |
} |
| 18 |
} |
| 19 |
|
| 20 |
&[data-effect="fade"]="fade""] .ghostkit-carousel-slide:not(:first-child) { |
| 21 |
display: none; |
| 22 |
} |
| 23 |
} |
| 24 |
|
| 25 |
// Fade edges. |
| 26 |
&-fade-edges { |
| 27 |
mask-image: linear-gradient(to right, rgba(0, 0, 0, 0%) 0%, #000 var(--gkt-carousel--fade-edges__size), #000 calc(100% - var(--gkt-carousel--fade-edges__size)), rgba(0, 0, 0, 0%) 100%); |
| 28 |
} |
| 29 |
|
| 30 |
// Arrows. |
| 31 |
&-arrow { |
| 32 |
position: absolute; |
| 33 |
top: 50%; |
| 34 |
z-index: 1; |
| 35 |
display: flex; |
| 36 |
align-items: center; |
| 37 |
justify-content: center; |
| 38 |
width: var(--gkt-carousel--arrows__width); |
| 39 |
height: var(--gkt-carousel--arrows__height); |
| 40 |
margin-top: calc(var(--gkt-carousel--arrows__height) / -2); |
| 41 |
font-size: var(--gkt-carousel--arrows__font-size); |
| 42 |
color: var(--gkt-carousel--arrows__color); |
| 43 |
cursor: pointer; |
| 44 |
background-color: var(--gkt-carousel--arrows__background-color); |
| 45 |
border-radius: var(--gkt-carousel--arrows__border-radius); |
| 46 |
box-shadow: var(--gkt-carousel--arrows__box-shadow); |
| 47 |
opacity: var(--gkt-carousel--arrows__opacity); |
| 48 |
transition: var(--gkt-carousel__transition-duration) opacity var(--gkt-carousel__transition-easing), var(--gkt-carousel__transition-duration) box-shadow var(--gkt-carousel__transition-easing), var(--gkt-carousel__transition-duration) transform var(--gkt-carousel__transition-easing); |
| 49 |
|
| 50 |
// additional element to make the buttons clickable also in outside. |
| 51 |
&::after { |
| 52 |
position: absolute; |
| 53 |
top: -10px; |
| 54 |
right: -10px; |
| 55 |
bottom: -10px; |
| 56 |
left: -10px; |
| 57 |
display: block; |
| 58 |
content: ""; |
| 59 |
} |
| 60 |
|
| 61 |
&:hover, |
| 62 |
&:focus { |
| 63 |
box-shadow: var(--gkt-carousel--arrows-hover__box-shadow); |
| 64 |
opacity: var(--gkt-carousel--arrows-hover__opacity); |
| 65 |
transform: var(--gkt-carousel--arrows-hover__transform); |
| 66 |
} |
| 67 |
} |
| 68 |
|
| 69 |
&-arrow-prev { |
| 70 |
left: var(--gkt-carousel--arrows__offset); |
| 71 |
} |
| 72 |
|
| 73 |
&-arrow-next { |
| 74 |
right: var(--gkt-carousel--arrows__offset); |
| 75 |
} |
| 76 |
|
| 77 |
// Arrow icons. |
| 78 |
&-arrow-prev-icon, |
| 79 |
&-arrow-next-icon { |
| 80 |
display: none; |
| 81 |
} |
| 82 |
|
| 83 |
// Bullets. |
| 84 |
[data-show-bullets="true"]="true""] &-items { |
| 85 |
padding-bottom: var(--gkt-carousel--bullets__margin-top); |
| 86 |
} |
| 87 |
|
| 88 |
[data-show-bullets="true"]="true""] &-arrow { |
| 89 |
transform: translateY(calc(var(--gkt-carousel--bullets__margin-top) / -2)); |
| 90 |
} |
| 91 |
|
| 92 |
&-bullets { |
| 93 |
position: absolute; |
| 94 |
bottom: 0; |
| 95 |
z-index: 1; |
| 96 |
display: flex; |
| 97 |
align-items: flex-end; |
| 98 |
justify-content: center; |
| 99 |
text-align: center; |
| 100 |
|
| 101 |
&.swiper-pagination-bullets-dynamic { |
| 102 |
font-size: inherit; |
| 103 |
} |
| 104 |
|
| 105 |
.swiper-pagination-bullet { |
| 106 |
position: relative; |
| 107 |
width: var(--gkt-carousel--bullets__width); |
| 108 |
height: var(--gkt-carousel--bullets__height); |
| 109 |
margin: 0 calc(var(--gkt-carousel--bullets__gap) / 2); |
| 110 |
cursor: pointer; |
| 111 |
background-color: var(--gkt-carousel--bullets__background-color); |
| 112 |
border-radius: var(--gkt-carousel--bullets__border-radius); |
| 113 |
opacity: var(--gkt-carousel--bullets__opacity); |
| 114 |
transition: var(--gkt-carousel__transition-duration) opacity var(--gkt-carousel__transition-easing); |
| 115 |
|
| 116 |
&:hover, |
| 117 |
&:focus { |
| 118 |
opacity: var(--gkt-carousel--bullets-hover__opacity); |
| 119 |
} |
| 120 |
|
| 121 |
&.swiper-pagination-bullet-active { |
| 122 |
opacity: var(--gkt-carousel--bullets-active__opacity); |
| 123 |
} |
| 124 |
|
| 125 |
// additional element to make the buttons clickable also in outside. |
| 126 |
&::after { |
| 127 |
position: absolute; |
| 128 |
top: -4px; |
| 129 |
right: -4px; |
| 130 |
bottom: -4px; |
| 131 |
left: -4px; |
| 132 |
display: block; |
| 133 |
content: ""; |
| 134 |
} |
| 135 |
} |
| 136 |
} |
| 137 |
} |
| 138 |
|