Normalement, lorsque j'utilise du CSS pur, j'ai une feuille de style qui contient:
html {
height: 100%;
}
body {
font-size: 14px;
}
Lors de l'utilisation de styled-components
dans mon projet React, comment définir des styles pour les balises html
ou body
? Est-ce que je gère un fichier CSS distinct uniquement à cette fin?
Vous pouvez bien sûr conserver un fichier CSS distinct que vous incluez dans votre HTML via un <link>
tag.
v4
:Utilisez createGlobalStyle de Styled-components.
import { createGlobalStyle } from 'styled-components'
const GlobalStyle = createGlobalStyle`
body {
color: ${props => (props.whiteColor ? 'white' : 'black')};
}
`
<React.Fragment>
<GlobalStyle whiteColor />
<Navigation /> {/* example of other top-level stuff */}
</React.Fragment>
v4
:Styled-components exporte également une aide injectGlobal
pour injecter le CSS global à partir de JavaScript:
import { injectGlobal } from 'styled-components';
injectGlobal`
html {
height: 100%;
width: 100%;
}
`
Voir documentation API pour plus d'informations!
En date d'octobre 2018.
[~ # ~] note [~ # ~]
L'API injectGlobal a été supprimée et remplacée par createGlobalStyle dans les composants de style v4.
Selon les documents createGlobalStyle
est
Une fonction d'assistance pour générer un StyledComponent spécial qui gère les styles globaux. Normalement, les composants stylisés sont automatiquement étendus à une classe CSS locale et donc isolés des autres composants. Dans le cas de createGlobalStyle, cette limitation est supprimée et des éléments tels que les réinitialisations CSS ou les feuilles de style de base peuvent être appliqués.
Exemple
import { createGlobalStyle } from 'styled-components'
const GlobalStyle = createGlobalStyle`
body {
color: ${props => (props.whiteColor ? 'white' : 'black')};
}
`
// later in your app
<React.Fragment>
<Navigation /> {/* example of other top-level stuff */}
<GlobalStyle whiteColor />
</React.Fragment>
En savoir plus sur documents officiels .