
jsp로 개발할 땐 css만을 써오다가 vue를 사용하면서 scss를 사용해보게 되었고,
압도적으로! 편리함을 많이 느꼈기 때문에 한번쯤 정리해보고 싶어 정리해본다.
sass는 CSS전처리기로써 이를 직접 동작시킬 수 없고, css로 컴파일을 거친 뒤 실행할 수 있다.
Sass가 먼저 생겼고 Sass 3 버전부터 새롭게 등장한것이SCSS로, Sass와 SCSS는 서로 완벽하게 호환이 된다.
Sass와 SCSS의 차이점은 {}(중괄호)와 ;(세미콜론)의 유무에 따라 사용방식이 다르다.
또한, 재사용 기능은 만드는 방식인 믹스인(Mixin)에서 차이가 난다.
.wrap
padding: 10px
.items
font-weight:bold
padding: 5px 0
.detail
margin: 10px
&:hover
cursor: pointer
color: yellow
}
}
}
}
.wrap{
padding: 10px;
.items{
font-weight:bold;
padding: 5px 0;
.detail{
margin: 10px;
&:hover{
cursor: pointer;
color: yellow;
}
}
}
}
$m-color: #efefef;
$m-width: 100px;
.main-item{
color: $m-color;
width: $m-width;
}
상위 선택자의 반복을 줄여서 사용할 수 있다.
/* CSS */
.wrap{
padding: 10px;
}
.wrap .items{
font-weight:bold;
padding: 5px 0;
}
.detail{
margin: 10px;
}
/* SCSS */
.wrap{
padding: 10px;
.items{
font-weight:bold;
padding: 5px 0;
.detail{
margin: 10px;
}
}
}
상위 선택자를 중첩하여 사용할 때에 '&'키워드를 사용하여 상위 선택자를 사용할 수 있다.
.detail{
margin: 10px;
&:hover{
cursor: pointer;
color: yellow;
}
}
레이아웃을 디테일하게 디자인할 때 쓸 수 있다.
.item {
width: calc(10em / 2);
height: 100px;
border: 1px solid red;
}
조건의 참, 거짓에 따라 하나의 값을 반환한다.
Javascript의 삼항 연산자와 구조가 비슷하다.
/* SCSS */
$width: 300px;
.main{
width: if($width > 100px, $width, 100px);
}
/* Compile to CSS */
.main{
width: 300px;
}
Mixin은 재사용할 CSS 스타일을 정의할 수 있는 유용한 기능.
@mixin을 통해 스타일을 선언하고 @include를 통해 사용한다.
@mixin item-btn{
padding: 5px 10px;
font-weight: bold;
border:1px solid green;
border-radius: 10px;
}
.main-btn{
@include item-btn;
}