오늘은 더 많은 사람들이 찾을 수 있고 이용할 수 있는 웹페이지를 만들기 위한
웹표준과 웹 접근성에 대해서 블로깅 하고자 한다.
웹 표준은 어떤 환경에서도 이용할 수 있는 웹페이지를,
웹 접근성은 어떤 사람이든 이용할 수 있는 웹페이지를 만들 수 있는 방법을 담고 있다.
웹 표준
두 글자로 정의한다면 '공간'으로 정의할 수 있다.
문서, 이미지, 영상 등 다양한 정보를 여러 사람들과 공유할 수 있는 공간을 웹이라고 한다.
현재는 크롬, 엣지, 사파리 등 최신 웹 브라우저들은 모두 웹표준을 지원한다.
즉 웹 표준에 맞추어 웹 페이지를 작성하면 어떤 브라우저를 사용하든 동일한 결과물을 얻을 수 있다!
웹 표준에 따라서 웹 페이지를 작성하면 어떤 장점이 있을까??
예전엔 구조, 표현 ,동작이 뒤섞인 코드가 많아서 유지 보수가 힘들었다면,,
웹 표준을 준수하여 웹 사이트를 제작하면?
웹 표준에서는 HTML을 시멘틱(semantic)하게 작성하는 것의 중요성을 강조!
시멘틱 요소를 적절하게 사용해보자!
<header> , <nav> ,<main> ,<aside>, <footer>, <section> ,<article> ,<hgroup> ,<p>
자쑤 쓰는 시멘틱요소들
HTML 요소는 표시 방법에 따라 인라인 요소, 블록요소로 나뉘는데
인라인 요소는 항상! 블록 요소에 들어가야 하며 반대의 경우는 있어서는 안 된다!
대표적인 인라인 요소(콘텐츠가 차지하는 만큼) -> <span> <a> <em> <strong>
대표적인 블록 요소 (가로로 넓게 영역 차지) -> <div> <p> <h1~6>
// h1, div 요소는 블록요소
// a, span 요소는 인라인 요소
<a href=""> <h1> 이렇게 쓰면 </h1> </a>
<span> <div> 안 돼요 </div> </span>
<b>
<i>
요소 사용하기<b>
요소(bold) 는 글씨를 굵게 만들 때 <i>
요소(italic) 는 글씨를 기울일 때 사용하는 요소⇒ 하지만 웹 표준을 준수하기 위해서는 이 요소들을 사용하지 않는 것이 좋음
대신 똑같은 스타일을 부여하면서 콘텐츠에 의미를 부여하는
<strong>
요소 (글씨 굵게)와 <em>
요소(글씨 기울이기, emphasize)를 사용하는 것이 좋음 두 요소는 글씨에 효과를 줌과 동시에 각 콘텐츠를 강조하는 의미를 부여
<hgroup>
마구잡이로 사용하기<hgroup>
요소들은 목차의 역할을 하면서 콘텐츠의 상하 관계(위계질서)를 표시하기 위해서 사용함
그런데 <hgroup>
의 시맨틱 요소로서의 역할은 간과한 채 글자에 스타일 속성을 적용하기 위한 목적으로 사용하는 경우가 종종 있음!
좋은 예시
// 좋은 예시 h1 -> h2-> h3 순서대로 써야함
<h1>제목</h1>
<h2>큰 목차</h2>
<h3>작은 목차</h3>
<h3>작은 목차</h3>
<h2>큰 목차</h2>
<h3>작은 목차</h3>
<h4>더 작은 목차</h4>
<h4>더 작은 목차</h4>
<br/>
연속으로 사용하기//좋은 예시 1
<p> 요소 사이에 여백을 주고 싶을땐 </p>
<p>아예 별도의 단락으로 구별하세요 </p>
//좋은 예시 2
// HTML 파일
<p class="margin">요소 사이에 여백을 주고 싶을땐</p>
<p class="margin">CSS 속성으로 여백을 설정해주세요</p>
//CSS 파일
.margin {margin:10px}
웹 표준을 지키기 위해서는 HTML, CSS 코드를 분리해서 작성하자!
// 나쁜 예시
<h3 style="color: blue"> 이렇게 인라인 스타일링으로는 사용하지 마세요</h3>
웹 사이트에 접근하는 브라우저에 상관 없이 동등한 화면과 기능을 제공할 수 있도록 만드는 작업
초기 기획 → 개발 → 테스트/발견 → 수정/ 반복의 단계
초기 기획 단계에서 어떤 웹 사이트를 만들 것인지 정확하게 결정해야 함
코드를 작성할때 사용하는 코드가 각 브라우저에서의 호환성이 어떤지 파악하고 사용해야함
각 기능을 구현한 후에는 그 기능에 대한 테스트!
직접 테스트를 할 수도 있겠지만 자동으로 테스트를 진행하는 도구도 있음
웹 접근성을 잘 확보했는지 판단할 기준이 되는 웹 콘텐츠 접근성 지침!
모든 콘텐츠는 사용자가 인식할 수 있어야 한다
1. 적절한 대체 텍스트
: 시각적으로 인식하지 못하는 사용자 또는 상황을 대비
<img src="이미지 주소" alt="대체 텍스트"/>
2. 자막 제공
멀티 미디어 콘텐츠에는 자막, 원고 또는 수화를 제공해야 한다.
3. 색에 무관한 콘텐츠 인식
: 콘텐츠에 테두리 설정이나 레이블을 달아서 콘텐츠가 색에 관계없이 인식될 수 있어야 한다.
4. 명확한 지시사항 제공
지시사항은 모양, 크기, 위치, 방향, 색, 소리 등에 관계없이 인식될 수 있어야 함
5. 텍스트 콘텐츠 명도 대비
: 텍스트 콘텐츠와 배경 간의 명도 대비는 4.5대 1 이상이어야 한다.
6. 자동 재생 금지
: 자동으로 소리가 재생되면 안 됨
7. 콘텐츠 간 구분
: 이웃한 콘텐츠는 구별될 수 있어야함 (테두리, 구분선, 무늬 등)
사용자 인터페이스 구성요소는 조작 가능하고 내비게이션 할 수 있어야 함
8. 키보드 사용 보장
모든 기능은 키보드만으로도 사용할 수 있어야 함
9. 초점 이동
키보드에 의한 초점은 논리적으로 이동해야하며 시각적으로 구별할 수 있어야 함
정지 기능 제공
자동으로 변경되는 콘텐츠는 움직임을 제어할 수 있어야 함
깜빡임과 번쩍임 사용 제한
초당 3~50회 주기로 깜빡이거나 번쩍이는 콘텐츠를 제공하지 않아야 한다
제목 제공
페이지, 프레임, 콘텐츠 블록에는 적절한 제목을 제공해야 한다.
적절한 링크 텍스트
링크 텍스트는 용도나 목적을 이해할 수 있도록 제공해야 한다.
<html lang="ko">
// 탭1-> 탭1 관련 내용 -> 탭2 -> 탭2 관련 내용 순서로 읽기
<div>탭1</div>
<div>탭1 관련 내용</div>
<div>탭2</div>
<div>탭2 관련 내용</div>
// label과 input id 연결
(0) <label for="user_id">아이디</label>
<input id="user_id" type="text" placeholder="아이디" />
// title 속성쓰기
(O) <input type="text" title="아이디" placeholder="아이디" />
// WAI-AREA
<input type="text" title="아이디" placeholder="아이디" />
마크업 오류 방지
마크업 언어의 요소는 열고 닫음, 중첩 관계 및 속성 선언에 오류가 없어야 함
웹 애플리케이션 접근성 준수
콘텐츠에 포함된 웹 애플리케이션은 접근성이 있어야 함
개발을 하기 위해서는 코드짜고 이쁘게 홈페이지를 만드는 것도 중요하지만
웹 표준 & 접근성을 준수하여 사용자에게 더 편리하고 동등한 페이지를 만들 수 있다는 것을 알게 되었다!
이제 앞으로 있을 프로젝트에 많이 써먹게 될테니 이 개념들이 서서히 스며들도록 해야겠다!