Study/접근성
label에 focus가 되지 않는 경우 해결 방법
posey
2024. 9. 24. 11:12
<label for=""></label>
<input id="">
구조는 이런 식으로 되어 있고, input에는 display: none;을 준 경우, label에는 focus가 가지 않는다.
오래된 사이트를 유지보수 하다 보면 이런 것들이 접근성 심사에서 걸린다.
예를 들어 '문의하기' 페이지에서 form 형식을 보면 파일첨부 버튼이 이런 식으로 들어가 있는 경우가 있다.
[해결 방법]
1. label 태그 하위에 input 태그를 넣고,
2. css 변경
- display: none;을 줘 버리면 영역 자체가 사라져 버리기 때문에 opacity: 0;으로 주고, 영역은 살리되 눈에는 보이지 않게 만드는 것이 중요 ! 그리고 이 방법은 개발 구조는 유지하면서 시간은 많이 들이지 않는 야매 방법이다...
더이상 손 쓸 필요가 없는 오래된 사이트에서만 이 방법을 추천한다 !
label:has(input:focus) {
outline: 2px solid #000;
outline-offset: 3px;
}
label:has(input) input {
position: absolute;
top: 0;
left: 0;
width: 0;
height: 0;
opacity: 0;
}
반응형