通常、純粋なCSSを使用する場合、次のものを含むスタイルシートがあります。
html {
height: 100%;
}
body {
font-size: 14px;
}
Reactプロジェクトでstyled-components
を使用する場合、html
またはbody
タグのスタイルを設定するにはどうすればよいですか?別のCSSファイルを維持しますか?この目的のためだけに?
もちろん、<link>
タグを使用してHTMLに含める別のCSSファイルを維持できます。
v4
の場合:Styled-componentsの createGlobalStyle を使用します。
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はinjectGlobal
ヘルパーもエクスポートして、JavaScriptからグローバルCSSを挿入します。
import { injectGlobal } from 'styled-components';
injectGlobal`
html {
height: 100%;
width: 100%;
}
`
詳細については、 APIドキュメント を参照してください!
2018年10月現在
[〜#〜] note [〜#〜]
InjectGlobal APIは削除され、styled-components v4のcreateGlobalStyleに置き換えられました。
ドキュメントによると、createGlobalStyle
は
グローバルスタイルを処理する特別なStyledComponentを生成するヘルパー関数。通常、スタイル付きコンポーネントは自動的にローカルCSSクラスにスコープされるため、他のコンポーネントから分離されます。 createGlobalStyleの場合、この制限は削除され、CSSリセットやベーススタイルシートなどを適用できます。
例
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>
公式ドキュメント で詳細をご覧ください。