๐ SASS ์ค์น(ํฐ๋ฏธ๋)
npm install node-sass@4.14.1 --save
โ ์ค์น ์ node-modules ํด๋์ node-sass ํด๋๊ฐ ์์ฑ๋๋ค. (package source code)
โ
--save
๋ฅผ ๋ค์ ๋ถ์ด๋ ์ด์ โก package.json์ ์ค์น๋ ํจํค์ง์ ์ด๋ฆ๊ณผ ๋ฒ์ ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธ// package.json { "name": "westagram-react", "version": "0.1.0", "private": true, "dependencies": { "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", "node-sass": "^4.14.1", "react": "^16.13.1", "react-dom": "^16.13.1", "react-scripts": "3.4.3" } }
๐ Nesting
๊ธฐ๋ฅ ์ ์ฉ
.scss
ํ์ผ์์ ์ต์์ ์์ ์์ชฝ์์ ํ์ ์์์ ์คํ์ผ ์์ฑ์ ์ ์ํ๋ค./* css */ nav ul { margin: 0; padding: 0; list-style: none; } nav li { display: inline-block; } nav a { display: block; padding: 6px 12px; text-decoration: none; }
/* scss Nesting */ nav { ul { margin: 0; padding: 0; list-style: none; li { display: inline-block; } } a { display: block; padding: 6px 12px; text-decoration: none; } }
๐ก ๋ณ์ ํ์ฉ,
&
์ฐ์ฐ์,extend
๋ฑ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ ์ฉ/* css */ login-container { display: flex; justify-content: center; align-items: center } button { width: 200px; height: 100px; background-color: blue; } button:hover { background-color: red; cursor: pointer; } input { background-color: blue; } input:focus { background-color: red; }
/* scss Nesting */ /* common.scss์ ์ ์ธํด์ฃผ๋ ๊ฒ์ด ์ข๋ค */ $theme-color: blue; $point-color: red; /* %๋ฅผ ํตํด ํ์ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค(common.scss์ ์ ์ธํด์ฃผ๋ ๊ฒ์ด ์ข๋ค) */ %flex-center { display: flex; justify-content: center; align-items: center } login-container { @extend flex-center; /* @extend๋ฅผ ํตํด 'flex-center'๋ก ์ ์ํ ํ์์ ์ ์ฒด ์ ์ฉํ๋ค */ button { width: 200px; height: 100px; background-color: $theme-color; &:hover { background-color: red; cursor: pointer; } } input { color: $point-color; background-color: $theme-color; &:focus { background-color: red; } } }