@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
166 lines (165 loc) • 5.69 kB
CSS
/*
* Skeleton component
*
* Skeleton
*
*/
/*
* Utilities
*/
.dnb-skeleton {
--skeleton-delay: 5s;
--skeleton-duration: 1.5s;
--skeleton-iteration-count: 20;
}
.dnb-skeleton img,
.dnb-skeleton video {
filter: brightness(0%) contrast(0%) opacity(0.5);
}
.dnb-skeleton--block {
display: block;
}
.dnb-skeleton--overflow {
overflow: hidden;
}
.dnb-skeleton--grey {
filter: grayscale(100%);
}
.dnb-skeleton--shape {
pointer-events: none;
position: relative;
overflow-x: hidden;
color: transparent;
background: transparent;
box-shadow: none ;
}
.dnb-skeleton--shape.dnb-skeleton::before, .dnb-skeleton--shape.dnb-skeleton::after {
content: "" ;
position: absolute ;
z-index: 100 ;
left: 0 ;
top: 0 ;
bottom: 0 ;
right: 0 ;
width: 100% ;
height: auto ;
margin: 0 ;
padding: 0 ;
border-radius: inherit;
background: none ;
box-shadow: none ;
}
.dnb-skeleton--shape.dnb-skeleton::before {
background-color: var(--skeleton-color) ;
}
.dnb-skeleton--shape.dnb-skeleton::after {
background-image: repeating-linear-gradient(-45deg, var(--skeleton-color--contrast) 1px 2px, transparent 0 6px) ;
background-repeat: repeat ;
background-size: 100% ;
clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%);
animation: skeletonLinearAnimation var(--skeleton-duration) linear var(--skeleton-iteration-count) var(--skeleton-delay);
}
.dnb-skeleton--code pre,
.dnb-skeleton--code pre *,
.dnb-skeleton--code code,
.dnb-skeleton--code code *, .dnb-skeleton--font pre,
.dnb-skeleton--font pre *,
.dnb-skeleton--font code,
.dnb-skeleton--font code * {
--font-family-monospace: 'DNBMonoSkeleton' ;
font-family: var(--font-family-monospace) ;
font-style: unset ;
box-shadow: none ;
}
.dnb-skeleton--font-only, .dnb-skeleton--font, .dnb-skeleton--font .dnb-skeleton--show-font, .dnb-skeleton--font .dnb-p {
pointer-events: none;
--font-family-default: 'DNBSkeleton' ;
font-family: var(--font-family-default) ;
font-style: unset ;
}
.dnb-skeleton--font-only::marker, .dnb-skeleton--font::marker, .dnb-skeleton--font .dnb-skeleton--show-font::marker, .dnb-skeleton--font .dnb-p::marker {
color: var(--skeleton-color);
}
.dnb-skeleton--font, .dnb-skeleton--font .dnb-skeleton--show-font, .dnb-skeleton--font .dnb-p {
background-position-y: 50% ;
background-repeat: no-repeat ;
background-size: 30rem 100% ;
-webkit-text-fill-color: transparent ;
-webkit-background-clip: text ;
background-clip: text ;
background-image: repeating-linear-gradient(-45deg, var(--skeleton-color--contrast) 1px 2px, transparent 0 6px) ;
--border-color: var(--skeleton-color);
background-color: var(--skeleton-color) ;
background-position-x: 30rem;
animation: skeletonFontAnimation 5s linear infinite var(--skeleton-delay);
}
html[data-visual-test] .dnb-skeleton--font, html[data-visual-test] .dnb-skeleton--font .dnb-skeleton--show-font, html[data-visual-test] .dnb-skeleton--font .dnb-p {
animation: none ;
}
.dnb-skeleton__figure {
position: relative;
border-radius: 0.25rem;
}
.dnb-skeleton__figure--circle {
width: 4rem;
height: 4rem;
border-radius: 50%;
}
.dnb-skeleton__figure--product {
display: flex;
align-items: center;
}
.dnb-skeleton__figure--product .dnb-skeleton__figure--circle + div {
width: 50%;
margin-left: 1rem;
}
.dnb-skeleton--no-animation .dnb-skeleton, .dnb-skeleton--no-animation .dnb-skeleton::after, .dnb-skeleton--no-animation * .dnb-skeleton::after {
animation: none ;
}
@keyframes skeletonLinearAnimation {
0% {
clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%);
}
50% {
clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}
100% {
clip-path: polygon(0 0, 0% 0, 0% 100%, 0 100%);
}
}
@keyframes skeletonFontAnimation {
0% {
background-position-x: 30rem;
}
100% {
background-position-x: -30rem;
}
}
@font-face {
font-family: DNBSkeleton;
src: url("../../assets/fonts/dnb/skeleton/DNB-Skeleton-Regular.woff2") format("woff2"), url("../../assets/fonts/dnb/skeleton/DNB-Skeleton-Regular.woff") format("woff"), url("../../assets/fonts/dnb/skeleton/DNB-Skeleton-Regular.ttf") format("truetype");
font-weight: normal;
font-style: normal;
font-display: fallback;
}
@font-face {
font-family: DNBSkeleton;
src: url("../../assets/fonts/dnb/skeleton/DNB-Skeleton-Medium.woff2") format("woff2"), url("../../assets/fonts/dnb/skeleton/DNB-Skeleton-Medium.woff") format("woff"), url("../../assets/fonts/dnb/skeleton/DNB-Skeleton-Medium.ttf") format("truetype");
font-weight: 500;
font-style: normal;
font-display: fallback;
}
@font-face {
font-family: DNBSkeleton;
src: url("../../assets/fonts/dnb/skeleton/DNB-Skeleton-Bold.woff2") format("woff2"), url("../../assets/fonts/dnb/skeleton/DNB-Skeleton-Bold.woff") format("woff"), url("../../assets/fonts/dnb/skeleton/DNB-Skeleton-Bold.ttf") format("truetype");
font-weight: 600;
font-style: normal;
font-display: fallback;
}
@font-face {
font-family: DNBMonoSkeleton;
src: url("../../assets/fonts/dnb/skeleton/DNBMono-Skeleton-Regular.woff2") format("woff2"), url("../../assets/fonts/dnb/skeleton/DNBMono-Skeleton-Regular.woff") format("woff"), url("../../assets/fonts/dnb/skeleton/DNBMono-Skeleton-Regular.ttf") format("truetype");
font-weight: normal;
font-style: normal;
font-display: fallback;
}