CSS - 수학 함수: 초보자 가이드
안녕하세요, 미래의 CSS 마법사 여러분! 오늘 우리는 CSS 수학 함수의 세계로 흥미로운 여정을 떠납니다. 코드를 한 줄도 적어본 적 없으신 분들도 걱정 마세요 - 저는 여러분의 친절한 안내자가 되어, 단계별로 이를 안내하겠습니다. 이 튜토리얼의 끝을 맺을 때, 단 몇 가지 수학적인 트릭만으로도 CSS에서 얼마나 많은 것을 할 수 있는지 놀라게 될 것입니다!
기본 산술 함수
먼저 기본적인 것으로 시작해보겠습니다. CSS는 우리에게 몇 가지 간단한 산술 함수를 제공하여, 웹 페이지 디자인 시 우리의 삶을 훨씬 수월하게 만들어줍니다. 이 함수들은 우리가 CSS 코드 내에서 직접 계산을 수행할 수 있게 합니다.
calc() 함수
calc()
함수는 CSS 수학의 슈вейцар 아ーノ이 knife입니다. 이 함수는 CSS 내에서 기본적인 산술 연산을 수행할 수 있게 해줍니다. 예를 들어보겠습니다:
.box {
width: calc(100% - 20px);
}
이 예제에서, 우리는 클래스 "box"를 가진 요소의 너비를 부모 요소의 너비의 100%에서 20ピクセル을 뺀 값으로 설정하고 있습니다. 이는 다양한 화면 크기에 맞게 반응하는 레이아웃을 만들 때 매우 유용합니다.
다음과 같이 설명해보겠습니다:
-
100%
는 부모 요소의 전체 너비를 나타냅니다. -
-20px
는 그 너비에서 20ピクセル을 뺍니다. -
calc()
함수는 이 계산을 우리 대신 수행합니다.
calc()
함수에서는 사칙 연산 모두 사용할 수 있습니다: 덧셈 (+), 뺄셈 (-), 곱셈 (*), 나눗셈 (/). 다른 예제를 보겠습니다:
.column {
width: calc(33.33% - 10px);
margin-right: calc(10px * 2);
}
이 경우, 우리는 세 칸 레이아웃을 만들고 있습니다. 각 칸은 너비의 세분의 1(33.33%)에서 10ピクセル을 뺀 공간을 차지하며, 오른쪽 여백은 공간의 두 배 크기입니다.
비교 함수
기본적인 것을 배운 다음, 비교 함수로 넘어가보겠습니다. 이 함수들은 다양한 조건에 맞게 반응하는 반응형 디자인을 만들 때 매우 유용합니다.
min() 함수
min()
함수는 주어진 값 목록 중 가장 작은 값을 반환합니다. 이는 요소 크기의 최대한을 설정하는 데 완벽합니다. 예를 들어:
.responsive-text {
font-size: min(5vw, 30px);
}
이는 폰트 크기를 뷰포트 너비의 5%로 설정하지만, 30ピクセル보다 커지지 않도록 합니다. 이는 큰 화면에서 텍스트가 너무 커지지 않도록 하는 좋은 방법입니다.
max() 함수
max()
함수는 min()
과 반대로 작동합니다. 주어진 값 목록 중 가장 큰 값을 반환합니다. 다음과 같이 사용할 수 있습니다:
.responsive-image {
width: max(300px, 50%);
}
이는 이미지가 항상 최소 300ピクセル 너비이지만, 50%의 컨테이너보다 작지 않도록 합니다.
clamp() 함수
clamp()
함수는 min()
과 max()
의 조합과 같습니다. 이 함수는 최소值, 선호值, 최대值를 받습니다. 예를 들어:
.responsive-element {
width: clamp(200px, 50%, 500px);
}
이는 너비를 컨테이너의 50%로 설정하지만, 최소 200ピクセル이고 최대 500ピクセル이 되도록 합니다.
고급 CSS 수학 함수
이제 기본적인 것을 다루고 보니, CSS 스킬을 다음 단계로 끌어올릴 수 있는 더 고급 함수들을 탐구해보겠습니다.
abs() 함수
abs()
함수는 숫자의 절대值를 반환합니다. 이는 애니메이션에서나 항상 양수인 값이 필요할 때 유용합니다. 예를 들어:
.box {
transform: translateX(abs(var(--x)));
}
이는 --x
커스텀 프로퍼티의 값에 따라 수직 방향으로 이동시키지만, 항상 양수 방향으로 이동합니다.
round() 함수
round()
함수는 숫자를 가장 가까운 정수로四捨五入합니다. 이는 값들을 그리드에 고정하는 데 유용합니다. 예를 들어:
.grid-item {
width: calc(round(100% / 3));
}
이는 각 칸의 너비를 100%를 3으로 나눈 값을 가장 가까운 정수로四捨五入한 값으로 설정합니다.
단계별 값 함수
단계별 값 함수는 값들이 부드럽게 변하는 대신, 특정 단계에서 변화하는 값을 만들 수 있습니다.
mod() 함수
mod()
함수는 나눗셈 후 나머지를 반환합니다. 이는 반복 패턴을 만드는 데 사용할 수 있습니다. 예를 들어:
.striped-background {
background-color: hsl(0, 0%, mod(var(--i) * 10, 100)%);
}
이는 각 줄의 밝기를 그 인덱스(--i
)에 따라 결정하고, 10줄마다 반복합니다.
삼각 함수
마지막으로, 삼각 함수에 대해 살펴보겠습니다. 이 함수들은 복잡한 애니메이션과 레이아웃을 만드는 데 매우 강력합니다.
sin()과 cos() 함수
sin()
과 cos()
함수는 각도의 사인과 余弦을 반환합니다. 이는 주로 애니메이션에서 사용됩니다. 간단한 예제를 보겠습니다:
@keyframes orbit {
from {
transform: rotate(0deg) translateX(100px) rotate(0deg);
}
to {
transform: rotate(360deg) translateX(100px) rotate(-360deg);
}
}
.orbiting-element {
animation: orbit 5s linear infinite;
}
이는 원 중앙을 중심으로 원운동하는 애니메이션을 만듭니다.
함수 참조 표
이제 우리가 다루었던 모든 CSS 수학 함수의 빠른 참조 표를 제공하겠습니다:
함수 | 설명 | 예제 |
---|---|---|
calc() | 기본 산술 연산 수행 | calc(100% - 20px) |
min() | 가장 작은 값을 반환 | min(5vw, 30px) |
max() | 가장 큰 값을 반환 | max(300px, 50%) |
clamp() | 최소值와 최대值 사이에서 값 고정 | clamp(200px, 50%, 500px) |
abs() | 절대值 반환 | abs(var(--x)) |
round() | 가장 가까운 정수로 四捨五入 | round(100% / 3) |
mod() | 나머지 반환 | mod(var(--i) * 10, 100) |
sin() | 각도의 사인 반환 | sin(45deg) |
cos() | 각도의 余弦 반환 | cos(45deg) |
이제 여러분은 많은 내용을 다루었습니다. 기본 산술에서 고급 삼각 함수까지, 이를 습득하는 열쇠는 연습입니다. 이를 CSS에 통합하고, 다양한 조합을 실험하여, 쉽게 아름다운 반응형 디자인을 만들 수 있게 되세요. 행복한 코딩을 기원합니다!
Credits: Image by storyset