npm install node-sass --save
--save
가 있는 이유는 package.json에 설치된 패키지의 이름과 버전 정보를 업데이트하기 때문이다..scss
이기 때문에 .css
확장자로 되어 있는 파일을 전부 .scss
확장자로 바꿔주어야한다.$theme-color: blue;
$
: 변수 설정 시$
로 시작하고변수명:변수값
형태로 만들어준다.
변수 사용 시,$변수명
으로 적용시켜주면 된다.
%flex-center {
display: flex;
justify-content: center;
align-items: center
}
%
: 원하는 속성 값들을 줄 수 있다.
활용시에는@extend %변수 이름;
으로 적용시켜줄 수 있다.
&:hover {
background-color: red;
cursor: pointer;
}
&
: 자기 자신을 의미하는 기호이며:hover
,:focus
,:active
선택자에
className ='login clicked'와 같이 clsss 이름을 두 개 적용하여 동적인 요소를 만들 때 유용하다//적용 예시 login-container { @extend %flex-center; // %flex-center 적용 button { width: 200px; height: 100px; background-color: $theme-color; // $theme-color 적용 &:hover { background-color: red; cursor: pointer; } } input { background-color: $theme-color; &:focus { //자기 자신을 :focus할 경우 background-color: red; } } }
@import
@import ‘SCSS파일명’;
@import
: 파일을 부분화시켜 다른 scss파일을 불러와 사용한다.
@mixin
/ @include
Sass에는 Mixin이라는 함수 기능이 내장되어있다. 많은 선택자에 공통으로 사용되는 코드인 경우
@mixin
을 사용하면 함수 형태로 만들어 재활용이 가능해 유지 보수에도 편리하고 코드가 깔끔해진다는 장점이 있다. 사용할 때에는@include
를 사용한다.//생성 @mixin button-color($color) { background: $color; &:hover { background: lighten($color, 10%); } &:active { background: darken($color, 10%); } &.outline { color: $color; background: none; border: 1px solid $color; &:hover { background: $color; color: white; } } } //사용 @mixin desktop { @media (min-width: 900px) { @content; } } .box { @include border-radius(10px); @include desktop { color: red; } }
Nesting
기능으로 코드가 보기에 간결하고, 컴포넌트 별로 최상위에서 감싸주는 태그의 className을 컴포넌트 이름과 동일하게 정해줌으로서 각각 컴포넌트의 코드들이 겹치지 않게 할 수 있다.