2017-10-09 21 views
4

<label>을 사용하여 성공 및 오류 메시지가 연결을 위해 레이블 안에 나타날 수 있도록 입력을 래핑합니다. 이 시나리오에서 가장 의미 론적 마크 업이 무엇이라고 생각하십니까?레이블 내에 시맨틱 입력 오류 메시지가 있습니다.

<label> 
    <b>Username</b> 
    <input> 
    <strong>Username already taken :(</strong> 
</label> 

오류의 경우 strong이 적절합니까? 또는 span이 더 낫습니까? role=status이 적절한가요?

+1

(답안이 아닙니다.) 라벨의 텍스트에 스팬을 사용할 수 있으며 라벨이 이미 있습니다. strong/span/em/i/b는 현재 화면 리더의 경우 아무 것도 변경하지 않습니다. (비록 그 요소들 중 하나가 다른 것들보다 더 나은 의미를 가질 수 있지만, SR은 의미론과는 거리가 먼 HTML 마크 업의 현재 상태에 대처해야합니다 ^^) – FelipeAls

답변

6

The WCAG provides an example의 오류 표시는 모두 aria-invalidaria-describedby 속성을 사용하여 표시됩니다. 당신의 예에서

이 코드는 다음과 같습니다

<label> 
    <b>Username</b> 
    <input aria-invalid="true" aria-describedby="error"> 
    <strong id="error">Username already taken :(</strong> 
</label> 

이 중요한 통지 것으로 보인다대로 strong가 적합하다. alert 역할 (status 제외)은 #error 요소 according to the W3C에 적용하는 것이 더 적절합니다.

+0

감사합니다)'[aria-describedby]'를 내부에서 사용합니까? '

+1

@ryanve'aria-describedby'는'aria-labelledby'를 사용하는 것과는 다른 일반 레이블 의미에 영향을주지 않습니다. 그러나 '라벨'내부의 '강함'이 라벨 텍스트에 내용을 추가하는 효과가있을 수 있다는 것은 사실입니다. 'label' 태그의 외측에'strong' 태그를 두는 것은'aria-describedby'를 사용할 때 레이블 ('label' 또는'aria-labelledby')과 설명 ('aria-describedby')을 구분할 때 적절할 수 있습니다. – Adam

+0

더 깊게 파고 들자 더 구체적인 'aria-errormessage' 속성이 있음 https://www.w3.org/TR/wai-aria/states_and_properties#aria-errormessage – ryanve

2

강력한 태그를 사용하는 것이 적합합니다.

강력한 태그는 사용자가 계속 진행하지 못하도록 차단하는 중요한 요소입니다.

2

기술적으로 두 요소 모두 적절한 CSS를 사용하여 찾고있는 적절한 오류 메시지를 만드는 데 사용할 수 있습니다. 가장 의미 론적으로 생각해 보면, CWS에서 font-weight:bold;을 사용할 필요없이 비밀번호의 중요성을 강조하고 싶기 때문에 Strong 태그를 사용하는 것이 가장 좋습니다.

액세스 가능성 문제가 관련되어 있기 때문에 Strong 태그는 화면 판독기에 더 좋으며 더 쉽게 액세스 할 수 있습니다.

전반적으로이 시나리오에서는 <strong><span> 이상으로 사용하는 것이 더 빠르고 쉽습니다.

2

"Username is already taken"이 강하기 때문에 캐주얼 한 것이 아니라 심각한 경고입니다.

1

강한 태그 을 유지하고 오류로 표시하려면 CSS 빨강을 사용하는 것이 좋습니다.