2025. 5. 16. 23:23ㆍCSS
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
모바일 웹을 개발하다 보면 간혹 예상치 못한 터치 이슈를 만납니다. 특히 iPhone 15 Pro Max와 같은 최신 디바이스에서, 버튼을 눌렀을 때 터치 하이라이트가 엉뚱한 위치에 표시되는 문제를 겪은 적 없으신가요?
이번 포스팅에서는 그런 문제를 겪었을 때, CSS 속성 touch-action: manipulation;이 어떻게 해결책이 되었는지 공유해 보려 합니다.
어떤 문제에 효과적인가?
1. 더블탭 확대 방지
모바일 Safari 등에서 버튼이나 링크를 두 번 탭할 때 화면이 자동으로 확대되는 현상을 막습니다.
2. 터치 반응 지연 제거 (300ms 딜레이)
과거 모바일 브라우저는 더블탭 확대를 구분하기 위해 클릭 반응에 300ms 지연을 뒀습니다. touch-action: manipulation;으로 즉시 반응하도록 합니다.
3. iOS에서 터치 하이라이트 오작동 해결
iPhone 15 Pro Max 등 일부 기기에서 버튼 터치 시 하이라이트가 잘못 표시되는 문제를 해결합니다.
해결 방법: touch-action: manipulation;
해결책은 간단했습니다. 터치 관련 기본 동작을 제한해 주는 CSS 속성 한 줄을 추가하면 됩니다.
button {
touch-action: manipulation;
}
이 속성은 사용자의 탭이나 클릭 같은 조작에만 반응하고, 브라우저가 기본적으로 처리하는 확대, 스크롤, 터치 하이라이트 등의 동작은 제외하도록 설정합니다.
touch-action 속성값에 대해서
속성값 | 설명 | 사용 예시 |
---|---|---|
auto (기본값) |
브라우저가 터치 이벤트에 대해 기본 동작(스크롤, 확대, 더블탭 등)을 자유롭게 처리 | 특별한 제약 없이 기본 상태로 유지하고 싶을 때 |
none |
모든 브라우저 기본 터치 동작 차단 (스크롤 X, 확대 X, 터치 하이라이트 X) |
캔버스, 지도, 드래그 등 커스텀 제스처 UI에 사용 |
pan-x |
수평 스크롤만 허용, 수직 스크롤 차단 | 가로 슬라이더 영역에서 세로 스크롤 충돌 방지 |
pan-y |
수직 스크롤만 허용, 수평 스크롤 차단 | 세로 스크롤은 허용하면서 가로 제스처 감지 시 |
pan-x pan-y |
수직/수평 스크롤 모두 허용 (사실상 auto 와 유사하나 명시적 설정 가능) |
모든 방향 스크롤 허용하면서 다른 동작은 제한하고 싶을 때 |
manipulation |
탭, 클릭 등 조작만 허용, 확대/스크롤은 차단 | 버튼, 탭, 링크 등에서 더블탭 확대 방지 및 빠른 반응 필요 시 |
주의사항
- touch-action 속성은 터치 인터페이스에서만 의미가 있으며, 마우스 기반 환경에서는 영향이 없습니다.
- 일부 속성값은 Internet Explorer/Edge 레거시 버전만 지원하는 것도 있으므로, 크로스 브라우징이 필요하면 Can I Use 사이트에서 지원 범위를 꼭 확인하세요.
- 부모 요소에 설정된 touch-action 값이 자식 터치 이벤트에 영향을 줄 수 있습니다.
저처럼 iPhone 최신 기기에서 발생하는 터치 하이라이트 이슈를 겪으셨다면, 이 속성을 꼭 적용해 보시길 추천드립니다.
[AI] 미드저니(Midjourney) 비공개 서버 활용법 : 나만의 창작 공간을 만들고 싶다면?
Midjourney를 사용하다 보면 이런 고민을 하게 됩니다."내가 만든 이미지, 다른 사람들이 보는 거 싫은데...?" 특히 공식 Midjourney 디스코드 서버에서는 내가 프롬프트를 입력할 때마다 수많은 유저들
dev-chim.tistory.com
[Git] PR 커밋 해시를 활용한 브랜치 생성 : 쉽고 간단한 가이드
가끔 코드 리뷰나 협업 과정에서 특정 PR의 커밋 해시를 로컬 환경에서 확인해야 할 때가 있습니다. 이 글에서는 원격 저장소에서 해당 커밋을 로컬로 가져와, 그 해시를 기반으로 브랜치를 생성
dev-chim.tistory.com
[macOS] 메모(Memo)에서 PDF 파일로 변환하는 간단 방법
Mac OS에서 메모장을 사용하여 작성한 파일을 PDF 형식으로 내보내는 방법에 대해 알아보겠습니다. 메모장에서 PDF 파일로 내보내는 방법PDF 파일 형식은 문서를 안전하게 저장하고 다양한 디바이
dev-chim.tistory.com
[Javascript] JavaScript 이벤트 위임(Event Delegation): 효율적인 이벤트 핸들링 방법
이벤트 위임은 이벤트 핸들링을 효율적으로 관리하고 코드를 단순화하는 데에 도움을 줍니다. 이번 포스트 글에서는 이벤트 위임의 개념부터 활용 사례까지 자세히 살펴보겠습니다.이벤트 위
dev-chim.tistory.com
[HTML] video vs iframe, 어떤 것이 더 적합할까?
웹 페이지에서 동영상 콘텐츠를 삽입할 때, HTML 태그 중 video와 iframe을 주로 사용합니다. 그러나 이 두 가지 태그는 어떤 차이점이 있을까요? 어떤 것이 더 적합한 선택일까요? 이번에는 video와 ifr
dev-chim.tistory.com
'CSS' 카테고리의 다른 글
[CSS/SCSS] className 없이 스타일 적용하는 트릭 (0) | 2025.04.17 |
---|---|
[CSS/SCSS] React에서 Swiper 스타일이 안 먹힐 때 – .swiper 대신 :global(.swiper)를 써야 하는 이유 (0) | 2025.04.16 |
[CSS] 입력폼에서 readonly와 disabled, 언제 어떻게 쓰고 스타일링할까? (0) | 2025.03.28 |
[CSS] CSS만으로 라디오 버튼 체크 시 요소 보이게 하기 (display: block) (0) | 2025.03.26 |
[CSS] inset과 position으로 완성하는 레이아웃 (0) | 2024.12.07 |