main
css 66 lines 1.25 KB
Raw
1 .three-bubble-loader {
2 display: inline-flex;
3 align-items: center;
4 gap: 0.65rem;
5 color: var(--color-text-muted);
6 opacity: 0.58;
7 transition: opacity var(--transition-speed) ease;
8 }
9
10 .three-bubble-loader.is-active {
11 opacity: 1;
12 }
13
14 .three-bubble-loader-dot {
15 --three-bubble-loader-delay: 0s;
16 width: 0.75rem;
17 height: 0.75rem;
18 border-radius: 50%;
19 background: currentColor;
20 opacity: 0.35;
21 }
22
23 .three-bubble-loader.is-active > .three-bubble-loader-dot {
24 animation: three-bubble-loader-jump 1.2s ease-in-out infinite;
25 animation-delay: var(--three-bubble-loader-delay);
26 }
27
28 .three-bubble-loader-dot:nth-child(2) {
29 --three-bubble-loader-delay: 0.16s;
30 }
31
32 .three-bubble-loader-dot:nth-child(3) {
33 --three-bubble-loader-delay: 0.32s;
34 }
35
36 .loading-indicator-label {
37 position: absolute;
38 width: 1px;
39 height: 1px;
40 padding: 0;
41 margin: -1px;
42 overflow: hidden;
43 clip: rect(0, 0, 0, 0);
44 white-space: nowrap;
45 border: 0;
46 }
47
48 @keyframes three-bubble-loader-jump {
49 0%,
50 55%,
51 100% {
52 opacity: 0.35;
53 transform: translateY(0);
54 }
55 20% {
56 opacity: 1;
57 transform: translateY(-0.4rem);
58 }
59 }
60
61 @media (prefers-reduced-motion: reduce) {
62 .three-bubble-loader.is-active > .three-bubble-loader-dot {
63 animation: none;
64 opacity: 0.7;
65 }
66 }