[2팀 HCRP] 의미에 맞게 버튼 사용하기(a,button,input)

안녕하세요. 웹표준개발2
조정민, 황미애입니다
.

 

2 HCRP에서 발표했던 내용을 정리해봤습니다😀

 

 

 

접수하기(폼전송), 확인or취소, 바로가기 등 클릭버튼의 요소는 어떤 것을 사용하고 계시나요?

 

초기화할 필요도 없고 상대적으로 이슈발생확률이 적은 a요소
자주 사용하고 계시진 않나요
?

 

a, button, input의 차이점과 접근성에 대해 알아보겠습니다!

 

 

 


a(anchor) : 페이지 링크를 연결하기 위한 버튼

 


button : 값을 받거나, 사용자
인터페이스를 정의하는 요소

 


input : 값을 받거나 전달할 때 사용하는 요소

 

 

▶각 요소의 차이

 

1. a(anchor)

 

 

a 요소는 참조하는 페이지를 연결하기
위한 버튼이므로
, 유효한 url을 넣어야 합니다.

 

만약 참조하는 url이 없이 포커스를 받아야 한다면(혹은 특정 인터페이스 조작이 필요하다면) a요소 보다는 

Button 또는 input을 사용해야 합니다.

 

 

 

여기서 알 수 있는 것은, 자주 볼 수 있는 다음과 같은
형태인데요
.

a.jpg 

 

 

페이지 내에서 열리는 레이어팝업 등의 퍼포먼스를 위해 a요소에 빈 url (#)
대신하고
onclick을 넣은 구조
입니다.

 

a요소는 유효하는
url
값을 갖고 있어야 하기 때문에 이는 정의에 맞지 않은 구조라고
볼 수 있습니다
.

 

레이어팝업, 배너의 이전/다음 버튼 등의 페이지 이동 없이 퍼포먼스가
실행되어야 한다면
,

 

a요소가 아닌 button
또는 input 요소를 사용하는 것이 바람직하다고 볼 수 있습니다.

 

 

 

2. input

 

 

Input은 데이터를 전송하거나 값을 받을 때 사용하며,

타입 속성중 submit,
button, reset은 각각 송신(submit), 범용(button), 리셋(reset)의 역할을 합니다.

 

3. button

 

 

Buttonsubmit,
button, reset
타입이 있는데,각 타입이 수행하는 일은 input과 동일합니다.

 

그럼 button
input
과 다른 점은 뭘까요?

 


Button은 이미지나 텍스트 등을 포함하여 유연한 디자인이 가능합니다.

 

 

 

한가지 주의 할 점!

 

button은 브라우저마다 기본값을 다르게 갖고 있기 때문에 type을 반드시 명시해줘야
합니다
.

button.jpg

 

 

 

▶사례

 

예시 이미지)

sample.jpg

 

 

그렇다면 위 예시이미지의 문의하기 등록버튼과 입력취소버튼은
어떤 요소로 마크업하는 것이 더 효율적일까요
?

 

 

앞에서 살펴 본 내용에 따르면,  a요소보다는 button, input으로 하는 것이 의미에 맞는 마크업입니다.

 

하지만, 실제 개발을 적용하면 a, button, input 중 어느 요소를 사용해도 개발은 가능합니다.

 

 

 

하지만, 접근성 관점에서 보면

 

a요소를 사용하여 값을 전송하는 기능을 구현하게 되면
화면낭독기(센스리더 등)에서는 ‘~링크라고 읽어주어

시각장애인의
입장에서는
a요소로 구현했을 경우 이 버튼이 ‘~전송 버튼이라고 확신하기 어려운 상황에 놓입니다.

 

 

때문에 마크업하기 좀 더 편하더라도, 개발에 이슈가 없더라도 각 요소를 의미있게(시멘틱하게) 사용하면 접근성도 높아집니다!

 

 

 

 

▶마치며

누구나 알 수 있을 법한 사소한 것들이지만, 쉽게 간과할 수 있는 내용인 것 같습니다.

 

좀 더 빠른, 좀 더 편한 웹문화를 위해 우리가 해야할
일은 이런 사소한 것부터 신경쓰는 것이 아닐까 라는 생각이 듭니다:D