실무에 바로 적용할 수 있는 웹 제작 꿀팁 및 유용한 자료실 공간입니다.
나눔웹이 제공하는 핵심 노하우와 마케팅 인사이트를 자유롭게 활용해 보십시오.

나눔웹 모바일 꿀팁

모바일 hover 색상이 눌린 채 남을 때, @media (hover)로 해결하기

스마트폰에서 버튼이나 카드를 누르고 나면 마우스를 올렸을 때의 hover 색상이 그대로 남아 있는 현상은, hover 스타일을 @media (hover: hover) 안으로 옮기면 깔끔하게 해결됩니다.
PC에서는 기존 효과를 그대로 살리고, 터치 화면에서는 눌린 듯한 상태가 남지 않게 나누는 방법입니다.

💡 왜 손가락으로 눌렀는데 hover가 켜질까요?

터치 기기에는 마우스 커서가 없어서, 브라우저가 기존 사이트와의 호환을 위해 탭한 요소를 hover 상태로 간주합니다. 문제는 이 상태가 다른 곳을 탭하기 전까지 풀리지 않는다는 점입니다. 그래서 메뉴를 누르고 뒤로 돌아오면 그 항목만 색이 바뀐 채로 보이거나, 토글 버튼이 켜진 건지 꺼진 건지 헷갈리는 일이 생깁니다.

1. hover 스타일을 미디어 쿼리 안으로 옮기기

hover: hover는 "주 입력 장치가 마우스처럼 올려 놓을 수 있는가"를 묻는 조건입니다. 여기에 pointer: fine을 함께 걸면 정밀한 포인터가 있는 환경, 즉 일반적인 PC에서만 hover 효과가 적용됩니다. 크롬, 사파리, 파이어폭스, 삼성 인터넷 등 현재 쓰이는 브라우저는 모두 지원합니다.

/* 기존: 모든 기기에 적용 */
.btn:hover { background: #cc2b2b; }

/* 변경: 마우스 환경에서만 */
@media (hover: hover) and (pointer: fine) {
  .btn:hover { background: #cc2b2b; }
}

2. 터치 화면에는 :active로 눌림 반응 주기

hover를 빼면 모바일에서는 눌렀는지 알 수 있는 반응이 사라집니다. 이때는 손가락이 닿아 있는 동안에만 적용되는 :active를 쓰면 됩니다. 손을 떼면 바로 원래대로 돌아오기 때문에 색이 남지 않습니다. 키보드 사용자를 위해 :focus-visible 스타일도 따로 두는 것이 좋습니다.

.btn:active {
  transform: scale(0.98);
  opacity: 0.85;
}
.btn:focus-visible {
  outline: 2px solid #cc2b2b;
  outline-offset: 2px;
}

3. 적용 전에 확인할 점

실제 리뉴얼 작업에서 이 방식으로 바꿀 때 놓치기 쉬운 부분은 아래와 같습니다.

확인 항목이유
hover로만 열리는 메뉴모바일에서 아예 안 열릴 수 있음
터치 노트북, 태블릿주 입력 장치 기준으로 판단됨
CSS 파일 여러 곳의 :hover하나라도 남으면 증상 반복

드롭다운처럼 hover로만 열리던 기능은 클릭으로도 열리게 바꿔 둬야 합니다. 마우스와 터치를 함께 쓰는 기기까지 고려해야 한다면, "어느 입력 장치든 hover가 가능한가"를 보는 any-hover를 쓰는 방법도 있습니다. 변경 후에는 PC 브라우저의 모바일 모드만 믿지 말고 실제 아이폰과 안드로이드 폰에서 한 번씩 눌러 보는 것이 확실합니다.

"효과는 기기에 맞게 나눠야 제대로 보입니다."

나눔웹은 PC에서 보기 좋은 효과가 모바일에서는 오히려 불편을 주지 않는지,
실제 기기로 눌러 보며 확인하고 마무리합니다.


List of Articles
번호 분류 제목 글쓴이
» 모바일 모바일 hover 색상이 눌린 채 남을 때, @media (hover)로 해결하기 new 나눔웹
38 퍼블리싱 position: sticky가 안 먹힐 때, 부모 overflow부터 확인해야 하는 이유 new 나눔웹
37 웹 성능 메인 배경 동영상 때문에 홈페이지가 느릴 때, 용량 줄이기와 video 태그 설정 new 나눔웹
36 마케팅 검색 결과 설명이 엉뚱하게 나올 때, title과 meta description 쓰는 법 나눔웹
35 퍼블리싱 썸네일 이미지 찌그러짐, object-fit과 aspect-ratio로 비율 맞추는 법 나눔웹
34 모바일 모바일 문의 폼 자동완성이 안 뜬다면? autocomplete 값과 인증번호 자동 입력 나눔웹
33 UI/UX 버튼 클릭 테두리(outline), 지우지 말고 :focus-visible로 정리하는 법 나눔웹
32 퍼블리싱 flex 레이아웃이 모바일에서 옆으로 삐져나올 때, min-width: 0이 필요한 이유 나눔웹
31 웹 성능 메인 배너 LCP가 느리다면? 첫 화면 이미지는 lazy 대신 fetchpriority로 나눔웹
30 마케팅 네이버 서치어드바이저 등록 순서, 새 홈페이지가 검색에 안 나올 때 점검할 4가지 나눔웹
29 웹 성능 글씨가 안 보이다가 갑자기 뜬다면? '웹 폰트 로딩' 1초 단축하는 마법 나눔웹
28 웹 성능 구글 SEO 점수 폭발! 이미지 로딩 속도 3배 높이는 '단 1줄'의 마법 나눔웹
27 마케팅 카톡에 우리 회사 링크 보낼 때 뜨는 '회색 빈 박스' 없애는 필수 세팅 (OG 태그) 나눔웹
26 마케팅 '제출하기' 버튼은 그만! 클릭률 200% 높이는 마법의 단어 (CTA) 나눔웹
25 마케팅 돈 버는 마케터의 비밀! 유입 출처를 추적하는 마법의 꼬리표 'UTM' 나눔웹
24 퍼블리싱 촌스러운 '파일 선택' 버튼, 복잡한 꼼수 없이 예쁘게 디자인하기 나눔웹
23 UI/UX 팝업 띄울 때마다 화면이 덜컹! '스크롤바 밀림 현상' 1줄 해결법 나눔웹
22 퍼블리싱 수십 줄의 모바일 반응형 코드, 단 '1줄'로 끝내는 마법 (clamp) 나눔웹
21 UI/UX 쇼핑몰 결제 금액이 덜덜 떨린다면? '숫자 폭 고정' 타이포그래피 꿀팁 나눔웹
20 모바일 앗, 실수로 새로고침! 튕기는 모바일 화면 꽉 잡는 법 (Overscroll) 나눔웹
Board Pagination Prev 1 2 Next
/ 2
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4