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

나눔웹 UI/UX 꿀팁

버튼 클릭 테두리(outline), 지우지 말고 :focus-visible로 정리하는 법

버튼이나 링크를 클릭하면 생기는 파란 테두리(outline)가 거슬려서 outline: none으로 지워 두셨다면, 키보드로 사이트를 쓰는 사람에게는 지금 어디에 있는지 알려 주는 유일한 표시가 사라진 상태입니다.
테두리를 통째로 지우는 대신 :focus-visible을 쓰면 마우스 클릭 때는 깔끔하게, 키보드 이동 때는 또렷하게 보이도록 나눌 수 있습니다.

💡 그 테두리는 원래 왜 생기나요?

브라우저가 "지금 이 요소에 초점(focus)이 있다"는 걸 보여 주는 표시입니다. Tab 키로 메뉴와 버튼을 옮겨 다니는 사용자, 마우스를 쓰기 어려운 사용자에게는 커서와 같은 역할을 합니다. 웹 접근성 기준(WCAG 2.4.7)에서도 키보드 초점이 눈에 보여야 한다고 정하고 있어서, 공공기관이나 접근성 인증을 준비하는 사이트라면 검수에서 바로 지적되는 항목입니다.

1. 흔히 넣는 리셋 CSS가 문제입니다

리뉴얼 의뢰로 들어온 사이트의 CSS를 열어 보면 아래 같은 코드가 공통 파일 맨 위에 들어 있는 경우가 꽤 많습니다. 디자인 시안과 다르게 보인다는 이유로 넣은 한 줄인데, 이 상태에서 Tab 키를 눌러 보면 초점이 어디로 갔는지 전혀 알 수 없습니다.

/* 이렇게 전체를 지우는 건 피하세요 */
*:focus { outline: none; }
a, button { outline: 0; }

2. :focus-visible로 상황에 따라 나누기

:focus-visible은 브라우저가 "이 초점은 보여 줘야 한다"고 판단할 때만 적용됩니다. 버튼을 마우스로 누를 때는 보통 적용되지 않고, 키보드로 이동했을 때는 적용됩니다. 입력창은 클릭으로 들어가도 타이핑을 해야 하니 표시되는 것이 정상입니다.

/* 기본 초점 표시는 그대로 두고 */
/* 키보드 초점만 브랜드 색으로 다듬기 */
a:focus-visible,
button:focus-visible {
  outline: 2px solid #cc2b2b;
  outline-offset: 3px;
  border-radius: 4px;
}

/* 마우스 클릭 때 남는 테두리만 정리 */
button:focus:not(:focus-visible) {
  outline: none;
}

outline-offset을 주면 테두리가 버튼에서 살짝 떨어져서 디자인을 덜 해치고, 색상은 배경과 대비가 분명한 브랜드 컬러를 쓰면 됩니다. 크롬, 엣지, 파이어폭스, 사파리 최신 버전은 모두 지원하므로 지금 만드는 사이트라면 별도 대체 코드 없이 써도 됩니다.

3. 손보기 전에 확인할 것

상황권장 처리
마우스로 버튼 클릭테두리 없이 정리해도 무방
Tab 키로 메뉴 이동반드시 눈에 띄게 표시
입력창 클릭초점 표시 유지 (테두리 색 변경 정도)
배경이 어두운 영역흰색 등 대비되는 색으로 따로 지정

수정한 뒤에는 마우스를 내려놓고 Tab 키만으로 메인 메뉴, 검색창, 상담 버튼까지 이동해 보세요. 중간에 초점이 사라지는 구간이 있다면 그 요소에 아직 outline: none이 남아 있거나, 클릭 이벤트만 걸린 div를 버튼처럼 쓰고 있는 경우입니다.

"보기 좋게 지우는 것보다, 필요한 사람에게 보이게 남기는 것이 먼저입니다."

나눔웹은 디자인을 다듬을 때도 키보드 이동과 접근성까지 함께 확인해,
누가 들어와도 막힘없이 쓸 수 있는 화면을 만듭니다.


List of Articles
번호 분류 제목 글쓴이
33 웹 성능 홈페이지 로딩 속도를 3배 높이는 '이미지 최적화' 실무 가이드 나눔웹
32 퍼블리싱 CSS 변수로 유지보수와 테마 기능을 한 번에! (CSS Custom Properties) 나눔웹
31 마케팅 카카오톡 링크 썸네일의 비밀! 클릭률을 높이는 '오픈 그래프(OG)' 세팅법 나눔웹
30 모바일 모바일 꽉 찬 화면 하단 짤림 현상! '100vh'의 함정과 완벽 해결법 나눔웹
29 웹 성능 홈페이지 첫 화면 글자 깜빡임(투명 현상) 1초 만에 해결하는 법 나눔웹
28 퍼블리싱 스마트폰에서 로고가 흐리게 보인다고요? 'SVG' 포맷이 정답입니다. 나눔웹
27 웹 성능 클릭 실수 유발하는 '화면 덜컹거림(CLS)', 단 한 줄로 해결하는 법 나눔웹
26 모바일 고객의 이탈을 막는 1초 디테일, '모바일 맞춤형 키보드' 세팅법 나눔웹
25 UI/UX 모바일에서 버튼 누를 때 생기는 촌스러운 '회색 박스' 없애는 법 나눔웹
24 UI/UX 레이아웃을 망치는 긴 글, 예쁘게 '...'으로 자르는 마법의 CSS 나눔웹
23 UI/UX 상단 메뉴에 제목이 가려진다고요? '부드러운 스크롤' 마법의 2줄 나눔웹
22 모바일 아이폰에서 입력창 누를 때 화면 '자동 확대'되는 현상 막는 법 나눔웹
21 퍼블리싱 지저분한 모바일 스크롤바, 기능은 남기고 쏙 숨기는 마법의 CSS 나눔웹
20 모바일 모바일 웹을 진짜 '앱(App)'처럼! 이미지 꾹 누를 때 뜨는 팝업 막기 나눔웹
19 UI/UX 애플(Apple) 사이트처럼 고급스러운 '반투명 유리' 메뉴 만드는 법 나눔웹
18 퍼블리싱 무거운 플러그인 NO! 넷플릭스처럼 쫀득한 '가로 스와이프' CSS로 뚝딱 만들기 나눔웹
17 UI/UX 1%의 디테일이 브랜딩을 완성합니다! '텍스트 드래그 색상' 바꾸기 나눔웹
16 UI/UX 투박한 파란색 체크박스는 그만! 단 1줄로 우리 회사 컬러 입히기 나눔웹
15 모바일 하단 고정 버튼이 아이폰 '검은 줄'에 겹친다면? (Safe Area 대응법) 나눔웹
14 모바일 앗, 실수로 새로고침! 튕기는 모바일 화면 꽉 잡는 법 (Overscroll) 나눔웹
Board Pagination Prev 1 2 Next
/ 2
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4