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

나눔웹 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
번호 분류 제목 글쓴이
» 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) 나눔웹
19 모바일 하단 고정 버튼이 아이폰 '검은 줄'에 겹친다면? (Safe Area 대응법) 나눔웹
18 UI/UX 투박한 파란색 체크박스는 그만! 단 1줄로 우리 회사 컬러 입히기 나눔웹
17 UI/UX 1%의 디테일이 브랜딩을 완성합니다! '텍스트 드래그 색상' 바꾸기 나눔웹
16 퍼블리싱 무거운 플러그인 NO! 넷플릭스처럼 쫀득한 '가로 스와이프' CSS로 뚝딱 만들기 나눔웹
15 UI/UX 애플(Apple) 사이트처럼 고급스러운 '반투명 유리' 메뉴 만드는 법 나눔웹
14 모바일 모바일 웹을 진짜 '앱(App)'처럼! 이미지 꾹 누를 때 뜨는 팝업 막기 나눔웹
Board Pagination Prev 1 2 Next
/ 2
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4