tweb/src/scss/partials/_mediaViewer.scss
morethanwords f041d1bd69 A lot of changes:
Right sidebar animation
Fix animations speed with translate3d
Folders tabs scroll
Fix ripple animation
Right sidebar translateZ blink fix
Misc
2020-09-23 23:29:53 +03:00

418 lines
7.6 KiB
SCSS

$open-duration: .2s;
//$open-duration: 10s;
$move-duration: .35s;
.media-viewer {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, .88);
/* color: $color-gray; */
display: flex;
align-items: center;
justify-content: center;
@include respond-to(handhelds) {
background: #000;
}
&-author {
position: absolute;
top: 0;
left: 0;
height: 60px;
padding: 8px 8px 8px 80px;
display: flex;
flex-direction: column;
justify-content: center;
color: #8b8b8b;
transition: $open-duration;
html.no-touch &:hover {
color: #fff;
}
}
&-userpic {
width: 44px;
height: 44px;
position: absolute;
top: 8px;
left: 20px;
@include respond-to(handhelds) {
display: none;
}
}
&-name {
font-weight: 500;
}
&-date {
font-size: 15px;
}
&-buttons {
position: absolute;
top: 0;
right: 0;
display: flex;
flex-flow: row nowrap;
padding: 8px;
.btn-icon {
margin: 0 .25rem;
transition: $open-duration;
html.no-touch &:hover {
color: #fff;
}
}
@include respond-to(handhelds) {
display: none;
}
}
&-content {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
max-height: 100%;
max-width: 100%;
overflow: hidden;
}
&-stub {
flex: 1;
}
&-container {
align-self: center;
position: relative;
max-width: 100%;
max-height: 100%;
overflow: hidden;
flex: 1 1 auto;
display: flex;
align-items: center;
}
&-media {
visibility: hidden;
}
&-caption {
flex: 1;
text-align: center;
color: $color-gray;
transition: $open-duration;
max-width: 50vw;
word-break: break-word;
overflow: hidden;
text-overflow: ellipsis;
html.no-touch &:hover {
color: #fff;
}
}
&-switcher {
position: absolute;
left: 0;
top: 60px;
width: 7rem;
height: calc(100% - 120px);
cursor: pointer;
z-index: 5;
html.no-touch & {
height: calc(100% - 60px);
&:hover {
> span {
opacity: 1;
}
}
}
@include respond-to(handhelds) {
width: 4rem;
}
&-right {
left: auto;
right: 0;
}
}
&-prev-button, &-next-button {
cursor: pointer;
position: absolute;
color: #fff;
font-size: 2rem;
left: 1rem;
top: 50%;
transform: translateY(-50%) rotate(90deg);
opacity: 0;
transition: $open-duration opacity;
z-index: 5;
/* box-shadow: 0 1px 2px 0 rgba(16, 35, 47, 0.07); */
@include respond-to(not-handhelds) {
font-size: 3rem;
left: 2rem;
}
}
&-next-button {
left: auto;
right: 1rem;
transform: translateY(-50%) rotate(-90deg);
@include respond-to(not-handhelds) {
right: 2rem;
}
}
&-mover {
position: fixed!important;
z-index: 4;
display: flex;
justify-content: center;
align-items: center; // mb net
min-height: auto!important;
//transition: .5s all;
left: 0;
top: 0;
/* left: 50%;
top: 50%; */
transform-origin: top left;
overflow: hidden;
//border-radius: 0;
// эти значения должны быть такими же, как при установке maxWidth и maxHeight в openMedia!
//max-width: 100%;
max-width: calc(100% - 16px);
//max-height: 100%;
max-height: calc(100% - 100px);
// эти значения должны быть такими же, как при установке maxWidth и maxHeight в openMedia!
@include respond-to(handhelds) {
overflow: visible;
//max-height: 100% !important;
max-width: 100% !important;
}
.ckin__player {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
> svg {
width: 100%;
height: 100%;
}
img, video {
width: 100%;
height: 100%;
max-width: 100%;
max-height: 100%;
user-select: none;
object-fit: cover;
//object-fit: contain;
opacity: 1;
//&.thumbnail {
position: absolute;
//z-index: -1;
//}
}
// !SAFARI
svg {
img, video {
position: unset;
}
}
&.active {
transition: $open-duration transform;
}
&.moving {
transition: $move-duration transform ease;
}
/* &.center {
transition: none !important;
} */
&.no-transition {
transition: none !important;
}
&.center {
left: 50% !important;
top: 50% !important;
transform: translate3d(-50%, -50%, 0) !important;
@include respond-to(handhelds) {
width: 100% !important;
height: 100% !important;
//height: calc(100% - 100px) !important;
/* height: calc(100% - 50px) !important;
top: calc(50% + 25px) !important;
img, video {
margin-top: -25px;
} */
/* img, video {
max-height: calc(100% - 100px);
} */
.ckin__player:not(.ckin__fullscreen) {
.default__controls {
bottom: -50px;
}
.default__gradient-bottom {
bottom: -50px;
}
}
}
/* @include respond-to(handhelds) {
&.moving {
.ckin__player {
.default__controls, .default__gradient-bottom {
display: none;
}
}
}
} */
img:not(.thumbnail), video {
height: auto;
width: auto;
object-fit: contain;
//max-height: calc(100% - 100px);
}
img.thumbnail {
width: auto;
object-fit: contain;
//height: auto;
}
}
&.hiding {
img, video {
transition: $open-duration opacity;
opacity: 0;
}
}
}
// возможно тут это вообще не нужно
&-aspecter {
width: 100%;
height: 100%;
transform: scale(1);
//overflow: hidden; // WARNING
position: absolute;
display: flex;
align-items: center;
justify-content: center;
}
&-mover.active &-aspecter {
transition: $open-duration all;
}
&-whole {
top: 0;
left: 0;
width: 100%;
height: 100%;
position: fixed!important;
display: block;
z-index: 4;
visibility: hidden;
transition: visibility 0s $open-duration;
&.active {
visibility: visible;
transition-delay: 0s;
.overlays, > .btn-icon {
opacity: 1;
visibility: visible;
transition: opacity $open-duration 0s, visibility 0s 0s;
}
}
@include respond-to(handhelds) {
.menu-mobile-close {
left: 20px;
}
> .btn-icon {
top: 8px;
position: fixed;
z-index: 5;
opacity: 0;
transition: opacity $open-duration 0s, visibility 0s $open-duration;
}
.btn-menu-toggle {
right: 8px;
&.menu-open {
color: #fff;
background-color: rgba(112, 117, 121, .2) !important;
}
}
}
&.highlight-switchers {
.media-viewer-switcher > span {
opacity: 1;
}
}
}
&-switchers {
position: relative;
width: $large-screen;
max-width: 100%;
height: 100%;
margin: 0 auto;
}
}
.overlays {
top: 0;
left: 0;
width: 100%;
height: 100%;
position: fixed!important;
background-color: rgba(0, 0, 0, .2);
z-index: 4;
//display: none;
opacity: 0;
visibility: hidden;
transition: opacity $open-duration 0s, visibility 0s $open-duration;
}