UNPKG

vui-design

Version:

A high quality UI Toolkit based on Vue.js

189 lines (166 loc) 3.71 kB
@vui-spin: ~"@{vui}-spin"; .@{vui-spin} { display:inline-block; box-sizing:border-box; vertical-align:middle; &-children { display:block; box-sizing:border-box; transition:opacity @transition-duration @transition-timing-function; } &-spinner { display:block; box-sizing:border-box; color:@spin-color; text-align:center; line-height:1; } &-indicator { display:inline-block; box-sizing:border-box; vertical-align:middle; } &-message { display:block; box-sizing:border-box; } &-dot { position:relative; display:block; box-sizing:border-box; border-radius:50%; animation:vuiSpinDotRotate 2s infinite linear; &-item { position:absolute; top:0; bottom:0; left:0; right:0; display:block; width:100%; height:100%; border-radius:50%; opacity:0.33333333; animation:vuiSpinDotItemTwinkle 1s linear infinite alternate; &:before { content:""; position:absolute; top:0; left:50%; display:block; border-radius:50%; background-color:@spin-color; } &:nth-child(1) { transform:rotate(0deg); animation-delay:0s; } &:nth-child(2) { transform:rotate(120deg); animation-delay:0.33333333s; } &:nth-child(3) { transform:rotate(-120deg); animation-delay:0.66666666s; } } } &-small { font-size:@spin-font-size-sm; } &-small &-message { margin-top:@spin-message-margin-top-sm; } &-small &-dot { width:@spin-dot-size-sm; height:@spin-dot-size-sm; &-item:before { width:@spin-dot-item-size-sm; height:@spin-dot-item-size-sm; margin-left:-@spin-dot-item-size-sm / 2; } } &-medium { font-size:@spin-font-size-md; } &-medium &-message { margin-top:@spin-message-margin-top-md; } &-medium &-dot { width:@spin-dot-size-md; height:@spin-dot-size-md; &-item:before { width:@spin-dot-item-size-md; height:@spin-dot-item-size-md; margin-left:-@spin-dot-item-size-md / 2; } } &-large { font-size:@spin-font-size-lg; } &-large &-message { margin-top:@spin-message-margin-top-lg; } &-large &-dot { width:@spin-dot-size-lg; height:@spin-dot-size-lg; &-item:before { width:@spin-dot-item-size-lg; height:@spin-dot-item-size-lg; margin-left:-@spin-dot-item-size-lg / 2; } } &-fullscreen { position:fixed; top:0; bottom:0; left:0; right:0; z-index:10; background-color:rgba(255,255,255,0.5); } &-fullscreen &-spinner { position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); } &-with-children { position:relative; display:block; } &-with-children &-spinner { position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); } &-spinning &-children { overflow:hidden; opacity:0.5; user-select:none; pointer-events:none; } &-fade-enter-active { animation:vuiSpinFadeIn @animation-in-duration @animation-in-timing-function both; } &-fade-leave-active { animation:vuiSpinFadeOut @animation-out-duration @animation-out-timing-function both; } } @keyframes vuiSpinDotRotate { 0% { transform:rotateZ(0deg) translate3d(0, 0, 0); } 100% { transform:rotateZ(720deg) translate3d(0, 0, 0); } } @keyframes vuiSpinDotItemTwinkle { 100% { opacity:1; } } @keyframes vuiSpinFadeIn { 0% { opacity:0; } 100% { opacity:1; } } @keyframes vuiSpinFadeOut { 0% { opacity:1; } 30% { opacity:1; } 100% { opacity:0; } }