Files
hydra/src/renderer/src/pages/game-details/gallery-slider/gallery-slider.scss
2025-09-28 18:13:08 +01:00

167 lines
3.1 KiB
SCSS

@use "../../../scss/globals.scss";
.gallery-slider {
&__container {
padding: calc(globals.$spacing-unit * 1.5) calc(globals.$spacing-unit * 1);
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
&__viewport {
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
border-radius: 8px;
@media (min-width: 1280px) {
width: 60%;
}
}
&__container-inner {
display: flex;
height: 100%;
}
&__slide {
flex: 0 0 100%;
min-width: 0;
display: flex;
align-items: center;
justify-content: center;
}
&__media {
width: 100%;
height: 100%;
display: block;
border-radius: 4px;
object-fit: cover;
}
&__preview {
width: 100%;
padding: globals.$spacing-unit 0;
height: 100%;
display: flex;
position: relative;
overflow-x: auto;
overflow-y: hidden;
gap: calc(globals.$spacing-unit / 2);
@media (min-width: 1280px) {
width: 60%;
}
&::-webkit-scrollbar-thumb {
width: 20%;
}
&::-webkit-scrollbar {
height: 10px;
}
}
&__preview-button {
cursor: pointer;
width: 20%;
display: block;
flex-shrink: 0;
flex-grow: 0;
opacity: 0.3;
transition:
translate 0.3s ease-in-out,
opacity 0.2s ease;
border-radius: 4px;
border: solid 1px globals.$border-color;
overflow: hidden;
position: relative;
&:hover {
opacity: 0.8;
}
&--active {
opacity: 1;
}
}
&__preview-image {
width: 100%;
display: flex;
}
&__play-overlay {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: rgba(0, 0, 0, 0.4);
border-radius: 50%;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
color: white;
transition: all 0.2s ease;
pointer-events: none;
.gallery-slider__preview-button:hover & {
background-color: rgba(0, 0, 0, 0.6);
transform: translate(-50%, -50%) scale(1.1);
}
}
&__button {
position: absolute;
top: 50%;
transform: translateY(-50%);
cursor: pointer;
background-color: rgba(0, 0, 0, 0.4);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
border-radius: 50%;
color: globals.$muted-color;
width: 48px;
height: 48px;
border: none;
display: flex;
align-items: center;
justify-content: center;
z-index: 1;
&:hover {
background-color: rgba(0, 0, 0, 0.6);
}
&:active {
transform: translateY(-50%) scale(0.95);
}
&--left {
left: globals.$spacing-unit;
transform: translateY(-50%) translateX(-100px);
opacity: 0;
.gallery-slider__viewport:hover & {
transform: translateY(-50%) translateX(0);
opacity: 1;
}
}
&--right {
right: globals.$spacing-unit;
transform: translateY(-50%) translateX(100px);
opacity: 0;
.gallery-slider__viewport:hover & {
transform: translateY(-50%) translateX(0);
opacity: 1;
}
}
}
}