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

나눔웹 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
번호 분류 제목 글쓴이
21 UI/UX 드롭다운 메뉴가 금방 닫힐 때, 틈 메우기와 transition-delay로 잡는 법 나눔웹
20 UI/UX 링크 밑줄이 글자에 붙어 답답할 때, text-underline-offset으로 다듬는 법 나눔웹
19 UI/UX 고정 헤더에 제목이 가려질 때, scroll-margin-top으로 앵커 맞추는 법 나눔웹
18 UI/UX 폼 에러가 입력 전에 뜨는 문제, :user-invalid로 고치는 법 나눔웹
17 UI/UX 문의란이 내용만큼 늘어나게, CSS field-sizing으로 맞추는 법 나눔웹
16 UI/UX 스켈레톤 로딩 화면 만들기, 빈 화면 대신 회색 자리 표시로 기다림 줄이는 법 나눔웹
15 UI/UX FAQ 아코디언 만들기, details와 summary 태그로 스크립트 없이 접고 펴는 법 나눔웹
14 UI/UX 404 에러 페이지 만들기, 방문자를 놓치지 않는 구성과 상태 코드 확인법 나눔웹
13 UI/UX 화면 애니메이션 줄이기 설정, prefers-reduced-motion으로 대응하는 법 나눔웹
12 UI/UX 문의 폼 중복 접수 막는 법, 전송 버튼 연타와 새로고침 재전송 정리 나눔웹
11 UI/UX 문의 폼 placeholder를 라벨 대신 쓰면 생기는 문제와 label 배치하는 법 나눔웹
10 UI/UX 모바일 버튼이 잘 안 눌린다면? 터치 영역 44px 기준과 padding으로 넓히는 법 나눔웹
» UI/UX 버튼 클릭 테두리(outline), 지우지 말고 :focus-visible로 정리하는 법 나눔웹
8 UI/UX 팝업 띄울 때마다 화면이 덜컹! '스크롤바 밀림 현상' 1줄 해결법 나눔웹
7 UI/UX 쇼핑몰 결제 금액이 덜덜 떨린다면? '숫자 폭 고정' 타이포그래피 꿀팁 나눔웹
6 UI/UX 투박한 파란색 체크박스는 그만! 단 1줄로 우리 회사 컬러 입히기 나눔웹
5 UI/UX 1%의 디테일이 브랜딩을 완성합니다! '텍스트 드래그 색상' 바꾸기 나눔웹
4 UI/UX 애플(Apple) 사이트처럼 고급스러운 '반투명 유리' 메뉴 만드는 법 나눔웹
3 UI/UX 상단 메뉴에 제목이 가려진다고요? '부드러운 스크롤' 마법의 2줄 나눔웹
2 UI/UX 레이아웃을 망치는 긴 글, 예쁘게 '...'으로 자르는 마법의 CSS 나눔웹
Board Pagination Prev 1 2 Next
/ 2
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4