2021-06-12 13:39:06 +00:00
|
|
|
/*
|
|
|
|
██████ █████ ██ ██ ███████ ██████ ██ ██ ██████ ██████ ██ ██
|
|
|
|
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
|
|
|
██ ███ ███████ ██ ██ █████ ██████ ████ ██████ ██ ██ ███
|
|
|
|
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
|
|
|
██████ ██ ██ ███████ ███████ ███████ ██ ██ ██ ██████ ██████ ██ ██
|
|
|
|
|
|
|
|
A pure css gallery, made with a bunch of wonderful hacks! Will be upgraded to
|
|
|
|
be (slightly) less hacky once :target-within lands in browsers.
|
|
|
|
|
|
|
|
Exported to codepen: https://codepen.io/sbrl/details/YzZJYxg
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2021-06-08 23:34:25 +00:00
|
|
|
.gallerybox {
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
/*
|
|
|
|
The <picture /> element causes a small amount of extra padding at the
|
|
|
|
bottom of the element, so we use this to balance out the look at the top
|
|
|
|
ideally we'd shift the <picture> out of the way, but we can't without also
|
|
|
|
shifting the <img /> inside
|
|
|
|
*/
|
|
|
|
padding-top: 0.2em;
|
|
|
|
}
|
|
|
|
|
|
|
|
.gallerybox-gallery {
|
|
|
|
--gallerybox-nextprev-padding: 5vw;
|
|
|
|
--gallerybox-nextprev-move: 0.2em;
|
|
|
|
--gallerybox-nextprev-hover: 0.1em;
|
|
|
|
|
|
|
|
max-width: 80vmax;
|
|
|
|
|
|
|
|
display: grid;
|
|
|
|
grid-template-columns: auto;
|
|
|
|
grid-template-rows: auto;
|
|
|
|
grid-template-areas: "main";
|
|
|
|
}
|
|
|
|
|
|
|
|
/* .gallerybox picture {
|
|
|
|
position: relative;
|
|
|
|
top: -1em;
|
|
|
|
}
|
|
|
|
.gallerybox picture > img {
|
|
|
|
position: relative;
|
|
|
|
top: 1em;
|
|
|
|
} */
|
|
|
|
|
|
|
|
.gallerybox-item {
|
|
|
|
grid-area: main;
|
|
|
|
z-index: 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
.gallerybox-item > figcaption {
|
|
|
|
background: hsla(0, 0%, 95%, 0.75);
|
|
|
|
position: absolute;
|
|
|
|
bottom: 0.25em; left: 0; right: 0;
|
|
|
|
padding: 0.75em 1em;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.gallerybox-gallery > .gallerybox-item:target {
|
|
|
|
display: block;
|
|
|
|
z-index: 100;
|
|
|
|
}
|
|
|
|
/* .gallerybox-gallery > .gallerybox-item:not(:target) {
|
|
|
|
display: none;
|
|
|
|
z-index: 2;
|
|
|
|
}
|
|
|
|
.gallerybox-item:not(:target) ~ .gallerybox-item:last-child {
|
|
|
|
display: block;
|
|
|
|
z-index: 2;
|
|
|
|
} */
|
|
|
|
|
|
|
|
/*
|
|
|
|
.gallerybox-gallery:target-within > .gallerybox-item:target {
|
|
|
|
display: block;
|
|
|
|
}
|
|
|
|
.gallerybox-gallery:target-within > .gallerybox-item:not(:target) {
|
|
|
|
display: none;
|
|
|
|
} */
|
|
|
|
|
|
|
|
|
|
|
|
.gallerybox-item {
|
|
|
|
position: relative;
|
|
|
|
}
|
|
|
|
.gallerybox-item img {
|
|
|
|
max-width: 100%;
|
|
|
|
}
|
|
|
|
:where(.gallerybox-prev, .gallerybox-next) {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
height: 100%;
|
|
|
|
position: absolute; top: 0;
|
|
|
|
vertical-align: middle;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 4em;
|
|
|
|
color: hsla(0, 0%, 100%, 0.8) !important;
|
|
|
|
text-decoration: none;
|
|
|
|
transform: none;
|
|
|
|
transition: transform 0.25s;
|
|
|
|
}
|
|
|
|
.gallerybox-item > .gallerybox-prev {
|
|
|
|
padding-left: var(--gallerybox-nextprev-padding);
|
|
|
|
left: 0;
|
|
|
|
}
|
|
|
|
.gallerybox-item > .gallerybox-next {
|
|
|
|
padding-right: var(--gallerybox-nextprev-padding);
|
|
|
|
right: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
:where(.gallerybox-prev, .gallerybox-next):hover {
|
|
|
|
color: hsla(0, 0%, 100%, 1) !important;
|
|
|
|
}
|
|
|
|
:is(.gallerybox-prev, .gallerybox-next):active {
|
|
|
|
color: hsla(0, 0%, 100%, 1) !important;
|
|
|
|
}
|
|
|
|
.gallerybox-next:hover { transform: translateX(calc(var(--gallerybox-nextprev-hover) * -1)); }
|
|
|
|
.gallerybox-prev:hover { transform: translateX(var(--gallerybox-nextprev-hover)); }
|
|
|
|
|
|
|
|
.gallerybox-prev:active { transform: translateX(calc(var(--gallerybox-nextprev-move) * -1)); }
|
|
|
|
.gallerybox-next:active { transform: translateX(var(--gallerybox-nextprev-move)); }
|