category/index.js
import React from 'react';
import { ContainerCategorySkeleton, CategoryImage, CategoryTitle } from './styles';
export const CategorySkeleton = props => {
console.log(props)
return (
<ContainerCategorySkeleton>
<CategoryImage light={props.light} />
<CategoryTitle light={props.light} />
</ContainerCategorySkeleton>
)
}
category/style.js
import styled, { css } from 'styled-components';
import { skeletonStyle } from '../../../styles/skeleton';
export const ContainerCategorySkeleton = styled.div`
display: flex;
flex-direction: column;
align-items: center;
`;
export const CategoryImage = styled.div`
width: 75px;
height: 75px;
border-radius: 50%;
${
props => css`
${skeletonStyle(props.light)}
`
}
`;
export const CategoryTitle = styled.div`
width: 26px;
height: 15px;
margin-top: 8px;
${
props => css`
${skeletonStyle(props.light)}
`
}
`;
/animation/skeleton/style.js (funciona para cualquier container)
import { css, keyframes } from 'styled-components';
const skeletonBackground = (light) => (
css`
background: ${ !light
? css`linear-gradient(-90deg, #C1C1C1 0%, #F8F8F8 50%, #C1C1C1 100%)`
: css`linear-gradient(-90deg, #F0F0F0 0%, #F8F8F8 50%, #F0F0F0 100%)`};
background-size: 400% 400%;
animation: ${skeletonLoading} 1.2s ease-in-out infinite;
`
)
const skeletonLoading = keyframes`
from {
background-position: 0% 0%;
}
to {
background-position: -135% 0%;
}
`;
export const skeletonStyle = (light = true) => skeletonBackground(light);
Resultado final:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.