Files
hugo-snap-gallery/assets/scss/snap-gallery.scss

234 lines
3.8 KiB
SCSS

$gap: var(--gap);
.snap-gallery,
.snap-slideshow {
display: flex;
justify-content: center;
align-items: center;
position: relative;
margin-bottom: 15px;
/* Create equal columns in flexbox */
.snap-image {
cursor: zoom-in;
/* Column amount and width are configurable by style variables */
width: calc(100% / var(--columns) - #{$gap});
min-width: var(--min-width);
img {
aspect-ratio: 16/10;
width: 100%;
object-fit: cover;
}
}
}
.snap-gallery {
flex-wrap: wrap;
gap: $gap;
}
.snap-slideshow {
// Hide all contained images except the first
.snap-image:not(:first-child) {
display: none;
}
}
// Animation
.snap-slideshow .snap-image,
.snap-lightbox .snap-lightbox-inner {
animation: 1s fade;
@keyframes fade {
from {
opacity: .4
}
to {
opacity: 1
}
}
}
.snap-lightbox {
/** Default lightbox to hidden */
display: none;
/** Position and style */
position: fixed;
z-index: 999;
width: 100%;
height: 100%;
text-align: center;
white-space: nowrap;
top: 0;
left: 0;
background: rgba(0, 0, 0, 0.8);
/* keep lightbox in middle. TODO: hacky, and not realibly in middle */
&:before {
content: "";
display: inline-block;
vertical-align: middle;
width: 0;
/* adjust for white space between pseudo element and next sibling */
margin-right: -.25em;
/* stretch line height */
height: 100%;
}
}
// /* Click on the complete background closes the lightbox */
// /* Exception: arrow in gallery, they have higher z-index */
// a.snap-lightbox-close {
// position: fixed;
// z-index: 800;
// width: 100%;
// height: 100%;
// text-align: center;
// white-space: nowrap;
// top: 0;
// left: 0;
// }
/* Container for image */
.snap-lightbox-inner {
display: inline-block;
vertical-align: middle;
white-space: normal;
max-width: 90%;
max-height: 80%;
height: 100%;
img {
max-height: 100%;
}
// TODO: Untested
p {
color: #fff;
z-index: 810;
position: relative;
}
@media screen and (max-width: 767px) {
max-width: 80%;
}
}
/* Number text (1/3 etc) */
.snap-lightbox,
.snap-slideshow {
user-select: none;
.numbertext {
color: #f2f2f2;
background-color: #000;
font-size: 12px;
padding: 8px 12px;
position: absolute;
}
}
// /* Caption text */
// .caption-container {
// text-align: center;
// background-color: black;
// padding: 2px 16px;
// color: white;
// }
/* prev/next arrows & close button */
.snap-prev,
.snap-next {
color: #fff;
text-decoration: none !important;
font-size: 30px;
position: absolute;
height: 100%;
z-index: 800;
width: 5%;
cursor: pointer;
// Slideshow specifics
.snap-slideshow & {
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(0, 0, 0, 0.7);
height: 15%;
width: 10%;
min-height: 50px;
min-width: 50px;
&:hover {
background-color: rgba(0, 0, 0, 0.8);
transition: all 0.25s ease;
}
}
// Lightbox-specifics
.snap-lightbox & {
@media screen and (max-width: 767px) {
width: 10%;
}
}
// Item containing arrow
span {
padding: 1%;
// Lightbox specifics
.snap-lightbox & {
position: fixed;
top: 50%;
}
}
}
// Position arrows for left/right
.snap-prev {
left: 0;
.snap-lightbox & span {
left: 0.5%;
}
}
.snap-next {
right: 0;
.snap-lightbox & span {
right: 0.5%;
}
}
/* The Close Button */
.snap-close {
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 15px;
right: 15px;
height: 50px;
width: 50px;
color: white;
font-size: 50px;
font-weight: bold;
z-index: 900;
&:hover,
&:focus {
color: #999;
text-decoration: none;
cursor: pointer;
}
}