@gravity-ui/uikit
Version:
Gravity UI base styling and components
81 lines (80 loc) • 1.86 kB
CSS
.g-skeleton {
--_--animation-from: calc(-100% * var(--g-flow-direction));
--_--animation-to: calc(100% * var(--g-flow-direction));
--_--gradient-deg: calc(90deg * var(--g-flow-direction));
--_--border-radius: var(--g-border-radius-s);
display: inline-block;
position: relative;
z-index: 0;
width: 100%;
overflow: hidden;
background-color: var(--g-color-base-generic);
border-radius: var(--_--border-radius);
height: var(--_--size, auto);
}
.g-skeleton_size_xs {
--_--border-radius: var(--g-border-radius-xs);
--_--size: 20px;
}
.g-skeleton_size_s {
--_--border-radius: var(--g-border-radius-s);
--_--size: 24px;
}
.g-skeleton_size_m {
--_--border-radius: var(--g-border-radius-m);
--_--size: 28px;
}
.g-skeleton_size_l {
--_--border-radius: var(--g-border-radius-l);
--_--size: 36px;
}
.g-skeleton_size_xl {
--_--border-radius: var(--g-border-radius-xl);
--_--size: 44px;
}
.g-skeleton_variant_circle {
width: auto;
aspect-ratio: 1;
border-radius: 50%;
}
.g-skeleton_variant_square {
width: auto;
aspect-ratio: 1;
}
.g-skeleton_variant_text {
display: block;
width: 100%;
height: 1em;
margin-block: calc((1lh - 1em) / 2);
}
.g-skeleton_animation_gradient::after {
position: absolute;
inset: 0;
content: "";
background-image: linear-gradient(var(--_--gradient-deg), transparent, var(--g-color-base-generic));
animation: g-skeleton 1.2s ease-out infinite;
}
@media (prefers-reduced-motion: reduce) {
.g-skeleton_animation_gradient::after {
animation: none;
}
}
.g-skeleton_animation_pulse {
animation: g-skeletonPulse 1.5s infinite linear;
}
@keyframes g-skeleton {
0% {
transform: translateX(var(--_--animation-from));
}
100% {
transform: translateX(var(--_--animation-to));
}
}
@keyframes g-skeletonPulse {
0% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}