[CSS] touch-action

Narcoker·2026년 1월 8일

CSS

목록 보기
41/41

touch-action: manipulation; 완전 정리

모바일 웹에서 버튼 클릭이 미묘하게 느린 경험은 대부분 브라우저의 터치 제스처 해석 지연 때문이다.
touch-action: manipulation;은 이 문제를 CSS 레벨에서 해결하는 가장 효과적인 방법이라고 한다.


1. touch-action이란?

touch-action터치 입력에 대해 브라우저가 어떤 기본 동작을 허용할지 사전에 선언하는 CSS 속성이다.

브라우저는 터치 이벤트가 발생하면 다음을 판단한다.

  • 스크롤인가?
  • 더블탭 확대인가?
  • 단순 클릭인가?

이 판단 과정 때문에 약 300ms 지연이 발생할 수 있다.


2. manipulation의 의미

button {
  touch-action: manipulation;
}

manipulation은 다음을 의미한다.

허용

  • 탭(tap)
  • 클릭(click)
  • UI 조작(manipulation)

차단

  • 더블탭 확대(double-tap zoom)
  • 핀치 줌(pinch zoom)

즉, 이 요소는 조작용 UI이므로 확대/축소 제스처가 필요 없다
라고 브라우저에 명시하는 것이다.

3. case by case 동작 비교

case 1. touch-action 미지정 (auto)

  • 브라우저 동작
    • 터치 후 스크롤/줌 여부 판단
  • 사용자 체감
    • 클릭 반응이 느리다
  • 성능 특성
    • 300ms 지연 발생 가능

➡️ 가장 안전하지만 가장 느린 방식이다.

case 2. touch-action: manipulation

  • 브라우저 동작
    • 제스처 판단 과정 생략
    • 클릭 이벤트 즉시 처리
  • 사용자 체감
    • 즉각적인 버튼 반응
  • 성능 특성
    • 지연 제거
    • 모바일 UX 개선

➡️ 실무에서 가장 균형 잡힌 선택이다.

case 3. touch-action: none

  • 브라우저 동작
    • 모든 기본 터치 동작 차단
  • 사용자 체감
    • 스크롤 불가
  • 성능 특성
    • 가장 빠르나 제어 책임이 큼

➡️ 캔버스, 드래그 UI 같은 특수 케이스용이다.

4. manipulation vs none 성능 비교

항목manipulationnone
클릭 반응 속도매우 빠름매우 빠름
스크롤 가능 여부가능불가
사용 난이도낮음높음
실무 안정성높음낮음

➡️ 일반 웹 서비스에서는 manipulation이 성능 대비 효율이 가장 좋다.

5. 300ms 지연이 사라지는 이유

모바일 브라우저는 과거 더블탭 확대를 지원하기 위해
터치 후 잠시 대기했다.

touch-action: manipulation은

“확대 제스처를 사용하지 않는다”라고 명시
브라우저가 기다릴 필요 없어 이벤트 즉시 확정

➡️ JavaScript 최적화가 아니라 브라우저 렌더링 파이프라인 최적화이다.

6. 권장 적용 대상

button,
a,
input,
label {
  touch-action: manipulation;
}
  • 버튼
  • 링크
  • 폼 컨트롤
  • 모바일 조작용 UI 컴포넌트

⚠️ body, layout div에 무분별하게 적용하는 것은 권장하지 않는다.

7. 정리

touch-action: manipulation;은 모바일 클릭 성능 최적화 CSS 속성이다.
더블탭 확대를 차단하여 300ms 지연을 제거한다.

case by case로 보면 auto보다 빠르고 none보다 안전하다.

모바일 웹 버튼 UX 개선에는 사실상 표준적인 선택이다.
모바일 웹에서 “버튼이 느리다” 라는 이슈가 있다면,
가장 먼저 적용해야 할 설정이다.

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글