diff --git a/src/lib/components/Gallery.svelte b/src/lib/components/Gallery.svelte index 8645dbf..30e5258 100644 --- a/src/lib/components/Gallery.svelte +++ b/src/lib/components/Gallery.svelte @@ -1,5 +1,12 @@
-
@@ -37,4 +143,135 @@ list-style: none; gap: 1em; } + + li { + position: relative; + height: fit-content; + border-radius: 10px; + transition: border-radius .5s; + } + + figure { + width: var(--image-width, 28.125em); + height: var(--image-height, 18.75em); + background-position: center; + background-size: cover; + overflow: hidden; + border-radius: 10px; + transition: background-color .5s, background-image .5s; + margin: 0 auto; + } + + li:not(.test) figure { + background-color: rgba(0,0,0,.25); + background-image: linear-gradient(rgba(0,0,0,.125), rgba(0,0,0,.25)), var(--image); + } + + picture { + position: relative; + } + + img { + width: var(--image-width, 28.125em); + height: var(--image-height, 18.75em); + object-fit: contain; + object-position: center; + top: 0; + border-radius: 10px; + overflow: hidden; + clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); + transform: scale(1.001); + transition: transform .5s cubic-bezier(.23,.13,.45,.97), clip-path .5s cubic-bezier(.23,.13,.45,.97); + } + + li:not(.test) img { + position: absolute; + } + + figcaption { + display: grid; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + padding: 1.5em; + opacity: 0; + transition: opacity .5s, background-color .5s; + z-index: 1; + gap: .25em; + pointer-events: none; + } + + strong { + font-size: 1.25em; + letter-spacing: .05em; + } + + cite { + font-size: .75em; + font-weight: normal; + font-style: normal; + opacity: .8; + } + + a { + display: grid; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: transparent;; + color: transparent; + text-decoration: none; + transition: background-color .5s, color .5s; + justify-content: center; + align-content: center; + border-radius: 10px; + overflow: hidden; + } + + li:not(.test) a:focus { + outline: 2px solid var(--main-text-color); + } + + li:not(.test):hover img { + transform: scale(1.25); + } + + li:hover figcaption { + opacity: 1; + } + + li:hover a { + background-color: rgba(0,0,0,.75); + color: inherit; + } + + li.test { + --image-width: 100%; + --image-height: 100vh; + z-index: 1; + position: fixed; + border-radius: 0; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + } + + li.test figure { + background-color: rgba(0,0,0,0); + background-image: none; + } + + li.test figcaption { + background-color: rgba(0,0,0,.75); + opacity: 1; + } + + li.test a { + background-color: rgba(0,0,0,.75); + z-index: -1; + }