viur-ignite-css
Version:
Core of VIUR Ignite - a less framework
172 lines (151 loc) • 3.04 kB
text/less
@charset "UTF-8";
/*
* SPINNER
*/
@spinnerColor: @complementColor;
@spinnerBackColor: @complementColor;
// Based on SpinKit:
// https://github.com/tobiasahlin/SpinKit
.spinner-overlay {
transition: all .7s ease;
width:100%;
height:0;
background: fadeout(@spinnerBackColor,100%);
pointer-events: none;
}
.spinner {
width: 20%;
max-width: 100px;
text-align: center;
display: flex;
padding:5px;
transition: all .7s ease;
transition-delay: .7s;
opacity: 0;
left:50%;
user-select: none;
transform: translate(-50%,-50%);
}
.spinner-square {
flex: 1;
background-color: @spinnerColor;
display: inline-block;
margin:0 2%;
opacity: 0;
user-select: none;
&:after {
content:'';
width:100%;
padding-bottom: 100%;
display: block;
}
}
.is-busy {
position: relative;
min-height: 200px;
& > .spinner-overlay {
width: 100%;
height:100%;
top:0;
left:0;
border:1px dashed @spinnerBackColor;
position: absolute;
background: fadeout(@spinnerBackColor,65%);
pointer-events: auto;
.zIndex('alert',0);
& .spinner {
position: absolute;
top: 50%;
opacity: 1;
.zIndex('alert',1);
& .spinner-square {
animation: spin-square-ani 1.4s infinite ease-in-out both;
&:nth-of-type(odd) {
animation-delay: -0.32s;
}
&:nth-of-type(even) {
animation-delay: -0.16s;
}
&:first-of-type {
animation-delay: -0.48s;
}
&:last-of-type {
animation-delay: 0s;
}
}
}
}
}
@keyframes spin-square-ani {
0%, 80%, 100% {
opacity: 0.2;
} 40% {
opacity: 1;
}
}
// Based on Single Element CSS Spinners:
// https://github.com/lukehaas/css-loaders
.single-spinner {
transition: all .7s ease;
opacity: 0;
pointer-events: none;
user-select: none;
margin:-.8em 1.8em 6px;
text-indent: -9999em;
}
.single-spinner:before,
.single-spinner:after {
position: absolute;
top: 0;
content: '';
}
.single-spinner:before {
left: -.6em;
animation-delay: -0.34s;
}
.single-spinner:after {
left: .6em;
}
.is-busy,
.is-loading,
[aria-busy=true] {
& .single-spinner,
& .single-spinner:before,
& .single-spinner:after {
background: @spinnerColor;
animation: single-spinner-ani 1s infinite ease-in-out;
width: .4em;
height: .4em;
}
& .single-spinner {
color: #ffffff;
margin: .1em .6em .3em 1em;
position: relative;
transform: translateZ(0);
animation-delay: -0.16s;
display: inline-block;
cursor: progress;
vertical-align: middle;
}
}
@keyframes single-spinner-ani {
0%,
80%,
100% {
opacity: .2;
}
40% {
opacity: 1;
}
}
// => Spinner Media Queries
.media-mixin(@break) when (@break = @breakSmall) {
}
.media-mixin(@break) when (@break = @breakMedium) {
}
.media-mixin(@break) when (@break = @breakLarge) {
}
.media-mixin(@break) when (@break = @break2x) {
}
.media-mixin(@break) when (@break = @breakPrint) {
}