CSS Cubic Bezier 생성기

두 핸들을 드래그하여 이징 곡선을 만들고, 등속 운동과 비교하는 실시간 애니메이션을 확인한 뒤 cubic-bezier() 값을 복사해 보세요.

프리셋
제어점 설정
첫 번째 제어점
두 번째 제어점
미리보기
내 곡선
linear
cubic-bezier(0.25, 0.1, 0.25, 1)
핸들을 드래그하거나 프리셋을 선택하여 곡선을 디자인해 보세요.

곡선은 브라우저에서 직접 렌더링됩니다. 설정한 어떤 데이터도 BroBroGo 서버로 전송되지 않습니다.

자주 묻는 질문

두 개의 핸들과 네 개의 숫자는 무엇을 의미하나요?

곡선은 왼쪽 아래(시작점)에서 오른쪽 위(끝점)로 진행되며, 가로는 시간의 흐름을, 세로는 진행률을 나타냅니다. 곡선을 구부리는 두 개의 조절 핸들이 제어점이며, 각각 X와 Y 좌표를 가져 합쳐서 cubic-bezier(x1, y1, x2, y2)가 됩니다. X는 항상 0과 1 사이로 유지되지만, Y는 상단이나 하단 경계를 벗어날 수 있어 움직임이 안착하기 전에 오버슈트하거나 뒤로 당겨지는 모션을 만들어낼 수 있습니다.

이 값을 CSS에서 어떻게 사용하나요?

생성된 cubic-bezier() 값을 복사하여 transition-timing-function, animation-timing-function 또는 단축 속성(예: transition: transform 0.3s cubic-bezier(0.25, 0.1, 0.25, 1)) 등 타이밍 함수가 들어가는 곳에 붙여넣으세요. ease, ease-in, ease-out, ease-in-out 키워드는 고정된 cubic-bezier 곡선일 뿐이므로, 해당 프리셋을 선택하면 키워드 뒤에 숨겨진 정확한 수치를 확인할 수 있습니다.

바운스(bounce)나 탄성(elastic) 효과도 만들 수 있나요?

단일 곡선만으로는 어렵습니다. 하나의 cubic-bezier로도 예비 동작(anticipate)이나 오버슈트(overshoot) 효과는 낼 수 있지만(예: 'back' 프리셋은 핸들 하나를 박스 바깥으로 당겨 이 효과를 구현함), 이는 한 방향으로 움직였다가 안착하는 것만 가능합니다. 여러 번 방향을 바꾸는 통통 튀는(bounce) 효과나 탄성(elastic) 효과는 단일 cubic-bezier로 표현할 수 없으며, CSS 키프레임(keyframes)이나 여러 지점을 정의하는 linear() 함수를 사용해야 합니다.

CSS 이징 곡선의 작동 원리와 제어점

CSS Cubic Bezier 생성기는 웹 애니메이션과 전환(transition) 효과에 사용할 이징 곡선을 시각적으로 디자인하는 도구입니다. 이징 곡선은 왼쪽 아래(시작점)에서 오른쪽 위(끝점)로 진행됩니다. 가로축은 시간의 흐름을 나타내고, 세로축은 애니메이션의 진행률을 나타냅니다.

곡선의 형태는 두 개의 조절 핸들, 즉 제어점을 드래그하여 결정합니다. 각 제어점은 X와 Y 좌표를 가집니다.

  • 첫 번째 제어점 X, Y: 곡선의 시작 부분 흐름을 제어합니다.
  • 두 번째 제어점 X, Y: 곡선의 끝 부분 흐름을 제어합니다.

이 제어점들의 위치에 따라 애니메이션의 속도 변화가 결정되며, 도구는 이를 cubic-bezier(x1, y1, x2, y2) 형태의 CSS 함수 값으로 변환하여 제공합니다.

입력 값의 제한과 규칙

제어점의 좌표를 직접 숫자로 입력하거나 키보드로 미세하게 조정할 때 다음과 같은 수치 제한과 규칙이 적용됩니다.

  • X축 입력 제한: 시간의 흐름을 나타내는 X 값(첫 번째 제어점 X, 두 번째 제어점 X)은 반드시 01 사이의 값이어야 합니다. 입력 필드에 9와 같이 범위를 벗어나는 값을 입력하고 포커스를 잃으면 자동으로 최대 한계치인 1로 변경됩니다.
  • Y축 입력 제한: 진행률을 나타내는 Y 값(첫 번째 제어점 Y, 두 번째 제어점 Y)은 -0.70에서 1.70 사이로 제한됩니다. Y 값은 상단(1)이나 하단(0) 경계를 벗어날 수 있으며, 이를 통해 독특한 운동 효과를 만들어냅니다.
  • 입력 필드 복원: 수치 입력 필드를 완전히 비운 상태에서 포커스를 잃으면, 이전에 입력되어 있던 유효한 값이 자동으로 복원됩니다. 빈 값이나 숫자가 아닌 입력이 감지되면 도구는 완전한 값이 입력될 때까지 대기합니다.
  • 키보드 조작: 제어점 핸들이 선택된 상태에서 키보드 왼쪽 화살표 키를 누르면 값이 미세하게 감소하여 예컨대 0.99와 같은 값으로 변경됩니다.

프리셋과 오버슈트 효과

이 도구는 수동 조절 외에도 자주 사용되는 표준 타이밍 함수와 특수 효과를 위한 프리셋을 제공합니다. 프리셋 목록에는 "ease", "ease-in", "ease-out", "ease-in-out"과 같은 기본 키워드와 "Back In", "Back Out", "Back In-Out"이 포함되어 있습니다.

특히 "Back Out" 프리셋을 선택하면 cubic-bezier(0.34, 1.56, 0.64, 1) 값이 설정됩니다. 이 곡선처럼 Y 값이 1을 초과하여 위로 솟구치면, 애니메이션 대상이 최종 목적지에 도달하기 전에 목표 지점을 초과했다가 다시 돌아와 안착하는 오버슈트(overshoot) 효과가 발생합니다. 반대로 Y 값이 0보다 작아지면 시작 지점보다 뒤로 당겨졌다가 출발하는 예비 동작(anticipate) 효과를 구현할 수 있습니다.

단일 Cubic Bezier의 한계

cubic-bezier() 함수는 부드럽고 역동적인 가속과 감속을 표현하는 데 매우 유용하지만 수학적인 한계가 존재합니다. 하나의 cubic-bezier 곡선은 한 방향으로 움직였다가 안착하는 모션(예비 동작 및 오버슈트)까지는 표현할 수 있지만, 여러 번 방향을 바꾸는 움직임은 불가능합니다. 따라서 물체가 바닥에 닿아 통통 튀는 바운스(bounce) 효과나 고무줄처럼 흔들리는 탄성(elastic) 효과와 같이 방향 전환이 여러 번 일어나는 복잡한 애니메이션은 단일 cubic-bezier 함수만으로 구현할 수 없습니다.

브라우저 내 연산 및 개인정보 보호

CSS Cubic Bezier 생성기는 사용자가 설정한 모든 곡선 렌더링과 수치 계산을 외부 서버를 거치지 않고 사용자의 웹 브라우저 내에서 직접 처리합니다. 사용자가 입력 필드를 수정하거나 핸들을 드래그하여 설정한 어떤 데이터도 BroBroGo 서버로 전송되지 않습니다.

자주 묻는 질문 (FAQ)

Q. 두 개의 핸들과 네 개의 숫자는 무엇을 의미하나요?
A. 곡선은 왼쪽 아래(시작점)에서 오른쪽 위(끝점)로 진행되며, 가로는 시간의 흐름을, 세로는 진행률을 나타냅니다. 곡선을 구부리는 두 개의 조절 핸들이 제어점이며, 각각 X와 Y 좌표를 가져 합쳐서 cubic-bezier(x1, y1, x2, y2)가 됩니다. X는 항상 0과 1 사이로 유지되지만, Y는 상단이나 하단 경계를 벗어날 수 있어 움직임이 안착하기 전에 오버슈트하거나 뒤로 당겨지는 모션을 만들어낼 수 있습니다.

Q. 이 값을 CSS에서 어떻게 사용하나요?
A. 생성된 cubic-bezier() 값을 복사하여 transition-timing-function, animation-timing-function 또는 단축 속성(예: transition: transform 0.3s cubic-bezier(0.25, 0.1, 0.25, 1)) 등 타이밍 함수가 들어가는 곳에 붙여넣으세요. "ease", "ease-in", "ease-out", "ease-in-out" 키워드는 고정된 cubic-bezier 곡선일 뿐이므로, 해당 프리셋을 선택하면 키워드 뒤에 숨겨진 정확한 수치를 확인할 수 있습니다.

Q. 바운스(bounce)나 탄성(elastic) 효과도 만들 수 있나요?
A. 단일 곡선만으로는 어렵습니다. 하나의 cubic-bezier로도 예비 동작(anticipate)이나 오버슈트(overshoot) 효과는 낼 수 있지만(예: 'back' 프리셋은 핸들 하나를 박스 바깥으로 당겨 이 효과를 구현함), 이는 한 방향으로 움직였다가 안착하는 것만 가능합니다. 여러 번 방향을 바꾸는 통통 튀는(bounce) 효과나 탄성(elastic) 효과는 단일 cubic-bezier로 표현할 수 없으며, CSS 키프레임(keyframes)이나 여러 지점을 정의하는 linear() 함수를 사용해야 합니다.