UNPKG

iep-ui

Version:

An enterprise-class UI design language and Vue-based implementation

341 lines (324 loc) 7.85 kB
@import '../../style/themes/index'; @import '../../style/mixins/index'; @image-prefix-cls: ~'@{ant-prefix}-image'; @image-preview-prefix-cls: ~'@{image-prefix-cls}-preview'; @zindex-preview-mask: 1000; @preview-mask-bg: fade(#000, 50%); @text-color: #bbb; @text-color-disabled: darken(@text-color, 30%); @background-color: #f3f3f3; .reset() { margin: 0; padding: 0; box-sizing: border-box; } .box() { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .@{image-prefix-cls} { position: relative; display: inline-block; &-img { width: 100%; height: auto; &-placeholder { background-color: @image-bg; background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTQuNSAyLjVoLTEzQS41LjUgMCAwIDAgMSAzdjEwYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNXpNNS4yODEgNC43NWExIDEgMCAwIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTguMDMgNi44M2EuMTI3LjEyNyAwIDAgMS0uMDgxLjAzSDIuNzY5YS4xMjUuMTI1IDAgMCAxLS4wOTYtLjIwN2wyLjY2MS0zLjE1NmEuMTI2LjEyNiAwIDAgMSAuMTc3LS4wMTZsLjAxNi4wMTZMNy4wOCAxMC4wOWwyLjQ3LTIuOTNhLjEyNi4xMjYgMCAwIDEgLjE3Ny0uMDE2bC4wMTUuMDE2IDMuNTg4IDQuMjQ0YS4xMjcuMTI3IDAgMCAxLS4wMi4xNzV6IiBmaWxsPSIjOEM4QzhDIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4=); background-repeat: no-repeat; background-position: center center; background-size: 30%; .box(); } } &-mask { position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: flex; align-items: center; justify-content: center; color: @text-color-inverse; background: fade(@black, 50%); cursor: pointer; opacity: 0; transition: opacity @animation-duration-slow; &-info { .@{iconfont-css-prefix} { margin-inline-end: @margin-xss; } } &:hover { opacity: 1; } } &-preview { .modal-mask(); text-align: center; height: 100%; pointer-events: none; &-body { .box(); overflow: hidden; } &.zoom-enter, &.zoom-appear { transform: none; opacity: 0; animation-duration: 0.3s; } &-mask { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: @zindex-preview-mask; height: 100%; background-color: @preview-mask-bg; filter: ~'alpha(opacity=50)'; &-hidden { display: none; } } &-img { cursor: grab; transform: scale3d(1, 1, 1); transition: transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s; user-select: none; vertical-align: middle; max-width: 100%; max-height: 100%; pointer-events: auto; &-wrapper { .box(); transition: transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s; &::before { content: ''; display: inline-block; height: 50%; width: 1px; margin-right: -1px; } } } &-moving { .@{image-prefix-cls}-preview-img { cursor: grabbing; &-wrapper { transition-duration: 0s; } } } &-wrap { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: @zindex-preview-mask; overflow: auto; outline: 0; -webkit-overflow-scrolling: touch; } &-operations { .reset(); pointer-events: auto; list-style: none; position: absolute; display: flex; top: 0; right: 0; width: 100%; align-items: center; flex-direction: row-reverse; z-index: 1; color: @text-color; background: fade(@preview-mask-bg, 10%); &-operation { padding: 10px; cursor: pointer; margin-left: 10px; &-disabled { pointer-events: none; svg { fill: @text-color-disabled !important; } } &:last-of-type { margin-left: 0; } } &-icon { font-size: 18px; svg { width: 18px; height: 18px; fill: #fff; } } } &-switch-left { position: absolute; left: 10px; top: 50%; width: 44px; height: 44px; margin-top: -22px; background: fade(@text-color, 45%); border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: 1; cursor: pointer; pointer-events: auto; color: @text-color; &-disabled { background: fade(@text-color, 30%); color: @text-color-disabled; cursor: not-allowed; > .anticon { cursor: not-allowed; } } > .anticon { font-size: 24px; } } &-switch-right { position: absolute; right: 10px; top: 50%; cursor: pointer; width: 44px; height: 44px; margin-top: -22px; background: fade(@text-color, 45%); border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: 1; pointer-events: auto; color: @text-color; &-disabled { background: fade(@text-color, 20%); color: @text-color-disabled; cursor: not-allowed; > .anticon { cursor: not-allowed; } } > .anticon { font-size: 24px; } } } } .fade-enter, .fade-appear { animation-duration: 0.2s; animation-fill-mode: both; animation-play-state: paused; opacity: 0; animation-timing-function: linear; } .fade-leave { animation-duration: 0.2s; animation-fill-mode: both; animation-play-state: paused; animation-timing-function: linear; } .fade-enter.fade-enter-active, .fade-appear.fade-appear-active { animation-name: rcImageFadeIn; animation-play-state: running; } .fade-leave.fade-leave-active { animation-name: rcImageFadeOut; animation-play-state: running; pointer-events: none; } @keyframes rcImageFadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes rcImageFadeOut { 0% { opacity: 1; } 100% { opacity: 0; } } .zoom-enter, .zoom-appear { -webkit-animation-duration: 0.2s; animation-duration: 0.2s; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-play-state: paused; animation-play-state: paused; -webkit-transform: scale(0); transform: scale(0); opacity: 0; -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); } .zoom-leave { -webkit-animation-duration: 0.2s; animation-duration: 0.2s; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-play-state: paused; animation-play-state: paused; -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); } .zoom-enter.zoom-enter-active, .zoom-appear.zoom-appear-active { -webkit-animation-name: rcImageZoomIn; animation-name: rcImageZoomIn; -webkit-animation-play-state: running; animation-play-state: running; } .zoom-leave.zoom-leave-active { -webkit-animation-name: rcImageZoomOut; animation-name: rcImageZoomOut; -webkit-animation-play-state: running; animation-play-state: running; pointer-events: none; } @keyframes rcImageZoomIn { 0% { -webkit-transform: scale(0.2); transform: scale(0.2); opacity: 0; } 100% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; } } @keyframes rcImageZoomOut { 0% { -webkit-transform: scale(1); transform: scale(1); } 100% { -webkit-transform: scale(0.2); transform: scale(0.2); opacity: 0; } }