์ผ๋จ ๋ฐฐ์ฐ๊ธด ๋ฐฐ์ ๋๋ฐ SASS๋ ๋ญ๊ณ SCSS๋ ๋ญ์ง? ํ๋ค๊ฐ ํด๋ณด๋ ์ ๋ฆฌ! SASS๋ CSS์ ํ์ฅ ๋ฌธ๋ฒ์ด๊ณ (JavaScript๋ก ์น๋ฉด JSX ๊ฐ์ ๊ฐ๋ ), SCSS๋ SASS์ ์ ์ฉํ ๊ธฐ๋ฅ๋ค์ CSS๋ฌธ๋ฒ๊ณผ ์ต๋ํ ๋น์ทํ๊ฒ ์ธ ์ ์๋ ์ ๋ฌธ๋ฒ... ์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ๋น. ์์ ์์ฌ๋ก ์ธ ์ ์์ ๋๊น์ง ์ด์ฌํ ๊ณต๋ถํด ๋์~~~
html์ parent-child ๊ด๊ณ์ ๋ฐ๋ผ ์คํ์ผ ์์ฑ๋ค๋ ๋ค์คํ ํ ์ ์๋ค. ๋ถํ์ํ ํด๋์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ ํ์๋ฅผ ํ ์ค์ ๊ธธ๊ฒ ์จ์ผ ํด์ผ ํ๋ ์๊ณ ๋ฅผ ๋์ด์ค!
๊ฐ์์ ํ์๋ฅผ ์ฐ๊ธฐ ์ํด์๋ ํด๋น ์ ํ์์ ๋ค์คํธ ์์์ &์ ์ฐ๊ณ ์ํ๋ ๊ฐ์์ ํ์๋ฅผ ๋ถ์ฌ ์ฃผ๋ฉด ๋๋ค.
.form {
color: gray;
font-size: 14px;
input { //form์ ์์ ์์์ธ input
margin: auto;
}
&:focus-within { //form:focus-within
border: 2px solid black;
}
:hover { //form์ ์์ ์์๋ค:hover
background-color: lightblue;
}
}
&์ ๋ค์คํ ํ๊ณ ์๋ ์ ๋ ํฐ๋ฅผ ์นํํ๋๋ฐ, '๋ฌธ์'๋ฅผ ์นํํ๊ธฐ ๋๋ฌธ์ ํด๋์ค๋ช ์ ์ชผ๊ฐ์ ์ธ ์๋ ์๋ค. ์๋ฅผ ๋ค์ด์ btn, btnBlue, btnRed๋ผ๋ ํด๋์ค๋ช ์ ๊ฐ์ง๋ ๋ณ์๋ค์ด ์๋ค๋ฉด ๊ณตํต ์์ฑ์ btn์ผ๋ก ๋ค์คํ ํ ์ค๊ดํธ ์์ ๋ฐ๋ก ๋์ดํ๊ณ , ๊ฐ๋ณ ์์ฑ์ ํด๋น ๋ค์คํ ๋ด์ &Blue, &Red๋ก ๋ ๋ค์คํ ํด์ ์ถ๊ฐํ ์ ์๋ค๋ ๋ป!
.btn {
width: 200px;
height: 60px;
border-radius: 30px;
&Blue { // .btnBlue
background-color: blue;
}
&Red { // .btnRed
background-color: red;
}
}
nav {
margin: {
top: 20px;
left: 50px;
}
border: {
color: darkslategray;
radious: 50%;
style: dashed;
}
font: {
size: 12px;
color: purple;
faimily: 'Courier New', Courier, monospace;
}
}
์์ฃผ ์ฐ์ด๊ฑฐ๋ ์๋ฏธ ์๋ ์์ฑ๊ฐ๋ค์ ์ํ๋ ์ด๋ฆ์ผ๋ก ๋ณ์์ ๋ด์์ ์ธ ์ ์๋ค. ์ฌ๊ธฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์์ฒ๋ผ global๊ณผ local์ ๊ฐ๋ ์ด ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ค๊ดํธ ๋ฐ์์ ์ ์ธํ ๋ณ์๋ ์๋ฌด๋ฐ์๋ ์ธ ์ ์๊ณ , ์ค๊ดํธ ์์์ ์ ์ธํ ๋ณ์๋ ํด๋น ์ค๊ดํธ ๋ด์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ!
//๋ณ์ ์ ์ธ
$mainColor : #ffffff
$profileImg: "./images/profile.png"
//๋ณ์ ์ฌ์ฉ
div {
color: $mainColor;
background-image: url($profileImg)
}
๋ค๋ฅธ scs ํ์ผ์ ์คํ์ผ์ ๊ฐ์ ธ๋ค ์ฐ๊ณ ์ถ์ ๋, ๋ชจ๋์ฒ๋ผ ์ํฌํธํด์ ์ธ ์ ์์! ๋ณดํต _reset.scss ๋ฑ ๋ฒ์ฉ์ ์ผ๋ก ์ฐ์ด๋ ์คํ์ผ์ํธ๊ฐ ์๋ ๊ฒฝ์ฐ ์ ์ฉํ๋ค.
@import "reset.scss";
๊ด๋ จ์ฑ ์๋ ํ๊ทธ๋ค์ ๋์ผํ ์์ฑ์ ๋ถ์ฌํ ๋ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณต์ ํผํ ์ ์๋ค! ์์ ํ๊ทธ์ ์์ฑ๋ค์ ์ด์ํด ๋๋ ๋๋...?
.box {
width: 300px;
height: 150px;
margin: auto;
padding: 20px;
}
.main {
@extend .box;
color: darkgray;
}
์ฒ์์ extend์ mixin์ด ๊ทธ๊ฒ ๊ทธ๊ฑฐ ๊ฐ์์ ํท๊ฐ๋ ธ๋๋ฐ mixin์ css๋ก ์ปดํ์ผํ์ ๋ ์ ๋ ํฐ๋ค์ ๋ณํฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ๊ด์ฑ์ด ๋จ์ด์ง๋ ํ๊ทธ๋ค์ ์ฌ์ฉํด๋ ๋ ์ด์ํ๊ณ , ๋ ์ธ์๋ฅผ ๋ฐ์์ ๋์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ์ค๋ณต๋๋ ์คํ์ผ๋ค ๊ฐ์ด๋ฐ ๋ช ๊ฐ์ ๊ฐ๋ค๋ง ๋ฐ๊ฟ์ ์ ์ฉ์ํค๊ณ ์ถ์ ๋ ์ ์ฉ!
//์ ์ธ ์
@mixin colorBox($color, $fontsize: 12px) {
width: 200px;
background-color: $color;
font-size: $fontsize;
}
//์ฌ์ฉ ์
.purpleBox {
@inclued colorBoc(purple);
}
.greenBox {
@inclued colorBoc(green, 24px);
}
๊ทธ ์ธ์๋ ๋ฐ๋ณต๋ฌธ๋ ์๊ณ ๋จธ๊ฐ ๋ง์์ง๋ง... ์ผ๋จ์ ์ฌ๊ธฐ๊น์ง ์ด์ฌํ ์ ์ฉํด ๋ณด๊ธฐ~~~!