#TIL_21.09.16
CSS 심화 (2)
재활용
@mixin / @include
@mixin 함수명 { // 재활용 할 스타일 ... }
: @mixin 을 통해 재활용 할 코드 정의
@include 함수명;
... mixin 을 통해 정의된 코드를 사용
- @mixin 은 함수 개념과 비슷해서 매개변수를 받아 사용할 수 있다.
@mixin large-text($size or $size: 30px) { // 기본값을 지정해 줄 수 있다
font-size: $size;
// ...
}
.box {
@include large-text(40px); // font-size: 40px;
}
- @minin 내에서
@if
구문을 사용할 수 있다.
삼항연산자 사용 가능 ( if (condition, true, false)
}
@if ($size < 30px) {
font-size: 30px;
} @else {
font-size: $size;
}
@mixin func($w, $h, $b...)
: $변수명...
을 통해 여러개의 인수를 한번에 받아올 수 있음 (전개 연산자와 비슷한 용도)
- 보간과 함께 사용하면 다양한 활용이 가능함.
@mixin 함수명 { // 재활용 할 스타일 ... }
: @mixin 을 통해 재활용 할 코드 정의@include 함수명;
... mixin 을 통해 정의된 코드를 사용@mixin large-text($size or $size: 30px) { // 기본값을 지정해 줄 수 있다
font-size: $size;
// ...
}
.box {
@include large-text(40px); // font-size: 40px;
}
@if
구문을 사용할 수 있다.삼항연산자 사용 가능 (
if (condition, true, false)
}@if ($size < 30px) {
font-size: 30px;
} @else {
font-size: $size;
}
@mixin func($w, $h, $b...)
: $변수명...
을 통해 여러개의 인수를 한번에 받아올 수 있음 (전개 연산자와 비슷한 용도)키워드 인수
null
: 속성의 값으로 사용했을 때, 컴파일 되지 않음 (값을 넣고자 하지 않을 때 null 을 넣어줌)@content
: mixin 을 사용할 때 특정한 스타일 블록을 더 추가할 수 있는데, 이 스타일 블록이 들어가는 위치를 @content 키워드를 통해 지정할 수 있다.- sass 에서 map 데이터를 제대로 사용하기 위해서는
@use "sass:map"
을 통해 내장 모듈을 불러와서 사용해야 함.
map.get(데이터, 조회할 key값)
: map 데이터를 조회할 수 있음. @content(매개변수)
: @content 를 통해 인수를 받아서 사용할 수 있음.
@include media(lg) using ($c)
와 같이using()
키워드를 통해 사용할 수 있다.
확장
@extend 태그(클래스)
: 다중선택자로 확장할 수 있음.
중첩된 상태에서는 의도하지 않은 선택자가 만들어지는 부작용이 생길 수 있으므로 사용성이 떨어질 수 있음. (선택자 폭발)%
선택자: placeholder 선택자 .... @extend 규칙을 통한 확장에만 사용할 수 있는 개념
함수
@function function() { ... @return 값; }
@error 'message'
: 의도치 않은 동작이 있을 경우 if 등을 통하여 에러메세지를 출력 할 수 있음.- 함수의 이름이 내장함수와 겹치게 될 수 있기 때문에 my- 등의 키워드를 붙여 지어주는 것이 좋음
SCSS 가져오기 / 모듈
npm install -g sass
: sass 패키지 설치sass <input.scss> [output.css]
: sass 를 css 로 컴파일sass scss:css
: scss 폴더를 css폴더로 컴파일_variables.scss
를 통해 변수들을 지정함
main.scss 에서@import "./variables"
를 통해 불러와서 사용함- 파일명 앞에 '
_
' 키워드가 있다면, 별도의 css 파일로 컴파일되지 않음. @use "./vasiables" as var
var.$primary
와 같이 사용할 수 있다.
이름 충돌이 일어나지 않게-
등의 키워드를 붙여 사용할 수 있다. ... 접두사를 추가할 때는*
키워드를 붙여서 정의해주어야 한다. (~~ as var-*;
)- .scss 확장자는 생략하는 게 좋음 (.scss 로 명시하게 되면 컴파일이 .scss 로 그대로 되기 때문에 웹 브라우저가 해석할 수 없음)
- 다른 영역으로 모듈을 전달할 때는
@forward "모듈"
을 통해 넘겨줄 수 있다.
@use "/넘겨준 폴더/main"
과 같이 받아서 사용할 수 있다.
디버그
@debug "message"
: console.log 처럼 컴파일 시, 터미널에 메세지를 출력할 수 있음.@warn
: console.warn() 과 유사함@error
: throw error 와 유사함
회고
SCSS 가 생각보다 복잡한 개념들이 많아서 조금 힘들었던 것 같다.
보통 자바스크립트와 비슷한 쓰임으로 사용되지만 사용법은 조금씩 달라 헷갈리지 않게끔 잘 정리해야겠다.
Author And Source
이 문제에 관하여(#TIL_21.09.16), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@krungy/TIL21.09.16저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)