sass๋ css ์ ์ฒ๋ฆฌ๊ธฐ ์ ๋๋ค. sass ๋ฌธ๋ฒ์ด css๋ก ๋ณํํด์ฃผ๋ ๊ฒ!
nesting, mixin, ๋ณ์ ๋ฅผ ์ด์ฉํด ์คํ์ผ์ํธ์ ์ ์ง๋ณด์์ ๊ฐ๋ ์ฑ์ ์ข๊ฒ ๋ง๋ค์ด ์ค๋๋ค.
์ค์น๋ฐฉ๋ฒ
npm install sass --save
--save
๋ฅผ ์ ๋์ด์ ๋ package.json ์ค์น๋ ํจํค์ง์ ์ ๋ณด๋ฅผ ์
๋ฐ์ดํธ ํด์ค๋๋ค.
sass๋ฅผ ์ค์น ํ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ธฐ์กด์ cssํ์ฅ์๋ฅผ .scss๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. ๋ํ jsํ์ผ์์ import ํ๋ css๊น์ง .scss๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
sass์ ํน๋ณํ ๊ธฐ๋ฅ ์ค ํ๋์ธ
Nesting
( ๋ค์คํ ) ์ ๋ถ๋ชจ์์์ ์์์์๋ฅผ ์๊ฐ์ ์ผ๋ก ๊ตฌ๋ถํด ๊ฐ๋ ์ฑ์ ๋์ด๋ฉด์ ์์์์๋ ๋ถ๋ชจ์์์ ์ํด์์ด ๋ค๋ฅธ ๋ถ๋ชจ์์๋ค๊ณผ ๊ฒน์น์ง ์์ ์คํ์ผ์ด ์ถฉ๋๋๋ ๊ฒ์ ๋ฐฉ์งํด์ค๋ค.
//๋ชจ๋ comment ๋ผ๋ ๋ถ๋ชจ์์์ ์์์ด๋ค.
//scss nesting (๋ค์คํ
)
.comment {
.commentNameBold {
font-weight: bold;
.commentMargin {
font-weight: normal;
}
}
.heart {
width: 15px;
cursor: pointer;
}
.heartColor {
display: none;
width: 15px;
cursor: pointer;
}
.commentText {
display: flex;
justify-content: space-between;
margin-top: 2px;
}
.commentNameBold {
margin-right: 5px;
}
}
mixin
์ ์ฌ์ฉํ๋ฉด ๋งค ๋ฒ ๊ธธ๊ฒ ์ ์ด์ผ ๋๋ ์์ฑ์ ํ ์ค์ ์ ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค!
@mixin logoText($logoText: 50px) {
font-family: 'Lobster', cursive;
font-size: $logoText;
}
@mixin flexCenter {
display: flex;
justify-content: center;
align-items: center;
}
@mixin flexBetween {
display: flex;
justify-content: space-between;
align-items: center;
}
์ ์ฒ๋ผ mixin
์ผ๋ก ๋ค์ํ ์์ฑ์ ํ๋์ ๋ณ์๋ก ์ฒ๋ฆฌํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
// @mixin logoText($logoText: 50px)
// mixin์ ์ฌ์ฉํ๊ณ ํฐํธํฌ๊ธฐ๋ฅผ ๋ณ์์ฒ๋ฆฌ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
.navContainer {
@include flexBetween;
width: 935px;
.logo {
@include logoText($logoText: 22px);
margin-left: 25px;
}
}
@include
๋ฅผ ์
๋ ฅํ๊ณ ๋ค์ mixin์ผ๋ก ์ค์ ํ ๋ณ์๋ฅผ ์ ์ผ๋ฉด ์คํ์ผ์ด ์ ์ฉ๋๋ค!
mixin๊ณผ ๋น์ทํ์ง๋ง ๋ค๋ฅธ $
๋ฅผ ์ด์ฉํด ๋ณ์๋ฅผ ๋ง๋ค ์ ์๋ค.
์๋ฅผ ๋ค์ด $border-radius: 5px;
์ด ๊ฐ์ ์ด๋ค ์คํ์ผ์์ ์ด ๋ณ์๋ช
์ ์ ์ผ๋ฉด 5px์ด๋ผ๋ ๊ฐ์ ๋ง๋ ๋ค.
$border-radius: 5px;
.userIdInput {
width: 215px;
padding: 5px 0;
border: 1px solid rgb(219, 219, 219);
border-radius: $border-radius;
//border-radius: 5px์ ๊ฐ์ง๋ค
&::placeholder {
color: #c7c7c7;
background-size: contain;
background-position: 35%;
background-repeat: no-repeat;
text-align: center;
}
scss์์ ์ฐ์ฐ์ & ์ ์ญํ ์ ์ถ๊ฐ ์คํ์ผ ์์ฑ์ ๋ถ์ฌ ํด ์ค ์ ์๋ค.
ex) &:hover , &::placeholder