Frontend & Publishing/css
scss 정리 (css 전처리기)
heeju
2022. 8. 31. 15:57
변수
- 중괄호 안에서 선언 되었으면 내부에서만 사용 가능
- 중괄호 안에서 선언 되었어도 전역변수로 설정 시 !global 속성 추가
// 변수 선언
$변수이름: blue;
// 사용 시
.text {
color: $변수이름;
}
.box1 {
$color: #111 !global; // 내부에서 선언 했지만 전역변수
background: $color;
}
.box2 {
background: $color; // 전역변수기에 에러 안남
}
부모 선택자 (&)
// & 사용하여 부모 선택
.fs {
&-small { font-size: 12px; }
&-medium { font-size: 14px; }
&-large { font-size: 16px; }
}
// 컴파일 시
.fs-small {
font-size: 12px;
}
.fs-medium {
font-size: 14px;
}
.fs-large {
font-size: 16px;
}
중첩 벗어나기(@at-root)
.list {
$w: 100px; // 내부에서 변수 만들면 내부에서만 사용 가능
$h: 50px;
li {
width: $w;
height: $h;
}
@at-root .box {
width: $w;
height: $h;
}
}
// 컴파일 시
.list li {
width: 100px;
height: 50px;
}
.box { // 부모를 선택하지 않고 자기 자신만 선택됨
width: 100px;
height: 50px;
}
중첩된 속성 사용시
.box {
font: {
weight: bold;
size: 10px;
family: sans-serif;
};
margin: {
top: 10px;
left: 20px;
};
padding: {
bottom: 40px;
right: 30px;
};
}
// 컴파일 시
.box {
font-weight: bold;
font-size: 10px;
font-family: sans-serif;
margin-top: 10px;
margin-left: 20px;
padding-bottom: 40px;
padding-right: 30px;
}
초기값 설정(!default)
$color-primary: red;
.box {
$color-primary: blue !default; // 변수 선언=할당된 변수가 없으면 blue 사용. 있으면 있는 값(red) 사용
background: $color-primary;
}
문자 보간(#{})
- 자바스크립트의 템플릿 리터럴과 비슷
- 문자열 사이에 변수가 필요할 때 사용
$family: unquote("Droid+Sans");
@import url("http://fonts.googleapis.com/css?family=#{$family}");
// 컴파일 시
@import url("http://fonts.googleapis.com/css?family=Droid+Sans");
@extend 문법
.class {
color: blue;
}
.btn {
@extend .class; // .class에 있는 스타일을 모두 가져온다
}
// 컴파일 시
.class {color: blue;}
.btn {color: blue;}
임시 클래스(%)
- 컴파일 되었을 때 임시 클래스는 컴파일 되지 않음
%btn {background-color: orange;}
.background {
@extend %btn; // 임시클래스 %btn에 있는 스타일 복사
}
// 컴파일 시(%btn은 컴파일 되지 않음)
.background {background-color: orange;}
@mixin 문법
- 여러 코드를 하나에 담아 함수처럼 사용
- 파라미터를 받을 수 있다(여러개 가능)
- style이름에 파라미터 사용 시 문자 보간 #{} 사용
// mixin 함수 선언
@mixin 함수1($파라미터) {
padding: $파라미터;
}
// mixin 함수 사용 시
.box {
@include 함수1(10px);
}
// 파라미터 여러개 사용하는 함수 선언
@mixin 함수2($파라미터1, $파라미터2){
background: red;
font-size: $파라미터1;
#{$파라미터2}: white; // 왼쪽 자리에도 파라미터 가능(문자보간 사용)
}
// 파라미터 여러개 사용하는 함수 사용 시
.box2 {
@include 함수2(14px, color);
}
@use 문법
- @import와 같은 방식으로 다른 파일을 가져오고 싶을 때
- @use '파일이름'; => 확장자는 안써도 가능
- 다른 파일에 있는 변수 사용 시 앞에 파일명 붙여주기 => 파일이름.$변수
scss파일을 css로 변환하지 않게 하고 싶으면 파일이름 작명 시 앞에 언더바(_) 붙여주기
반응형