90 lines
1.5 KiB
CSS
90 lines
1.5 KiB
CSS
@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap");
|
|
* {
|
|
position: relative;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html {
|
|
background: #000;
|
|
color: #fff;
|
|
font-family: "Montserrat", sans-serif;
|
|
font-weight: 400;
|
|
}
|
|
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
strong {
|
|
font-weight: 700;
|
|
}
|
|
|
|
body {
|
|
min-height: 100vh;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.app {
|
|
display: grid;
|
|
padding: 5vmin;
|
|
}
|
|
|
|
.gallery {
|
|
display: flex;
|
|
gap: 1rem;
|
|
margin: 1rem 0;
|
|
align-items: center;
|
|
}
|
|
|
|
.image {
|
|
flex: 1 1 100%;
|
|
opacity: 0.7;
|
|
transition: opacity 0.3s linear;
|
|
cursor: pointer;
|
|
}
|
|
.image img {
|
|
max-width: 100%;
|
|
height: auto;
|
|
--radius: 1rem;
|
|
border-radius: var(--radius);
|
|
}
|
|
.image .title {
|
|
display: block;
|
|
font-size: 2vw;
|
|
margin: 0.5rem 0;
|
|
color: #aaa;
|
|
}
|
|
.image .title strong {
|
|
display: block;
|
|
color: white;
|
|
}
|
|
.image[data-selected] {
|
|
opacity: 1;
|
|
flex-grow: 1.15;
|
|
flex-shrink: 0.85;
|
|
}
|
|
|
|
[data-flip] {
|
|
transition: transform 0.3s cubic-bezier(0.2, 0, 0.5, 1), border-radius 0.3s cubic-bezier(0.2, 0, 0.5, 1);
|
|
transform-origin: top left;
|
|
}
|
|
|
|
[data-flipping] {
|
|
transition: none;
|
|
transform: var(--flip-translate) var(--flip-scale);
|
|
--flip-translate: translate(calc(-1px * var(--dx)), calc(-1px * var(--dy)));
|
|
--flip-scale: scale(calc(1 / var(--dw)), calc(1 / var(--dh)));
|
|
--flip-radius: calc((var(--dw)) * var(--radius)) /
|
|
calc((var(--dh)) * var(--radius));
|
|
}
|
|
|
|
.title[data-flipping] {
|
|
transform: var(--flip-translate);
|
|
}
|
|
|
|
img[data-flipping] {
|
|
border-radius: var(--flip-radius);
|
|
} |