font-size-padding()
글자 크기(font-size) 기준 패딩(padding) 설정 믹스인
용도
사용법
.usage {
@include font-size-padding(20, 10 16 8);
}.usage {
padding: 0.5em 0.8em 0.4em;
font-size: 1.25rem;
}로직
참고
Last updated
글자 크기(font-size) 기준 패딩(padding) 설정 믹스인
.usage {
@include font-size-padding(20, 10 16 8);
}.usage {
padding: 0.5em 0.8em 0.4em;
font-size: 1.25rem;
}Last updated
@mixin font-size-padding($font-size, $padding) {
// 전달 받은 $padding 유형 검사
$type-collection: list number string;
// 개발자가 요구하는 데이터 유형이 올바르게 전달된 경우 → 처리
@if is-valid-types($padding, $type-collection) {
$padding-type: type-of($padding);
// 숫자인 경우
@if $padding-type == 'number' {
padding: em($padding, $font-size);
}
// 문자인 경우
@if $padding-type == 'string' {
padding: $padding;
}
// 리스트인 경우
@if $padding-type == 'list' {
// 새롭게 반환할 리스트 정의
$convert-padding-list: ();
@each $value in $padding {
// 값이 숫자인 경우 (예: 10px)
@if type-of($value) == 'number' {
$convert-padding-list: append($convert-padding-list, em($value, $font-size));
}
// 값이 문자인 경우 (예: auto)
@if type-of($value) == 'string' {
$convert-padding-list: append($convert-padding-list, $value);
}
}
padding: $convert-padding-list;
}
}
// 개발자가 요구하지 않은 데이터 유형이 전달된 경우 → 오류 표시
@else {
@error '전달 받은 #{$padding} 값은 요구되는 #{join($type-collection, [], $separator: comma, $bracketed: true)} 유형이 아닙니다.';
}
// ----------------------------------------------
// $font-size 전달 인자: 유효성 검사(validation)
@if type-of($font-size) != 'number' {
@error '전달 받은 #{$font-size} 값은 숫자 유형이 아닙니다.';
}
// $font-size 값을 설정
font-size: rem($font-size);
}@mixin fsp($font-size, $padding) {
@include font-size-padding($font-size, $padding);
}