정보에 대한 접근 → 인권
인터넷은 모든 사람을 위한 것임
청력 → 오디오 스크립트, 비디오 캡션
시각 → TTS, 확대 축소, 대비, 색맹
<div/> <span/>
의 경우 우리에게 아무런 정보를 주지 않음<form> <table> <article>
<section>
VS <aside>
<button>
VS <a>
스크린 리더
가 이를 버튼으로 인식
할 수 있음클릭
가능< a href ="/about/" > 회사 소개 < /a >
<button role="button"> -> 이미 버튼 role 속성이 내장되어 있음
< select aria-label ="국가 호출 코드" name ="countryCode" > ... < 선택 >
aria-expanded="false"
<div role="button" aria-expanded="false">When do I get charged for a ride?</div>
사용 이유 : 색맹, 시력 감소, 햇빛 같은 경우 필요
명암비란?
배경색에 대한 텍스트 또는 그래픽 간의 대비를 측정함
흰색 배경 → 흰색 텍스트 : 명암비 1
흰색 배경 → 검정색 텍스트 : 명암비 21
→ 완벽한 비율은 존재하지 않고 애플 기준 7이 선호
되지만, 최소 4.5
를 위해 노력
밝으면
→ 가장 밝은 부분
어두우면
→ 가장 어두운 부분사용 이유 : 색맹, 전화 중독 억제?
사용
색상을 유일한 시각적 지표로 사용하지 않기
명암비를 준수하는 색상 선택
사용 이유 : 스크린 리더 → 장식 이미지를 무시함
의미 있는 이미지의 의미
배경 이미지 지정하기
빈 alt 속성
사용자 혼란을 가져옴
background-image 속성
글꼴 아이콘
role
을 이용하여 img라 인식
하고 이를 스크린 리더가 무시하도록
<i class="navbarIcon" role="img" aria-hidden="true"></i>
이미지를 설명
이미지의 의도를 잘 설명
< img src ="alibaba-logo.svg" alt ="알리바바의 고향" >
사용 이유 : alt 속성의 값 → 이미지를 설명, 의도를 설명해야 함
사용 방법
친구와 전화 통화를 통해 웹 페이지 설명에 대한 가정
종류
비대화형 이미지
그대로 이미지에 대한 설명을 작성하면 됨
독립 실행형 아이콘
아이콘이 하는 일을 설명
→ 페이스북으로 공유
사용 이유 : 사용자가 링크와 상호 작용
종류
적용 방법
링크에는 기본적으로 링크 → 색맹인 사람에게 이를 링크라는 것을 명확히 알려줌
모든 상태는 충분한 대비를 가져야 함
focus → 오프셋을 주어 이를 설정함
outline-color
, outline-offset
사용자가 수행하려는 작업을 명확하게 해줌
마우스가 지금 하려는 일을 명시적으로 알려줄 수 있음
사용 이유 : 시각 장애 → 확대 / 축소 → 녹내장
사용법
좋은 예
나쁜 예
구글 검색 또한 설명 링크를 선호함
제목은 시각적으로 명확한 문구를 사용
페이지의 개요를 설정
사용
<h1> <h6>
로 구성
수순에 맞도록 이를 설정하는 것이 중요
시각적 초점 → 모든 사용자에게 중요
사용
포커스 제거 하지 않도록
outline: 0;
부모 요소가 너무 작아서 표시할 수 없는 포커스를 표시할 수 없는 경우
포커스를 숨기는 또 다른 일반적인 방법
overflow: hidden;
기본 포커스 스타일 표시를 제거
모바일 모드의 Chrome은 주황색 윤곽선
모바일 장치에서는 키보드 포커스가 중요하지
<header>
<a href="#main" class="skip">Skip to main content</a>
…
</header>
…
<main id="main">
.skip {
position: absolute;
left: -10000px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
.skip:focus {
position: static;
width: auto;
height: auto;
}
사용 이유
스크린 리더 - 화면을 읽는 도구
사용방법
<html> lang 속성
을 이용
<!DOCTYPE html>
<html lang="en">
중간에 언어가 바뀌면요?
- a 태그에 lang 속성을 달아서 페이지를 연결
<a href="https://id.wikipedia.org/wiki/Disleksia" lang="id" hreflang="id">Bahasa Indonesia</a>
테스트
VoiceOver 기능을 이용
aria-label 두 개 이상 있는 경우 사용
<input>
<label>
<fieldset>
: 기본 양식 요소<select>
사용 이유
입력 요소에 초점을 맞추면 label을 소리내어 읽어줌
<label> aira-label
사용 방법
<label for="email">
Your email address
<span class="mandatory">*</span>
</label>
<input id="email" name="email" required aria-required="true" placeholder="Email" required="">
<input placeholder="Enter search term" aria-label="Enter search term">
그룹에 대한 명시를 알려줌
확인란, 라디오 버튼 같은 예제
<fieldset>
<legend>Your date of birth</legend>
<label for="dobDay">Day</label>
<select id="dobDay">…</select>
<label for="dobMonth">Month</label>
<select id="dobMonth">…</select>
<label for="dobYear">Year</label>
<input id="dobYear" type="text" placeholder="YYYY">
</fieldset>
autocomplete 속성
을 사용
<input id="email" autocomplete="email" name="email" aria-required="true" placeholder="Email" required>
<select id="dobDay" autocomplete="bday-day" aria-required="true" required>
<select id="dobMonth" autocomplete="bday-month" aria-required="true" required>
<input id="dobYear" autocomplete="bday-year" placeholder="YYYY" aria-required="true" required>
사용 이유 : 우리는 입력에 실수를 할 수 있음
사용 방법
오류 메시지 : 경고 아이콘, 빨간색 텍스트로 작성
아이콘과 빨간색 테두리만으로는 모두 사용자가 이해할 수 없음
떨어져 있는 요소는 별도의 구룹에 속하는 것으로 인식
- 서로 가까이 있는 디자인 요소는 관련된 것
- 떨어져 있는 요소는 별도의 그룹에 속하는 것으로 인식
<input name="firstName" id="firstNameInput" type="text" pattern="[^.]*?">
<p id="firstName-length-error" role="alert">
Your first name must have at least two letters and no unusual characters
</p>
aria-describedby
속성 사용
값은 오류 메시지의 ID임
<input name="firstName" id="firstNameInput" type="text" pattern="[^.]*?" aria-describedby="firstName-length-error" aria-invalid="true">
클라이언트 측 유효성 검사와 비교하여 서버 측 유효성 검사
에 더 중요
사용자가 양식을 제출하면 포커스가 첫 번째 잘못된 피드로 이동
px 대신 rem을 사용
18 px → 1.125rem
line-heigth의 경우 픽셀 단위로 설정
글꼴 크기와 마찬가지로 줄 높이를 설정 시
line-heigth : 1.2;
절대 단위? 상대 단위?
물리적인 측정 거리를 의미함
px
절대 길이 단위
일반적인 모니터 디스플레이의 1픽셀을 의미함
이는 다시 글꼴 상대 길이
와 뷰포트 백분율 길이
로 나뉨
em, rem, vh, vw
글꼴 상대 길이
부모의 요소의 폰트 사이즈를 기준으로 함글꼴 상대 길이
루트 요소(일반적으로 <html>) 폰트 사이즈 기준
높이
의 1% 기준으로 함너비
의 1% 기준으로 함