UNPKG

@rc-component/trigger

Version:

base abstract trigger component for react

128 lines (110 loc) 2.49 kB
@triggerPrefixCls: rc-trigger-popup; .@{triggerPrefixCls} { position: absolute; top: -9999px; left: -9999px; z-index: 1050; &-hidden { display: none; } .effect() { animation-duration: 0.3s; animation-fill-mode: both; } &-zoom-enter, &-zoom-appear { opacity: 0; animation-play-state: paused; animation-timing-function: cubic-bezier(0.18, 0.89, 0.32, 1.28); .effect(); } &-zoom-leave { .effect(); animation-play-state: paused; animation-timing-function: cubic-bezier(0.6, -0.3, 0.74, 0.05); } &-zoom-enter&-zoom-enter-active, &-zoom-appear&-zoom-appear-active { animation-name: rcTriggerZoomIn; animation-play-state: running; } &-zoom-leave&-zoom-leave-active { animation-name: rcTriggerZoomOut; animation-play-state: running; } &-arrow { z-index: 1; width: 0px; height: 0px; background: #000; border-radius: 100vw; box-shadow: 0 0 0 3px black; } @keyframes rcTriggerZoomIn { 0% { transform: scale(0, 0); transform-origin: var(--arrow-x, 50%) var(--arrow-y, 50%); opacity: 0; } 100% { transform: scale(1, 1); transform-origin: var(--arrow-x, 50%) var(--arrow-y, 50%); opacity: 1; } } @keyframes rcTriggerZoomOut { 0% { transform: scale(1, 1); transform-origin: var(--arrow-x, 50%) var(--arrow-y, 50%); opacity: 1; } 100% { transform: scale(0, 0); transform-origin: var(--arrow-x, 50%) var(--arrow-y, 50%); opacity: 0; } } // =============== Unique Body =============== &-unique-body { position: absolute; z-index: 0; box-sizing: border-box; border: 1px solid red; background: green; &-hidden { display: none; } &-visible { transition: all 0.1s; } } // Debug &-unique-controlled { border-color: rgba(0, 0, 0, 0.01) !important; background: transparent !important; z-index: 1; } // Motion Content &-motion-content { // Fade motion &-fade-appear { opacity: 0; animation-duration: 0.3s; animation-fill-mode: both; animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2); } &-fade-appear&-fade-appear-active { animation-name: rcTriggerFadeIn; } @keyframes rcTriggerFadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } } } @import './index/Mask'; @import './index/Mobile';