/* * https://github.com/morethanwords/tweb * Copyright (C) 2019-2021 Eduard Kuzmenko * https://github.com/morethanwords/tweb/blob/master/LICENSE */ $inactive-opacity: .4; .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: var(--font-weight-bold); 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; /* &.with-caption { padding: 4rem 0; } */ } &-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: 4; // bottom: .75rem; bottom: 0; left: 0; right: 0; padding: .5rem .5rem 0; // background-color: rgba(0, 0, 0, .6); // border-radius: 8px; opacity: 0; line-height: var(--line-height); white-space: pre-wrap; background-color: transparent; @include animation-level(2) { transition: transform var(--layer-transition), opacity var(--open-duration) ease-in-out, background-color var(--open-duration) ease-in-out; } a { color: #60a5e9 !important; } .scrollable { padding: .5rem .875rem; // max-height: 10rem; max-height: 6rem; max-width: 50rem; height: 6rem; position: relative; margin: 0 auto; } .media-viewer-whole.active & { html.no-touch & { opacity: $inactive-opacity; &:hover { opacity: 1; } } html.is-touch & { opacity: .6; } } @include respond-to(handhelds) { // border-radius: 0; width: 100%; transform: translateZ(0); text-align: unset; bottom: 1.0625rem; .scrollable { padding: 0 .5rem; height: auto; } .media-viewer-whole.has-video-controls & { transform: translate3d(0, -69px, 0); } .media-viewer-whole.backwards & { visibility: hidden; } @include hover() { background-color: #000; opacity: 1 !important; } } &.is-focused { background-color: #000; opacity: 1 !important; } } &-switcher { position: absolute; left: 0; top: 3.75rem; width: 7rem; height: calc(100% - 7.5rem); cursor: pointer; z-index: 5; html.no-touch & { height: calc(100% - 3.75rem); &:hover { .tgico-down { 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, .canvas-thumbnail { 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: 100vw; // max-height: calc((var(--vh, 1vh) * 100) - 120px); max-height: calc((var(--vh, 1vh) * 100) - 15rem); @include respond-to(handhelds) { width: 100% !important; height: 100% !important; max-width: 100vw !important; max-height: calc((var(--vh, 1vh) * 100) - 120px); // 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: -62px; } } } /* @include respond-to(handhelds) { &.moving { .ckin__player { .default__controls, .default__gradient-bottom { display: none; } } } } */ img:not(.thumbnail), video, .canvas-thumbnail { /* 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; @include animation-level(2) { 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: #fff; opacity: $inactive-opacity; @include animation-level(2) { transition: opacity var(--open-duration) ease-in-out, color var(--open-duration) ease-in-out, background-color var(--open-duration) ease-in-out; } @include hover() { opacity: 1; } } &-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; @include animation-level(2) { transition: opacity var(--open-duration) 0s, visibility 0s 0s; } } .media-viewer-caption { visibility: visible; // transition-delay: 0s, 0s, var(--open-duration), 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:not(.playback-rate) { color: rgba(255, 255, 255, $inactive-opacity); opacity: 1; &.menu-open { color: #fff; background-color: rgba(112, 117, 121, .2) !important; } } &.hide-caption { .media-viewer-caption { opacity: 0 !important; pointer-events: none; } } } &.highlight-switchers { .media-viewer-switcher > span { opacity: 1; } } &.no-forwards { img { pointer-events: none; } .media-viewer-caption { user-select: none; } } } &-movers { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 4; @include animation-level(2) { transition: transform var(--open-duration); } } /* &-switchers { position: relative; width: $large-screen; max-width: 100%; height: 100%; margin: 0 auto; } */ } .tgico-zoom { &:before { content: $tgico-zoomout; } &.zoom-in:before { content: $tgico-zoomin; } } .zoom-container { width: 17.125rem; height: 3.375rem; background-color: rgba(0, 0, 0, .4); border-radius: $border-radius-big; padding: .5rem; opacity: 1; display: flex; align-items: center; justify-content: space-between; position: absolute; bottom: 1.25rem; left: 50%; transform: translateX(-50%); z-index: 5; @include animation-level(2) { transition: opacity var(--open-duration); } .btn-icon { color: #fff; &.inactive { pointer-events: none; opacity: $inactive-opacity; } } .progress-line { --color: #fff; --height: 2px; flex: 1 1 auto; margin: 0 1px; &:before { opacity: 1; } } &:not(.is-visible), .media-viewer-whole:not(.active) & { opacity: 0; pointer-events: none; } &.is-visible { opacity: 1; & ~ .media-viewer-caption { opacity: 0 !important; pointer-events: none; } & ~ .media-viewer-movers { .default__button--big { opacity: 0 !important; } } } } .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); }