[SCSS] SCSS 개요, 참조, 중첩
1. SCSS
SCSS 테스트 페이지 https://sassmeister.com
- css를 쉽게 사용하기 위해 강력한 기능을 제공하는 도구
- css 전처리 도구
- css로 변환해서 동작
- 변수를 만들어서 재활용할 수 있음
- 중첩 기능 제공
- less, stylus보다 더 많이 사용하고 성숙도가 높으며, 안정적인 기능을 제공
- sass와 scss 중 표준 css와 호환되는 scss 사용
- sass와 scss는 중괄호와 세미콜론의 여부 차이(mixin 제외)
# 프로젝트 생성
$ mkdir scss-test
$ cd scss-test
$ npm init -y
$ npm i -D parcel-bundler
// package.json
"scripts": {
"dev": "parcel index.html",
"build": "parcel build index.html"
},
<!-- index.html -->
<head>
<title>Document</title>
<link rel="stylesheet" href="./main.scss" />
</head>
<body>
<div class="container">
<h1>Hello SCSS!</h1>
</div>
</body>
// main.scss
$color: tomato;
.container {
h1 {
color: $color;
}
}
Hello SCSS!
2. SCSS 주석
- /* */ : SCSS에서 CSS로 컴파일해도 코드 안에 포함
- // : SCSS에서 CSS로 컴파일하면 코드 안에 포함되지 않음
3. 중첩 With SassMeister
<div class="container">
<ul>
<li>
<div class="name">LWW</div>
<div class="age">43</div>
</li>
</ul>
</div>
/* css */
/* 상위 선택자를 반복적으로 작성해야 함 */
.container > ul li {
font-size: 40px;
}
.container > ul li .name {
color: royalblue;
}
.container > ul li .age {
color: orange;
}
// scss
// 중첩(Nesting)
.container {
> ul {
li {
font-size: 40px;
.name {
color: royalblue;
}
.age {
color: orange;
}
}
}
}
LWW
43
4. 상위 선택자 참조
- &는 자신이 포함된 영역의 상위 선택자를 참조
// ex 1) scss
.btn {
position: absolute;
&.active {
color: red;
}
}
.list {
li {
&:last-child {
margin-right: 0;
}
}
}
/* ex 1) css */
.btn {
position: absolute;
}
.btn.active {
color: red;
}
.list li:last-child {
margin-right: 0;
}
// ex 2) scss
.fs {
&-small { font-size: 12px; }
&-medium { font-size: 14px; }
&-large { font-size: 16px; }
}
/* ex 2) css */
.fs-small {
font-size: 12px;
}
.fs-medium {
font-size: 14px;
}
.fs-large {
font-size: 16px;
}
5. 중첩된 속성
- 선택자처럼 사용하고, 뒤에 : 기호를 붙임
- 중괄호가 끝나는 부분에 ; 붙여줌
// scss
.box {
font: {
weight: bold;
size: 10px;
family: sans-serif;
};
margin: {
top: 10px;
left: 20px;
};
padding: {
top: 10px;
bottom: 40px;
left: 20px;
right: 30px;
};
}
/* css */
.box {
font-weight: bold;
font-size: 10px;
font-family: sans-serif;
margin-top: 10px;
margin-left: 20px;
padding-top: 10px;
padding-bottom: 40px;
padding-left: 20px;
padding-right: 30px;
}
댓글남기기