scss를 사용하는 이유
1. 호환성: 모든 버전의 CSS와 완벽하게 호환된다.
2. 기능성: 다양한 기능을 제공하고, 거의 모든 면에서 뛰어나다.
3. 안정성: 오랜 기간 적극적인 지원 아래 관리되어 왔다.
4. 인지도: 업계에서 인정받고 있으며, 많이 사용되고 있다.
5. 신뢰도: 거대 커뮤니티의 지원 아래 개발되고 있다.
6.확장성: Sass 기반의 프레임워크가 다수 존재한다.
.SCSS와 .SASS 차이
SASS는 괄호를 사용하지 않고 들여쓰기를 사용SCSS
$main-color : red; .main-box { color : $main-color; /* main-color : red */ }
SASS
$sub-color : blue; .sub-box color : $sub-color; /* main-color : blue */
사용법 (VSCode를 사용)
1. VSC 좌측 탭에서 확장 아이콘 클릭
2. 검색창에 sass 검색
3. Live Sass Compiler
(v5.0.0 이상)
설치4. 작업 폴더를 VSC에서 열고 좌측 탐색기에서 새파일 > 작업할파일명.scss 생성
5. VSC 하단에 Watch Sass 클릭
6. 자동으로
css와 css.map
파일 생성7. scss에 스타일링
8.
html에 <head>에 <link>를 사용하여 제작된 .css 파일 링크
SCSS 문법 1 : 값을 저장해놓고 쓰는 "변수"
많은곳에서 사용하는 공통적인 값을 변수에 넣으면 유지보수(수정과 관리)에 편리한 장점을 가지고 있다.ex)
css
ㅤ$main-color : #2a4cb2; $sub-color : #4a6b8c; $main-font-size : 16px; $main-width : 100%; .box { width: $main-width; background-color: $main-color; color: $sub-color; font-size: $main-font-size; }
SCSS 문법 2 : "사칙연산"
단위를 맞춰서 계산에 유용한 장점을 가지고 있다.ex)
css
ㅤ$main-font-size : 16px; .box { font-size : $main-font-size + 2px; /* css에서는 18px로 변환 */ width : (100px * 2); /* 200px */ height :(300px / 3); /* 300px */ }
SCSS 문법 3 : "Nesting"
관련있는 class를 묶을 때 Nesting을 사용하여 가독성 있게 코드를 개선ex)
css
.header { ul { width : 100%; } /* .header ul {} 과 동일 */ li { color : black; } /* .header li {} 와 동일 */ }
ex) pseudo-class 사용방법
css
ㅤ.header { :hover { width : 100%; } /* .header :hover {} 과 동일 */ &:hover { color : black; } /* .header:hover {} 와 동일 */ }
SCSS 문법 4 : @extend
변수처럼 선언하여 이미 존재하는 클래스를 확장한다.
% : 임시클래스, 클래스로 컴파일하지 않을때 사용하는 기호
ex)
css
ㅤ%box { width:100%; height:50%; padding:20px; } /* .box 처럼 ".클래스명"도 가능하다 */ .box-red { @extend %btn; background-color : red; }
SCSS 문법 4 : @mixin
코드를 한단어로 축약
@minin 작명() { } : 함수처럼 속성의 긴 코드를 단축
@include 작명() : @mixin 작명() 불러옴
ex) 1. 기본형
css
@minxin h-font(){ font-size; 30px; letter-spacing: 1px; } h2{ @include h-font() }
ex) 2. @minin 작명1($작명2, $작명3) { } : 긴 코드를 가변적으로 만들고, 속성값에 변수를 넣을 때 사용
css
@minxin h-font($fs, $ls){ font-size; fs; letter-spacing: ls; } h2{ @include h-font(30px, -1px) } /* h2 { font-size:30px; letter-spacing:-1px } 이 된다. */
ex) 3. @minin 작명1($작명2, $작명3) { } : 긴 코드를 가변적으로 만들고, 속성에 변수를 넣을 때 사용
css
ㅤ@minxin h-font($fs, $arg2){ font-size; fs; #{ $arg2 }: -1px; } h2{ @include h-font(30px, width) } /* h2 { font-size:30px; widht:-1px } 이 된다. */
SCSS 문법 5 : @use와 언더바 파일
@use 'reset.css'; = @import 'reset.css';와 동일하다
@import의 단점 :
1. 기본 css에서도 @import를 사용하여 혼란을 초래할 수 있다.
2. 같은 파일을 여러번 import 하면 코드 충돌과 중복 코드로 인해 컴파일 속도가 느려질 수 있다.
3. 모든 변수와 함수가 전역으로 관리되기 때문에 같은 이름의 변수나 함수를 사용하면 먼저 선언된 것들이 무시된다.
4. 어디서 가져온 변수 or 함수인지 직관적으로 알 수 없다.
@use의 장점 :
1. 혼란을 피할 수 있다.
2. 모듈시스템과 동일하게 동작하기 때문에 컴파일 중에 단 한번만 improt된다.
3. 사용하면 모듈 별로 별도의 namespace를 가지기 때문에 각 변수와 함수는 독립적으로 사용된다.
4. 변수나 함수를 사용할때는 namespace.function()과 같이 사용하기 때문에 어디서 가져온 요소인지 직관적으로 알 수 있다.
ex)
css
@use 'reset.css'; /* 기존 파일에 전부 사용할 수 있다. */
ex) 2. _(언더바)를 이용한 첨부용 파일로 작명
css
@use '_reset.css'; /* 컴파일 하지 않고 첨부용으로 사용할 수 있다. */
:root는 전역 CSS 변수 선언에 유용하게 사용할 수 있습니다.
사용법
1. css 상단에 :root로 변수를 선언
css
:root { --main-color : red; }
2. 사용할 셀렉터에 var()를 사용하여 변수 삽입
css
.box { background-color : var(--main-color); /* 배경색이 red로 속성 부여 */ }
css 사칙연산
calc()
함수를 사용하여 속성값을 사칙연산
사용법
css
.box { width: calc(100% - 1em); font-size : calc(20px - 4px) /* font-size : 16px */ }
:root(전역CSS변수) 와 calc() 계산식 함수 동시에 사용
사용법
1. :root로 전역변수 선언
:root { --main-width: 100%; }
2. 셀렉터에 계산식 함수 사용
.box { width : calc(var(--main-width) - 20%); }
https://penguingoon.tistory.com/275
https://codingapple.com/course/html-basics/
https://developer.mozilla.org/ko/docs/Web/CSS/:root
https://blog.naver.com/pink_candy02/222347151036