SCSS = SASS + CSS
SASS 컴퍼일러로 SCSS 파일이 CSS 파일이됨
.sec { margin: 0;}
//
을 이용해서 라인 단위로 주석처리 //scss
.div {
p {
color: #f00;
}
}
//css
.div p { color: #f00;}
.div {
p {
font: {
family: "Malgum Gothic", sans-serif;
size : 14px;
weight: 700;
}
}
}
//scss
a {
text-decoration: none
&:hover { text-decroation: underline; }
}
//css
a { text-decoration: none; }
a:hover { text-decoratino: underline; }
//scss
.btn {
display:inline-block; padding:3px 10px; border:1px solid #000;
&_blue { background-color:blue; border:0; }
&_yellow { background-color:yellow; border:0; }
}
//css
.btn { display:inline-block; padding:3px 10px; border:1px solid #000; }
.btn_blue { background-color:blue; border:0; }
.btn_yellow { background-color:yellow; border:0; }
:
으로 키:값을 구분하여 쓴다.숫자값의 경우에는 사칙 연산 및 산술 연삼 함수의 적용이 가능하다.
예외 : 나눗셈 (나눗셈은 원래 CSS에서도 존재하여 SASS컴파일러는 해당 표기를 연산이라 판단하지 않는다. 수식을 괄호로 묶으면 강제로 연산으로 처리된다. 그외에도 덧셈등의 다른 연산자와 같이 쓰인 경우에도 나눗셈 연산으로 처리된다.)
#{...}
을 사용하면 문자열 내에 표현식의 결과를 내삽하거나, 다른 변수의 내용으로 치환하는 것이 가능하다. 이는 속성값의 일부 혹은 전체 뿐만 아니라 속성명이나 셀렉터에 대해서도 적용 가능하다.//scss
$foo: bar;
$fontsize: 12px;
$lineheight: 30p;
p {
font: #{$fontsize}/#{$lineheight};
&.#{$foo} { color: red; }
}
//css
p { font: 12px/30px; }
p.bar { color: red; }
@import
지시어를 이용해서 다른 css 파일을 임포트할 수 있다.@extend
최상위셀렉터의 형태로 사용한다.// SCSS
.message {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
.success {
@extend .message;
border-color: green;
}
.error {
@extend .message;
border-color: red;
}
// SCSS
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
border-radius: $radius;
}
.box { @include border-radius(10px);
@mixin dashed-box($color, $width: 2px) { .. }
.box { @incluxe dashed-box($width: 3px, $color: #eee) }
@mixin box-shadow($shadows...) {
-moz-box-shadow: $shadows;
-webkit-box-shadow: $shadows;
box-shadow: $shadows;
}
.shadows { @include box-shadows(0px 4px 5px #666, 2px 6px 10px #999); }
@mixin colors($text, $background, $border) {
color: $text;
background-color: $background;
border-color: $border;
}
$values: #ff0000, #00ff00, #0000ff;
.primary { @include colors($values...); }
@mixin code-inline {
code {
background-color: #cecece;
padding: 2px;
border-radius: @include border-raidus(4px);
font-family: monospaces;
@content
}
}
p {
@include code-inline {
color: #33ccff;
font-size: .8em;
}
}
/ SCSS
$grid-width: 40px;
$gutter-width: 10px;
@function grid-width($n) {
@return $n * $grid-width + ($n -1 ) * $gutter-width;
}
#sidebar { width: grid-width(5); } // 믹스인과 달리 @include를 쓰지 않는다.
@if
절을 이용하여 작성한다. @if 표현식 { ... } @else if 표현식 { ... } @else { ... }
식으로 연결되는 다중 분기를 만들 수 있다.@mixin hcolor($n) {
@if $n % 2 == 0 { color: white; }
@else { color: blue; }
}
.row-3 { @include hcolor(3); }
@function text-color($brightness) {
@if $brightness < 128 { @return #333; }
@return #ccc;
}
code { color: text-color(200);
@for $i from 1 through 3 { // 1, 2, 3,에 대해 반복
.time-#{$i} { width: 2em * $i; }
}
// 리스트 내 각 문자열 원소에 대해서...
@each $animal in puma, sea-slug, egret, alamander {
.#{$animal}-icon {
background-image: url('/image/#{$animal}.png');
}
}
// 6, 4, 2번 아이템에 대해서
$i : 6;
@while $i > 0 {
.item-#{$i} { width: 2em * $i }
$i: $i - 2;
}