HTML에서 "역할"속성의 목적은 무엇입니까?


1165

나는 일부 사람들의 일에서 역할 속성을 계속보고있다. 나는 그것을 사용하지만 그 효과에 대해 확신하지 못한다.

예를 들면 다음과 같습니다.

<header id="header" role="banner">
    Header stuff in here
</header>

또는:

<section id="facebook" role="contentinfo">
    Facebook stuff in here
</section>

또는:

<section id="main" role="main">
     Main content stuff in here
</section>

이 역할 속성이 필요합니까?

이 속성이 시맨틱에 더 좋습니까?

SEO를 개선합니까?

역할 목록은 여기 에서 찾을 수 있지만 일부 사람들이 스스로 구성하는 것을 볼 수 있습니다. 이것이 역할 속성의 올바른 사용입니까?

이것에 대한 생각?

답변:


1005

표시되는 대부분의 역할은 ARIA 1.0의 일부로 정의 된 후 나중에 HTML5에 통합되었습니다. 새로운 HTML5 요소 중 일부 (대화 상자, 기본 등)는 원래 ARIA 역할을 기반으로합니다.

http://www.w3.org/TR/wai-aria/

기본 의미 요소 외에 역할을 사용해야하는 두 가지 주요 이유가 있습니다.

이유 # 1. 호스트 언어 요소가 적절하지 않은 역할을 무시하거나 다양한 이유로 의미가 덜 적절한 요소가 사용되었습니다.

이 예에서는 결과 기능이 탐색 링크보다 단추와 유사하지만 링크가 사용되었습니다.

<a href="#" role="button" aria-label="Delete item 1">Delete</a>

화면 판독기에서는이 버튼을 링크가 아닌 버튼으로들을 수 있으며 CSS 속성 선택기를 사용하여 클래스 염 및 div 염을 피할 수 있습니다.

*[role="button"] {
  /* style these a buttons w/o relying on a .button class */
}

이유 # 2. ARIA 역할을 구현했지만 아직 기본 요소의 역할을 구현하지 않은 브라우저를 지원하기 위해 기본 요소의 역할 백업

예를 들어, "main"역할은 몇 년 동안 브라우저에서 지원되었지만 HTML5에 비교적 최근에 추가되었으므로 많은 브라우저에서 아직 시맨틱을 지원하지 않습니다 <main>.

<main role="main"></main>

이것은 기술적으로 중복되지만 일부 사용자에게 도움이되고 해를 끼치 지 않습니다. 몇 년 안에이 기술은 불필요해질 것입니다.

당신은 또한 썼습니다 :

일부 사람들이 스스로 구성하는 것을 봅니다. 이것이 역할 속성의 올바른 사용입니까?

실제 역할이 포함되지 않은 경우 속성을 올바르게 사용합니다. 브라우저는 토큰 목록에서 처음 인식 된 역할을 적용합니다.

<span role="foo link note bar">...</a>

목록에서, link그리고 note유효한 역할이므로 링크 역할이 처음부터 적용되므로 적용됩니다. 사용자 정의 역할을 사용하는 경우 ARIA 또는 사용중인 호스트 언어 (HTML, SVG, MathML 등)에서 정의 된 역할과 충돌하지 않아야합니다.


19
이 링크도 도움이 될 수 있습니다. HTML에서 ARIA 사용 rawgithub.com/w3c/aria-in-html/master/index.html
James Craig

6
왜 [role = "button"] 앞에 유니버셜 셀렉터를 두었습니까?
Evgeny

5
@EugeneXa 내 추측은 할 필요가있는 모든 요소를 ​​정확히 지적하는 [role="button"]것입니다a[role="button"], span[role="button"]
ngplayground

4
"몇 년 안에이 기술은 불필요하게 될 것입니다." 접근성에 대해서는 Idk에 관한 것이지만, 커스텀 태그를 생성하는 앵귤러 및 웹 컴포넌트와 같은 것들이 필요하다는 것을 상상할 수 있습니다.
xdhmoore

8
@xdhmoore 필자는 특히 역할을 role일반적으로 사용하는 것이 아니라 태그와 동일한 값으로 설정하는 중복 기술을 의미한다고 생각 합니다.
willlma

159

내가 이해 한대로 역할은 처음에 XHTML에 의해 정의되었지만 더 이상 사용되지 않습니다. 그러나 이제 HTML 5로 정의됩니다. https://www.w3.org/WAI/PF/aria/roles#abstract_roles_header

역할 속성의 목적은 웹 응용 프로그램의 일부로 요소 (및 해당 하위 요소)의 정확한 기능을 소프트웨어에서 구문 분석하는 것을 식별하는 것입니다. 이것은 대부분 화면 판독기의 접근성 기능이지만 내장 브라우저 및 화면 스크레이퍼에 유용한 것으로 볼 수도 있습니다. 특이한 HTML 클라이언트에 유용하려면 속성을 링크 된 사양의 역할 중 하나로 설정해야합니다. 직접 구성하면이 '미래'기능이 작동하지 않습니다. 의견이 더 좋습니다.

실용성 : http://www.accessibleculture.org/articles/2011/04/html5-aria-2011/


20

이 역할 속성이 필요합니까?

답변 : .

  • 역할 속성은 접근 리치 인터넷 어플리케이션 지원하기 위해 필요하다 ( WAI-ARIA를 ) 언어가 자신의 역할 속성을 정의하지 않는 경우, XML 기반 언어의 역할을 정의 할 수 있습니다.
  • 이것이 역할 속성이 프로토콜 및 형식 작업 그룹에 의해 게시 된 이유이지만 속성에는 더 일반적인 사용 사례가 있습니다.

다음을 제공합니다.

  • 접근성
  • 장치 적응
  • 서버 측 처리
  • 복잡한 데이터 설명 등

3
내게 필요한 옵션, 장치 적응성 및 복잡한 데이터 설명의 의미를 자세히 설명해 주시겠습니까? 저는 웹 프로그래밍에 익숙하지 않아서이 용어들은 저에게 조금 새롭습니다. 감사!
Manish Jain

11

나는 이것이 오래된 질문이라는 것을 알고 있지만 정확한 요구 사항에 따라 고려해야 할 또 다른 고려 사항은 https://validator.w3.org/에서 유효성을 검사 하면 다음과 같이 경고가 생성 된다는 것입니다.

경고 : 요소 역할에는 양식 역할이 필요하지 않습니다.


1
아마도 downvoter는 논평하고 싶습니까? OP의 질문에 대답했습니다. "이 역할 속성이 필요합니까?"
dotnetnutty

0

역할 속성은 주로 스크린 리더를 사용하는 사람들의 접근성을 향상시킵니다. 접근성, 장치 적응, 서버 측 처리 및 복잡한 데이터 설명과 같은 경우가 있습니다. 자세한 내용은 https://www.w3.org/WAI/PF/HTML/wiki/RoleAttribute를 참조하십시오 .


2
제휴 관계를 공개하고 사이트를 게시를 통해 사이트를 홍보하는 방법으로 사용하지 마십시오. 좋은 답변을 작성하려면 어떻게합니까?를 참조하십시오 . .
Yvette
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.