React ํ๋ก์ ํธ ๋ด์์์ css ์ ์ฒ๋ฆฌ๊ธฐ์ธ scss์ css-module, styled-component ์ฌ์ฉ ์ฐ์ต
-
๋ธ๋ผ์ฐ์ ๋ก ์ปดํ์ผ๋ง ์ ํด๋์ค๋ช ์ ์์์ ํด์ฌ๋ฅผ ๋ถ์ด๋ ๋ฐฉ์์ผ๋ก ์คํ์ผ ์ค์ฒฉ์ ๋ง์์ค๋ค.
-
๋ฆฌ์กํธ์ ๊ธฐ๋ณธ ์ธํ ๋์ด์์ด์ ์ค์นํ ํ์๊ฐ ์๋ค.
-
๊ธฐ์กด ์ํฉ : css ํ์ผ์ ๋ค๋ฅด๊ฒ ์ ์ฉํ์ง๋ง ํด๋์ค๋ช ์ด ์ค๋ณต๋์ด ์คํ์ผ ์์ฑ์ด ๊ฒน์ณ์จ์ง๋ ๋ฌธ์ ๋ฐ์ ( ๋๋ ์ผ์ผ์ด ํด๋์ค๋ช ์ ๋ฐ๊ฟ์ฃผ๋ ๋ฐฉ์์ ํํ์๋ค. ๐)
-
Browser
(1) css ํ์ผ๋ช ๋ค์
โฌ๏ธ .module ์ ๋ถ์ฌ์ค๋ค.
(2) css์ ์ ์ฉํ๋ js ํ์ผ์ import, className ํ์์ ๋ณ๊ฒฝํด์ค๋ค.
- Button1.js, Button2.js
- CSS in JS ๊ด๋ จ ๋ฆฌ์กํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๊ณต์๋ฌธ์๋๋ก ์ค์น
npm install --save styled-components
- ๋ณ์๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
- css ํ์ผ์ ๋ฐ๋ก ๋ง๋ค์ง ์์๋ ๋๋ฏ๋ก ํ์ผ ๊ด๋ฆฌ๊ฐ ์ฉ์ด, but ๊ฐ๋ ์ฑ์ ๋จ์ด์ง๋ค.
- ๋ง๋ ์ปดํฌ๋ํธ์ ์์ฑ์ ๋ด๋ ค์ค ์ ์๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ ์ฐ์ตํด๋ณด์.
- App.js
import styled from 'styled-components';
โฌ๏ธ SelectionBox ๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ณ์๋ก ์ ์ธ, styled๋ div๋ก ๋ง๋ค์ด์ค๋ค.
styled.div``
(๋ฐฑํฑ ์์ ์คํ์ผ ์์ฑ ๋ฃ์ด์ฃผ๊ธฐ)
โฌ๏ธ Props ๋ฐ์์์ ํน์ ์คํ์ผ ์์ฑ ๊ฐ์ผ๋ก ๋ด๋ ค์ฃผ๊ธฐ (โญ๏ธ styled-component๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ผ๊ณ ํ ์ ์๋ค.)
- Browser
์ด๋ฒ์๋ ์์ฑ ๊ฐ์ ์ผํญ์ฐ์ฐ์๋ก ์ฒ๋ฆฌํด๋ณด์.
- App.js
โฌ๏ธ Circle ์ด๋ผ๋ styled.span ๋ฅผ ๋ง๋ค๊ณ , ์ปดํฌ๋ํธ๋ก 4๊ฐ ์์ฑํ๋ค. backgroundColor ๋ฅผ prop ๋ก ์ ๋ฌํ๊ณ , ๋ง์ง๋ง Circle ์ปดํฌ๋ํธ์์๋ ์ ๋ฌํ์ง ์์๋ค.
background : ${(props) => props.backgroundColor || 'skyblue'}
โ props์ backgroundColor๊ฐ ์๋ค๋ฉด ๊ทธ ๊ฐ์ background๋ก ์ง์ ํ๊ณ , ์์ผ๋ฉด 'skyblue'๋ก ์ง์ ํ๋ค.
๋ฐ๋ผ์, ๋ง์ง๋ง Circle ์ปดํฌ๋ํธ๋ background : 'skyblue'๊ฐ ์ ๋ฌ๋๋ค.
- App.js
โฌ๏ธ ๋๋ฒ์งธ circle ์๋ง box ๋ผ๋ props ๋ด๋ ค์ฃผ๊ณ , ์ด๋ฅผ styled ์ ์ ๋ฌ
<Circle backgroundColor = 'powderblue'/>
<Circle backgroundColor = 'deepskyblue' box />
<Circle backgroundColor = 'steelblue'/>
<Circle />
-
Box ๋ผ๋ props๊ฐ ์์ผ๋ฉด
css``
์ ํํ๋ก css ์์ฑ ์ ์ฉ -
styled-components ์์ css ๋ ์ํฌํธ ํด์ค์ผํจ
import styled, { css } from 'styled-components';