mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
248 lines
6.2 KiB
SCSS
248 lines
6.2 KiB
SCSS
/**
|
|
* Copyright 2015 Google Inc. All Rights Reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
@import "../variables";
|
|
|
|
|
|
.mdl-spinner {
|
|
display: inline-block;
|
|
position: relative;
|
|
width: $spinner-size;
|
|
height: $spinner-size;
|
|
|
|
&:not(.is-upgraded).is-active:after {
|
|
content: "Loading...";
|
|
}
|
|
|
|
&.is-upgraded.is-active {
|
|
animation: mdl-spinner__container-rotate $spinner-duration linear infinite;
|
|
}
|
|
}
|
|
|
|
@keyframes mdl-spinner__container-rotate {
|
|
to { transform: rotate(360deg) }
|
|
}
|
|
|
|
.mdl-spinner__layer {
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
opacity: 0;
|
|
}
|
|
|
|
.mdl-spinner__layer-1 {
|
|
border-color: $spinner-color-1;
|
|
|
|
.mdl-spinner--single-color & {
|
|
border-color: $spinner-single-color;
|
|
}
|
|
|
|
.mdl-spinner.is-active & {
|
|
animation:
|
|
mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)
|
|
$animation-curve-fast-out-slow-in infinite both,
|
|
mdl-spinner__layer-1-fade-in-out (4 * $spinner-arc-time)
|
|
$animation-curve-fast-out-slow-in infinite both;
|
|
}
|
|
}
|
|
|
|
.mdl-spinner__layer-2 {
|
|
border-color: $spinner-color-2;
|
|
|
|
.mdl-spinner--single-color & {
|
|
border-color: $spinner-single-color;
|
|
}
|
|
|
|
.mdl-spinner.is-active & {
|
|
animation:
|
|
mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)
|
|
$animation-curve-fast-out-slow-in infinite both,
|
|
mdl-spinner__layer-2-fade-in-out (4 * $spinner-arc-time)
|
|
$animation-curve-fast-out-slow-in infinite both;
|
|
}
|
|
}
|
|
|
|
.mdl-spinner__layer-3 {
|
|
border-color: $spinner-color-3;
|
|
|
|
.mdl-spinner--single-color & {
|
|
border-color: $spinner-single-color;
|
|
}
|
|
|
|
.mdl-spinner.is-active & {
|
|
animation:
|
|
mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)
|
|
$animation-curve-fast-out-slow-in infinite both,
|
|
mdl-spinner__layer-3-fade-in-out (4 * $spinner-arc-time)
|
|
$animation-curve-fast-out-slow-in infinite both;
|
|
}
|
|
}
|
|
|
|
.mdl-spinner__layer-4 {
|
|
border-color: $spinner-color-4;
|
|
|
|
.mdl-spinner--single-color & {
|
|
border-color: $spinner-single-color;
|
|
}
|
|
|
|
.mdl-spinner.is-active & {
|
|
animation:
|
|
mdl-spinner__fill-unfill-rotate (4 * $spinner-arc-time)
|
|
$animation-curve-fast-out-slow-in infinite both,
|
|
mdl-spinner__layer-4-fade-in-out (4 * $spinner-arc-time)
|
|
$animation-curve-fast-out-slow-in infinite both;
|
|
}
|
|
}
|
|
|
|
@keyframes mdl-spinner__fill-unfill-rotate {
|
|
12.5% { transform: rotate(0.5 * $spinner-arc-size); }
|
|
25% { transform: rotate($spinner-arc-size); }
|
|
37.5% { transform: rotate(1.5 * $spinner-arc-size); }
|
|
50% { transform: rotate(2 * $spinner-arc-size); }
|
|
62.5% { transform: rotate(2.5 * $spinner-arc-size); }
|
|
75% { transform: rotate(3 * $spinner-arc-size); }
|
|
87.5% { transform: rotate(3.5 * $spinner-arc-size); }
|
|
to { transform: rotate(4 * $spinner-arc-size); }
|
|
}
|
|
|
|
/**
|
|
* HACK: Even though the intention is to have the current .mdl-spinner__layer-N
|
|
* at `opacity: 1`, we set it to `opacity: 0.99` instead since this forces Chrome
|
|
* to do proper subpixel rendering for the elements being animated. This is
|
|
* especially visible in Chrome 39 on Ubuntu 14.04. See:
|
|
*
|
|
* - https://github.com/Polymer/paper-spinner/issues/9
|
|
* - https://code.google.com/p/chromium/issues/detail?id=436255
|
|
*/
|
|
@keyframes mdl-spinner__layer-1-fade-in-out {
|
|
from { opacity: 0.99; }
|
|
25% { opacity: 0.99; }
|
|
26% { opacity: 0; }
|
|
89% { opacity: 0; }
|
|
90% { opacity: 0.99; }
|
|
100% { opacity: 0.99; }
|
|
}
|
|
|
|
@keyframes mdl-spinner__layer-2-fade-in-out {
|
|
from { opacity: 0; }
|
|
15% { opacity: 0; }
|
|
25% { opacity: 0.99; }
|
|
50% { opacity: 0.99; }
|
|
51% { opacity: 0; }
|
|
}
|
|
|
|
@keyframes mdl-spinner__layer-3-fade-in-out {
|
|
from { opacity: 0; }
|
|
40% { opacity: 0; }
|
|
50% { opacity: 0.99; }
|
|
75% { opacity: 0.99; }
|
|
76% { opacity: 0; }
|
|
}
|
|
|
|
@keyframes mdl-spinner__layer-4-fade-in-out {
|
|
from { opacity: 0; }
|
|
65% { opacity: 0; }
|
|
75% { opacity: 0.99; }
|
|
90% { opacity: 0.99; }
|
|
100% { opacity: 0; }
|
|
}
|
|
|
|
/**
|
|
* Patch the gap that appear between the two adjacent
|
|
* div.mdl-spinner__circle-clipper while the spinner is rotating
|
|
* (appears on Chrome 38, Safari 7.1, and IE 11).
|
|
*
|
|
* Update: the gap no longer appears on Chrome when .mdl-spinner__layer-N's
|
|
* opacity is 0.99, but still does on Safari and IE.
|
|
*/
|
|
.mdl-spinner__gap-patch {
|
|
position: absolute;
|
|
box-sizing: border-box;
|
|
top: 0;
|
|
left: 45%;
|
|
width: 10%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
border-color: inherit;
|
|
|
|
& .mdl-spinner__circle {
|
|
width: 1000%;
|
|
left: -450%;
|
|
}
|
|
}
|
|
|
|
.mdl-spinner__circle-clipper {
|
|
display: inline-block;
|
|
position: relative;
|
|
width: 50%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
border-color: inherit;
|
|
|
|
& .mdl-spinner__circle {
|
|
width: 200%;
|
|
}
|
|
}
|
|
|
|
.mdl-spinner__circle {
|
|
box-sizing: border-box;
|
|
height: 100%;
|
|
border-width: $spinner-stroke-width;
|
|
border-style: solid;
|
|
border-color: inherit;
|
|
border-bottom-color: transparent !important;
|
|
border-radius: 50%;
|
|
animation: none;
|
|
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
|
|
.mdl-spinner__left & {
|
|
border-right-color: transparent !important;
|
|
transform: rotate(129deg);
|
|
|
|
.mdl-spinner.is-active & {
|
|
animation: mdl-spinner__left-spin $spinner-arc-time
|
|
$animation-curve-fast-out-slow-in infinite both;
|
|
}
|
|
}
|
|
|
|
.mdl-spinner__right & {
|
|
left: -100%;
|
|
border-left-color: transparent !important;
|
|
transform: rotate(-129deg);
|
|
|
|
.mdl-spinner.is-active & {
|
|
animation: mdl-spinner__right-spin $spinner-arc-time
|
|
$animation-curve-fast-out-slow-in infinite both;
|
|
}
|
|
}
|
|
}
|
|
|
|
@keyframes mdl-spinner__left-spin {
|
|
from { transform: rotate(130deg); }
|
|
50% { transform: rotate(-5deg); }
|
|
to { transform: rotate(130deg); }
|
|
}
|
|
|
|
@keyframes mdl-spinner__right-spin {
|
|
from { transform: rotate(-130deg); }
|
|
50% { transform: rotate(5deg); }
|
|
to { transform: rotate(-130deg); }
|
|
}
|