Я создаю целевую страницу с помощью GatsbyJS и Styled-Components, где я хочу отображать логотип SVG в центре экрана.
После развертывания на сервере кажется, что при загрузке моей страницы SVG загружается первым и сразу отображается в верхнем левом углу экрана, по-видимому, до CSS, который заставляет его перескакивать в центр после заметной задержки.
Вот как я это делаю:
// import "styled" and React
import logo from '../images/logo.svg'
const CenterDiv = styled.div`
display: flex;
flex-direction: column;
align-items: center;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
`
const Logo = styled.img`
padding: 2rem;
margin: 1rem;
border: 1.5rem solid black;
`
const IndexPage = () => (
<CenterDiv>
<Logo src={logo} alt="Logo" />
</CenterDiv>
)
export default IndexPage
Как я могу загрузить SVG после CSS, чтобы пользователи не видели, как логотип прыгает?
Я также установил пакет «gatsby-plugin-styled-components», который позволяет визуализировать стилизованные компоненты на стороне сервера / во время сборки.
Спасибо!
Изменить: я переместил стили в опору стилей в компонентах React, что, похоже, устранило эту асинхронную проблему. Однако я все еще хотел бы знать, как это сделать с помощью стилизованных компонентов, потому что я могу писать там обычные CSS и медиа-запросы.
Примечание. В этом контексте я использую Gatsby / React и предпочитаю решения CSS-in-JS. У меня есть аналогичные проблемы при использовании "стилизованных компонентов" и в других ситуациях - сначала загружается контент, а затем применяются стили.