@import "../../style/themes/default"; @import "../../style/mixins/index"; @spin-prefix-cls: ~"@{ant-prefix}-spin"; @spin-dot-default: @text-color-secondary; .@{spin-prefix-cls} { color: @primary-color; vertical-align: middle; text-align: center; opacity: 0; position: absolute; transition: transform 0.3s @ease-in-out-circ; font-size: @font-size-base; display: none; &-spinning { opacity: 1; position: static; display: inline-block; } &-nested-loading { position: relative; } &-nested-loading & { position: absolute; height: 100%; width: 100%; z-index: 4; &-dot { position: absolute; top: 50%; left: 50%; margin: -@spin-dot-size / 2; } &-sm .@{spin-prefix-cls}-dot { margin: -@spin-dot-size-sm / 2; } &-lg .@{spin-prefix-cls}-dot { margin: -@spin-dot-size-lg / 2; } &-show-text .@{spin-prefix-cls}-dot { margin-top: -@spin-dot-size / 2 - 10; } &-show-text.@{spin-prefix-cls}-sm .@{spin-prefix-cls}-dot { margin-top: -@spin-dot-size-sm / 2 - 10; } &-show-text.@{spin-prefix-cls}-lg .@{spin-prefix-cls}-dot { margin-top: -@spin-dot-size-lg / 2 - 10; } &-text { position: absolute; top: 50%; width: 100%; padding-top: (@spin-dot-size - @font-size-base) / 2 + 2; } &-sm .@{spin-prefix-cls}-text { padding-top: (@spin-dot-size-sm - @font-size-base) / 2 + 2; } &-lg .@{spin-prefix-cls}-text { padding-top: (@spin-dot-size-lg - @font-size-base) / 2 + 2; } } &-container { transition: all 0.3s @ease-in-out; position: relative; } &-blur { opacity: 0.7; -webkit-filter: blur(1px); filter: blur(1px); /* IE6~IE9 */ filter: ~"progid\:DXImageTransform\.Microsoft\.Blur(PixelRadius\=1, MakeShadow\=false)"; // lesshint duplicateProperty: false // workround for a strange style bug in safari: // https://github.com/ant-design/ant-design/issues/4622 // have no clue why this works -webkit-transform: translateZ(0); &:after { content: ''; position: absolute; left: 0; right: 0; top: 0; bottom: 0; background: transparent; } } // tip // ------------------------------ &-tip { color: @spin-dot-default; } // dots // ------------------------------ &-dot { position: relative; display: block; .square(@spin-dot-size); transform: rotate(45deg); animation: antRotate 2s infinite linear; i { width: 9px; height: 9px; border-radius: 100%; background-color: @primary-color; transform: scale(0.6); display: block; position: absolute; opacity: 0.3; animation: antSpinMove 1s infinite linear alternate; transform-origin: 50% 50%; &:nth-child(1) { left: 0; top: 0; } &:nth-child(2) { right: 0; top: 0; animation-delay: 0.4s; } &:nth-child(3) { right: 0; bottom: 0; animation-delay: 0.8s; } &:nth-child(4) { left: 0; bottom: 0; animation-delay: 1.2s; } } } // Sizes // ------------------------------ // small &-sm &-dot { .square(@spin-dot-size-sm); i { width: 6px; height: 6px; } } // large &-lg &-dot { .square(@spin-dot-size-lg); i { width: 14px; height: 14px; } } &&-show-text &-text { display: block; } } @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { /* IE10+ */ .@{spin-prefix-cls}-blur { background: @component-background; opacity: 0.5; } } @keyframes antSpinMove { to { transform: scale(0.9); opacity: 1; } } @keyframes antRotate { to { transform: rotate(405deg); } }