b360d23661
Keep the composited layer created by the browser during the animation. Makes the border of the transformed thumb look better.
244 lines
4.6 KiB
SCSS
244 lines
4.6 KiB
SCSS
.content {
|
|
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
padding: 50px 0 33px;
|
|
width: 100%;
|
|
min-height: calc(100% - 83px);
|
|
-webkit-overflow-scrolling: touch;
|
|
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 1px;
|
|
background: white(.02);
|
|
}
|
|
|
|
&--sidebar {
|
|
width: calc(100% - 300px);
|
|
}
|
|
|
|
// Animations -------------------------------------------------------------- //
|
|
&.contentZoomIn .album,
|
|
&.contentZoomIn .photo {
|
|
animation-name: zoomIn;
|
|
}
|
|
|
|
&.contentZoomIn .divider {
|
|
animation-name: fadeIn;
|
|
}
|
|
|
|
&.contentZoomOut .album,
|
|
&.contentZoomOut .photo {
|
|
animation-name: zoomOut;
|
|
}
|
|
|
|
&.contentZoomOut .divider {
|
|
animation-name: fadeOut;
|
|
}
|
|
|
|
// Albums and Photos ------------------------------------------------------ //
|
|
.album,
|
|
.photo {
|
|
position: relative;
|
|
width: 202px;
|
|
height: 202px;
|
|
margin: 30px 0 0 30px;
|
|
cursor: default;
|
|
|
|
animation-duration: .2s;
|
|
animation-fill-mode: forwards;
|
|
animation-timing-function: $timing;
|
|
|
|
img {
|
|
position: absolute;
|
|
width: 200px;
|
|
height: 200px;
|
|
background: #222;
|
|
color: #222;
|
|
box-shadow: 0 2px 5px black(.5);
|
|
border: 1px solid white(.5);
|
|
transition: opacity .3s ease-out, transform .3s ease-out, border-color .3s ease-out;
|
|
}
|
|
|
|
&:hover img,
|
|
&.active img {
|
|
border-color: $colorBlue;
|
|
}
|
|
|
|
&:active img {
|
|
transition: none;
|
|
border-color: darken($colorBlue, 15%);
|
|
}
|
|
}
|
|
|
|
// Album -------------------------------------------------------------- //
|
|
.album {
|
|
img:first-child,
|
|
img:nth-child(2) {
|
|
transform: rotate(0) translateY(0) translateX(0);
|
|
opacity: 0;
|
|
}
|
|
|
|
&:hover img:nth-child(1),
|
|
&:hover img:nth-child(2) {
|
|
opacity: 1;
|
|
// Keep the composited layer created by the browser during the animation.
|
|
// Makes the border of the transformed thumb look better.
|
|
// See https://github.com/electerious/Lychee/pull/626 for more.
|
|
will-change: transform;
|
|
}
|
|
|
|
&:hover img:nth-child(1) {
|
|
transform: rotate(-2deg) translateY(10px) translateX(-12px);
|
|
}
|
|
|
|
&:hover img:nth-child(2) {
|
|
transform: rotate(5deg) translateY(-8px) translateX(12px);
|
|
}
|
|
}
|
|
|
|
// Overlay -------------------------------------------------------------- //
|
|
.album .overlay,
|
|
.photo .overlay {
|
|
position: absolute;
|
|
margin: 0 1px;
|
|
width: 200px;
|
|
background: linear-gradient(to bottom, black(0), black(.6));
|
|
bottom: 1px;
|
|
}
|
|
|
|
// No overlay for empty albums
|
|
.album img[data-overlay='false'] + .overlay {
|
|
background: none;
|
|
}
|
|
|
|
.photo .overlay { opacity: 0; }
|
|
|
|
.photo:hover .overlay,
|
|
.photo.active .overlay {
|
|
opacity: 1;
|
|
}
|
|
|
|
.album .overlay h1,
|
|
.photo .overlay h1 {
|
|
min-height: 19px;
|
|
width: 180px;
|
|
margin: 12px 0 5px 15px;
|
|
color: #fff;
|
|
text-shadow: 0 1px 3px black(.4);
|
|
font-size: 16px;
|
|
font-weight: bold;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.album .overlay a,
|
|
.photo .overlay a {
|
|
display: block;
|
|
margin: 0 0 12px 15px;
|
|
font-size: 11px;
|
|
color: #ccc;
|
|
text-shadow: 0 1px 3px black(.4);
|
|
}
|
|
|
|
.photo .overlay a .iconic {
|
|
fill: #ccc;
|
|
margin: 0 5px 0 0;
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
|
|
.album img[data-overlay='false'] + .overlay h1,
|
|
.album img[data-overlay='false'] + .overlay a {
|
|
text-shadow: none;
|
|
}
|
|
|
|
// Badge -------------------------------------------------------------- //
|
|
.album .badges,
|
|
.photo .badges {
|
|
position: relative;
|
|
margin: -1px 0 0 6px;
|
|
}
|
|
|
|
.album .badge,
|
|
.photo .badge {
|
|
display: none;
|
|
margin: 0 0 0 6px;
|
|
padding: 12px 8px 6px;
|
|
width: 18px;
|
|
background: $colorRed;
|
|
box-shadow: 0 0 2px black(.6);
|
|
border-radius: 0 0 5px 5px;
|
|
border: 1px solid #fff;
|
|
border-top: none;
|
|
color: #fff;
|
|
text-align: center;
|
|
text-shadow: 0 1px 0 black(.4);
|
|
opacity: .9;
|
|
|
|
&--visible {
|
|
display: inline-block;
|
|
}
|
|
|
|
.iconic {
|
|
fill: #fff;
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
}
|
|
|
|
// Divider -------------------------------------------------------------- //
|
|
.divider {
|
|
margin: 50px 0 0;
|
|
padding: 10px 0 0;
|
|
width: 100%;
|
|
opacity: 0;
|
|
border-top: 1px solid white(.02);
|
|
box-shadow: $shadow;
|
|
|
|
animation-duration: .2s;
|
|
animation-fill-mode: forwards;
|
|
animation-timing-function: $timing;
|
|
|
|
&:first-child {
|
|
margin-top: 10px;
|
|
border-top: 0;
|
|
box-shadow: none;
|
|
}
|
|
|
|
h1 {
|
|
margin: 0 0 0 30px;
|
|
color: white(.6);
|
|
font-size: 14px;
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// No content -------------------------------------------------------------- //
|
|
.no_content {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
padding-top: 20px;
|
|
color: white(.35);
|
|
text-align: center;
|
|
transform: translateX(-50%) translateY(-50%);
|
|
|
|
.iconic {
|
|
fill: white(.3);
|
|
margin: 0 0 10px;
|
|
width: 50px;
|
|
height: 50px;
|
|
}
|
|
|
|
p {
|
|
font-size: 16px;
|
|
font-weight: bold;
|
|
}
|
|
} |