/* * https://github.com/morethanwords/tweb * Copyright (C) 2019-2021 Eduard Kuzmenko * https://github.com/morethanwords/tweb/blob/master/LICENSE */ .media-viewer { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, .88); /* color: var(--secondary-text-color); */ display: flex; align-items: center; justify-content: center; @include respond-to(handhelds) { background: #000; } &-author { height: 100%; cursor: pointer; display: flex; align-items: center; @include respond-to(handhelds) { margin-left: 1.5rem; } } &-userpic { margin-right: 1rem; @include respond-to(handhelds) { display: none; } } &-name { line-height: var(--line-height); font-weight: 500; margin: .0625rem 0; @include respond-to(not-handhelds) { margin: .0625rem 0 .125rem; } } &-date { line-height: var(--line-height); font-size: .875rem; } &-buttons { position: absolute; top: 0; right: 0; display: flex; flex-flow: row nowrap; padding: .5rem .75rem; .btn-icon { margin: 0 .25rem; transition: var(--open-duration); @include 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; min-height: 50px; } */ &-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 { position: absolute; text-align: center; color: #fff; //color: var(--secondary-text-color); word-break: break-word; overflow: hidden; text-overflow: ellipsis; z-index: 5; bottom: 3rem; left: 50%; transform: translateX(-50%); padding: 0 .5rem; background-color: rgba(0, 0, 0, .6); border-radius: 8px; opacity: 0; transition: opacity var(--open-duration); @include respond-to(handhelds) { border-radius: 0; width: 100%; } > .scrollable { padding: .5rem 0; max-height: 10rem; max-width: 1280px; position: relative; } .media-viewer-whole.active & { opacity: 1; @include hover() { opacity: .2; &:hover { opacity: 1; //color: #fff; } } } } &-switcher { position: absolute; left: 0; top: 3.75rem; width: 7rem; height: calc(100% - 7.5rem); cursor: pointer; z-index: 5; @include hover() { height: calc(100% - 3.75rem); &: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: var(--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/* , &-canvas */ { position: fixed!important; z-index: 4; //transition: .5s all; display: flex; justify-content: center; align-items: center; // mb net min-height: auto!important; left: 0; top: 0; transform-origin: top left; //transform-origin: bottom right; overflow: hidden; transform: translateZ(0) scale3d(1, 1, 1); border-radius: 0; &:not(.center) { -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); // fix border-radius overflow } // эти значения должны быть такими же, как при установке maxWidth и maxHeight в openMedia! //max-width: 100%; //max-width: calc(1vw - 16px); //max-height: 100%; //max-height: calc((var(--vh, 1vh) * 100) - 100px); // эти значения должны быть такими же, как при установке maxWidth и maxHeight в openMedia! @include respond-to(handhelds) { overflow: visible; //max-height: 100% !important; //max-width: 100vw !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; transition: var(--open-duration) opacity; /* border-radius: inherit; transition: var(--open-duration) border-radius; */ //&.thumbnail { position: absolute; //z-index: -1; //} } // !SAFARI svg { img, video { position: unset; } } &.active { transition: transform var(--open-duration), border-radius var(--open-duration), opacity var(--open-duration) calc(var(--open-duration) / 8); } &.active.opening { transition: transform var(--open-duration), border-radius var(--open-duration), opacity var(--open-duration) 0s; } &.moving { transition: transform var(--move-duration) ease; } /* &.center { transition: none !important; } */ &.no-transition { transition: none !important; } &.center { left: 50% !important; top: 50% !important; transform: translate3d(-50%, -50%, 0) !important; max-width: calc(100vw - 16px); max-height: calc((var(--vh, 1vh) * 100) - 120px); @include respond-to(handhelds) { width: 100% !important; height: 100% !important; max-width: 100vw !important; // max-height: 100vh !important; // TODO: max-height: calc((var(--vh, 1vh) * 100)); //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/* , .default__gradient-bottom */ { bottom: -61px; } } } /* @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 { opacity: 0; } } } &-appear { opacity: 0; visibility: hidden; transition: opacity var(--open-duration) 0s, visibility 0s var(--open-duration); } &-topbar { position: absolute; top: 0; left: 0; right: 0; height: 3.5rem; display: flex; align-items: center; justify-content: space-between; z-index: 5; padding: 0 1.25rem; .btn-icon, .media-viewer-author { color: #8b8b8b; @include animation-level(2) { transition: color var(--open-duration) ease-in-out; } @include hover() { color: #fff; } } &-left { display: flex; align-items: center; } @include respond-to(handhelds) { padding: 0 .5rem; // transform: translateY(-3.5rem); // background: rgba(0, 0, 0, .2); /* @include animation-level(2) { transition: transform var(--open-duration) ease-in-out; } */ } } // возможно тут это вообще не нужно &-aspecter { width: 100%; height: 100%; transform: scale3d(1, 1, 1); //overflow: hidden; // WARNING position: absolute; border-radius: 0; display: flex; align-items: center; justify-content: center; } &-mover.active &-aspecter { transition: width var(--open-duration), height var(--open-duration), transform var(--open-duration), border-radius var(--open-duration); //transition: var(--open-duration) all; } &-whole { --open-duration: .2s; --move-duration: .35s; top: 0; left: 0; width: 100%; height: 100%; position: fixed!important; display: block; z-index: 4; visibility: hidden; transition: visibility 0s var(--open-duration); body.animation-level-0 & { --open-duration: 0s; --move-duration: 0s; } &.active { visibility: visible; transition-delay: 0s; .overlays, .media-viewer-appear/* , > .btn-icon */ { opacity: 1; visibility: visible; transition: opacity var(--open-duration) 0s, visibility 0s 0s; } } @include respond-to(handhelds) { /* > .btn-icon { top: 8px; position: fixed; z-index: 5; opacity: 0; transition: opacity var(--open-duration) 0s, visibility 0s var(--open-duration); } */ .btn-menu-toggle { &.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 var(--open-duration) 0s, visibility 0s var(--open-duration); }