SASS/문법 - 함수

함수 - 함수, 함수예제

appmaster 2021. 1. 18. 14:12

1. 함수(Functions)

자신의 함수를 정의하여 사용할 수 있다. 함수와 Mixins은 거의 유사하지만 반환되는 내용이 다르다.

Mixin은 위에서 살펴본 대로 지정한 스타일(Style)을 반환하는 반면, 함수는 보통 연산된(Computed) 특정  @return 지시어를 통해 반환한다.

// Mixins
@mixin 믹스인이름($매개변수) {
  스타일;
}

// Functions
@function 함수이름($매개변수) {
  @return 값
}

사용하는 방법에도 차이가 있다. 
Mixin은 @include 지시어를 사용하는 반면, 함수는 함수이름으로 바로 사용한다. 그리고 함수는 시작할때도 "@"을 사용하고 return할때도 "@"을 사용한다

// Mixin
@include 믹스인이름(인수);

// Functions
함수이름(인수)

함수는 특정한 지시어가 없이, 함수이름으로 사용한다. 

 

 

2. 함수예제

@function columns($number, $columns, $width){
    @return $width * ($number/$columns);
}

.container{
    $width: 1200px;
    width: $width;
    
    .item:nth-child(1){
        width: columns(1, 12, $width);
    }
    .item:nth-child(2){
        width: columns(8, 12, $width);
    }
    .item:nth-child(3){
        width: columns(3, 12, $width);
    }
}
.container {
  width: 1200px;
}
.container .item:nth-child(1) {
  width: 100px;
}
.container .item:nth-child(2) {
  width: 800px;
}
.container .item:nth-child(3) {
  width: 300px;
}

 

위의 소스코드를 해석하자면, 매개변수를 값을 받아오고 받아온값을 연산해서 반환하는것을 볼 수 있다.

하지만 매번 매개변수값을 일일이 입력하는것도 힘들 수 있다. 이것을 대비해서 이전시간에 배운 키워드 인수와 매개변수 초기값을 설정할 수 있다.

@function columns($number: 1, $columns: 12, $width: 1200px){
    @return $width * ($number/$columns);
}

.container{
    $width: 1200px;
    width: $width;
    
    .item:nth-child(1){
        width: columns(1, $width: $width);
    }
    .item:nth-child(2){
        width: columns(8, $width: $width);
    }
    .item:nth-child(3){
        width: columns(3, $width: $width);
    }
}
.container {
  width: 1200px;
}
.container .item:nth-child(1) {
  width: 100px;
}
.container .item:nth-child(2) {
  width: 800px;
}
.container .item:nth-child(3) {
  width: 300px;
}

초기값을 columns함수의 매개변수로 값을 지정해서 함수만 호출하더라도 값이 출력되게 할 수 있다. 또한 바꾸고 싶은 값이 있다면, 키워드 인수를 이용해서 값을 변경하면 된다.

 

@function columns($number: 1, $columns: 12, $width: 1200px){
    @return $width * ($number/$columns);
}

.container{
    $width: 1200px;
    width: $width;
    
    .item:nth-child(1){
        width: columns();
    }
    .item:nth-child(2){
        width: columns(8, $width: $width);
    }
    .item:nth-child(3){
        width: columns(3, $width: $width);
    }
}
.container {
  width: 1200px;
}
.container .item:nth-child(1) {
  width: 100px;
}
.container .item:nth-child(2) {
  width: 800px;
}
.container .item:nth-child(3) {
  width: 300px;
}

다음과 같이 아애 인자 없이도 매개변수로 초기값을 설정해놓았기 때문에 값이 잘 출력되는걸 알 수 있다.

'SASS > 문법 - 함수' 카테고리의 다른 글

함수 - 함수 이름 중복, IF 함수  (0) 2021.01.18