CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ก, ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ์คํ์ผ๋ง์ ์ ๊ณตํ๋ค.
์ฌ์ง: CSS-Tricks | A Thorough Analysis ofย CSS-in-JS
๋จผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค.
# with npm
npm install --save styled-components
๊ทธ ๋ค์, package.json์ ์๋ ์ฝ๋ ์ถ๊ฐํ๊ธฐ
์ฌ๋ฌ ๋ฒ์ ์ Styled Components๊ฐ ์ค์น๋์ด ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์ค์ฌ์ค๋ค.
{
"resolutions": {
"styled-components": "^5"
}
}
๋ง์ง๋ง์ผ๋ก Styled Components๋ฅผ ์ฌ์ฉํ ํ์ผ์ ๋ถ๋ฌ์จ๋ค.
import styled from "styled-components"
const ์ปดํฌ๋ํธ์ด๋ฆ = styled.ํ๊ทธ์ด๋ฆ`
CSS์์ฑ1: ์์ฑ๊ฐ;
CSS์์ฑ2: ์์ฑ๊ฐ;
`;
styled.ํ๊ทธ์ด๋ฆ
์ ํ ๋นํ๊ณ ๋ฐฑํฑ ์์ CSS ๋ฌธ๋ฒ์ ์์ฑํ๋ค. const ์ปดํฌ๋ํธ์ด๋ฆ = styled(์ฌํ์ฉํ ์ปดํฌ๋ํธ)`
CSS์์ฑ1: ์์ฑ๊ฐ;
CSS์์ฑ2: ์์ฑ๊ฐ;
`;
styled()
์ ์ฌ์ฌ์ฉํ ์ปดํฌ๋ํธ๋ฅผ ์ ๋ฌํ๋ค. const ์ปดํฌ๋ํธ์ด๋ฆ = styled.ํ๊ทธ์ข
๋ฅ`
CSS์์ฑ: ${(props) => ํจ์์ฝ๋}
`;
${}
์์ props๋ฅผ ์ธ์๋ก ๋ฐ๋ ํจ์๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ค. ๋จผ์ Styled Components์์ createGlobalStyle
ํจ์๋ฅผ ๋ถ๋ฌ์จ๋ค.
import { createGlobalStyle } from "styled-components";
์ด ํจ์๋ฅผ ์ฌ์ฉํด์ CSS ํ์ผ์์ ์์ฑํ๋ฏ ์ค์ ํ๊ณ ์ถ์ ์ ์ญ ์คํ์ผ์ ์์ฑํ๋ค.
const GlobalStyle = createGlobalStyle`
ํ๊ทธ์ข
๋ฅ {
CSS์์ฑ1: ์์ฑ๊ฐ;
CSS์์ฑ2: ์์ฑ๊ฐ;
CSS์์ฑ3: ์์ฑ๊ฐ;
}
`
์ด๋ ๊ฒ ๋ง๋ค์ด์ง ์ปดํฌ๋ํธ๋ฅผ ์ต์์ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํด์ฃผ๋ฉด ์ ์ญ์ ์ปดํฌ๋ํธ์ ์คํ์ผ์ด ์ ์ฉ๋๋ค.
function App() {
return (
<>
<GlobalStyle />
<Button>์ ์ญ ์คํ์ผ ์ ์ฉํ๊ธฐ</Button>
</>
);
}