mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-12-23 10:11:54 +00:00
189 lines
3.6 KiB
SCSS
189 lines
3.6 KiB
SCSS
.carousel.carousel {
|
|
margin-top: calc(80 * var(--variable-px));
|
|
transform: translate(0);
|
|
|
|
.carousel-slide {
|
|
display: flex;
|
|
white-space: nowrap;
|
|
touch-action: pan-y pinch-zoom;
|
|
cursor: grab;
|
|
|
|
:is(img, video) {
|
|
position: relative;
|
|
display: inline-block;
|
|
user-select: none;
|
|
flex: 0 0 auto;
|
|
height: auto;
|
|
padding: 0 20px;
|
|
|
|
&:first-child,
|
|
&:last-child {
|
|
--fade-factor: Min(calc(var(--over-slide-factor, 0) / 1.5 + 0.5), 1);
|
|
// Fade to white (combining invert and brightness, see <https://stackoverflow.com/a/78478074/775283>) and desaturate
|
|
filter: Invert(calc(var(--fade-factor) / 2)) Brightness(calc(1 + var(--fade-factor))) Grayscale(var(--fade-factor));
|
|
}
|
|
|
|
&:first-child {
|
|
margin-left: -20px;
|
|
}
|
|
|
|
&:last-child {
|
|
margin-right: -20px;
|
|
}
|
|
}
|
|
}
|
|
|
|
&:not(.dragging, .jostling) .carousel-slide :is(img, video) {
|
|
transition: transform 500ms;
|
|
}
|
|
|
|
.carousel-slide:not(.torn) {
|
|
overflow: hidden;
|
|
}
|
|
|
|
.carousel-slide.torn {
|
|
position: fixed;
|
|
top: 0;
|
|
z-index: -1;
|
|
// Torn edge mask
|
|
-webkit-mask-repeat: no-repeat;
|
|
mask-repeat: no-repeat;
|
|
-webkit-mask-size: contain;
|
|
mask-size: contain;
|
|
|
|
&.left {
|
|
padding-left: 160px;
|
|
margin-left: -160px;
|
|
-webkit-mask-image: url("https://static.graphite.art/textures/torn-edge-left__2.png");
|
|
mask-image: url("https://static.graphite.art/textures/torn-edge-left__2.png");
|
|
-webkit-mask-position: top left;
|
|
mask-position: top left;
|
|
}
|
|
|
|
&.right {
|
|
padding-right: 160px;
|
|
margin-right: -160px;
|
|
-webkit-mask-image: url("https://static.graphite.art/textures/torn-edge-right__2.png");
|
|
mask-image: url("https://static.graphite.art/textures/torn-edge-right__2.png");
|
|
-webkit-mask-position: top right;
|
|
mask-position: top right;
|
|
}
|
|
}
|
|
|
|
.screenshot-details {
|
|
display: flex;
|
|
margin: 20px 0;
|
|
gap: 20px 40px;
|
|
|
|
@media screen and (max-width: 800px) {
|
|
flex-wrap: wrap;
|
|
justify-content: center;
|
|
}
|
|
|
|
.carousel-controls {
|
|
display: flex;
|
|
align-items: center;
|
|
flex: 0 0 auto;
|
|
|
|
button {
|
|
outline: none;
|
|
background: none;
|
|
border: none;
|
|
padding: 0;
|
|
color: inherit;
|
|
cursor: pointer;
|
|
|
|
svg {
|
|
display: block;
|
|
}
|
|
|
|
+ button {
|
|
margin-left: 20px;
|
|
}
|
|
}
|
|
|
|
.direction {
|
|
fill: currentColor;
|
|
}
|
|
|
|
.dot {
|
|
width: 16px;
|
|
height: 16px;
|
|
box-sizing: border-box;
|
|
border-radius: 50%;
|
|
border: 2px solid currentColor;
|
|
|
|
&.active {
|
|
border: none;
|
|
background: var(--color-crimson);
|
|
}
|
|
}
|
|
}
|
|
|
|
.screenshot-description {
|
|
display: flex;
|
|
align-items: center;
|
|
min-height: calc(2em * 1.5);
|
|
|
|
p + p {
|
|
margin: 0;
|
|
}
|
|
|
|
p:not(.active) {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
&.center {
|
|
.screenshot-details {
|
|
justify-content: center;
|
|
}
|
|
}
|
|
|
|
&.window-size-1 .carousel-slide :is(img, video) {
|
|
width: 100%;
|
|
}
|
|
|
|
&.window-size-2 .carousel-slide :is(img, video) {
|
|
width: calc((100% / 2) - 10px);
|
|
padding: 0 10px;
|
|
|
|
&:first-child {
|
|
margin-left: -10px;
|
|
}
|
|
|
|
&:last-child {
|
|
margin-right: -10px;
|
|
}
|
|
}
|
|
|
|
&.window-size-3 .carousel-slide :is(img, video) {
|
|
width: calc((100% / 3) - 10px * (4 / 3));
|
|
padding: 0 10px;
|
|
|
|
&:first-child {
|
|
margin-left: -10px;
|
|
}
|
|
|
|
&:last-child {
|
|
margin-right: -10px;
|
|
}
|
|
}
|
|
|
|
@media screen and (max-width: 1000px) {
|
|
margin-left: calc(-1 * var(--page-edge-padding));
|
|
margin-right: calc(-1 * var(--page-edge-padding));
|
|
|
|
.screenshot-details {
|
|
margin-left: var(--page-edge-padding);
|
|
margin-right: var(--page-edge-padding);
|
|
}
|
|
}
|
|
|
|
@media screen and (max-width: /* The value of --max-width-plus-padding: */ 1280px) {
|
|
.carousel-slide.torn {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|