00장 단계적 기능 향상을 이용한 디자인 사례 ... 1 더 넓어진 웹 세상 ... 3 모든 사람이 웹을 이용하고 있거나 곧 그렇게 될 것이다 ... 3 사용자의 기대감 이끌기 ... 4 사용자 접근성 필요 증대 ... 5 다른 기기를 이용한 웹 접속의 증가 ... 7 기기와 브라우저의 질긴 생명의 끈 ... 8 웹 2.0의 지뢰들 ... 9 브라우저에 대한 편협한 관점 ... 10 "자바스크립트가 꼭 필요"하다면 많은 사용자가 떠날 것이다 ... 11 CSS는 또 다른 오류가 발생할 잠재성이 있다 ... 12 부가기능의 블랙 박스 ... 13 새로운 기기는 예상하지 못한 인터랙션 규칙을 동반한다 ... 14 단계적 기능 향상이 방법이다 ... 16 01장 접근 방식 ... 23 브라우저 성능 테스트 ... 25 단계적 기능 향상을 위한 계획 : 자세히 살펴보기 ... 27 설계에서 적용까지 : 단계적 기능 향상을 적용한 개발 요소 만들기 ... 29 실전에 적용하기 ... 31 02장 단계적 기능 향상 적용하기 : 자세히 살펴보기 ... 33 자세히 살펴보기 개요 ... 34 콘텐츠 계층구조 정의와 컴포넌트 HTML 매핑 ... 35 기초 마크업, 최소한의 안전 스타일 만들기 ... 37 마크업, 스타일, 스크립트 개선사항 적용하기 ... 39 사례 1 : 뉴스 웹 사이트에서의 구조와 구성 계획하기 ... 41 콘텐츠 구성과 네이밍 평가하기 ... 42 콘텐츠 구성을 위한 기본 HTML 계층구조 특성 이용 ... 43 내비게이션 구조잡기 ... 44 레이어 콘텐츠와 애니메이션 콘텐츠 적용 ... 45 동적인 필더링과 정렬 지원 ... 46 사례 2 : 결제 페이지 프로세스, 유효성, 데이터 전송 ... 48 결제 페이지 디자인 파헤치기 ... 48 접근성을 보장하기 위한 폼 마크업 ... 54 제약사항과 검증절차 적용하기 ... 55 기본 경험과 향상된 경험 결합하기 ... 56 사례 3 : 인터랙티브한 데이터의 시각화 ... 57 예산 라인 그래프를 위한 기초 마크업 선택 ... 57 접근성이 높은 슬라이더 폼의 기초 마크업 만들기 ... 60 파이 그래프 만들기 ... 61 사례 4 : 브라우저에서 모든 기능이 지원되는 포토 매니저 ... 62 글로벌 내비게이션 요소 마크업하기 ... 63 복잡한 앨범과 다중 인터랙션 지원하기 ... 66 사용자 정의 폼과 오버레이 메뉴 만들기 ... 70 뒤로 가기 버튼 지원하기 ... 71 '자세히 살펴보기'를 적용할 때 필요한 체크리스트 ... 72 03장 의미있는 마크업 만들기 ... 75 텍스트와 이미지 마크업 ... 77 의미있는 마크업 텍스트를 표현하기 위한 요소 ... 77 리스트(List) ... 83 표를 이용한 데이터(tabular data) ... 84 이미지(Images) ... 87 리치 미디어(Embedded rich media) ... 88 외부 페이지 콘텐츠 추가하기 ... 90 인터랙티브한 콘텐츠 마크업하기 ... 91 앵커 링크 ... 92 폼 구조 ... 92 폼 제어 ... 94 페이지의 문맥 작성하기 ... 101 블록 vs. 인라인 요소를 사용할 때 알아야 할 것 ... 101 ID와 class를 이용해 요소 인식하기 ... 103 WAI-ARIA 랜드마크 role을 이용해 메인 페이지 인식하기 ... 104 읽을 수 있는 코드 순서 유지하기 ... 105 title 어트리뷰트를 이용하라 ... 108 HTML 문서 설정하기 ... 109 DOCTYPE ... 110 문서의 헤더 ... 112 접근성 추가하기 ... 117 접근성 가이드라인과 법률 표준 ... 118 웹 콘텐츠 접근성 가이드라인 (Web Content Accessibility Guidelines, WCAG) ... 120 04장 효과적으로 스타일 적용하기 ... 123 페이지에 CSS 적용하기 ... 124 외부 스타일스트에서 스타일 운영하기 ... 124 외부 스타일시트 연결하기 ... 126 의미있는 명명 규칙 사용하기 ... 128 기본 경험과 향상된 경험 스타일 입히기 ... 129 기본 경험을 제공하는 안전한 스타일 ... 129 향상된 경험을 제공하는 스타일 적용하기 ... 131 접근성 고려하기 ... 132 브라우저의 비일관성과 버그 다루기 ... 134 조건부 주석 ... 135 일반적인 이슈와 해결책 ... 136 05장 스크립트를 이용한 향상과 인터랙션 ... 141 자바스크립트 올바르게 참조하기 ... 142 인라인 자바스크립트 사용 금지 ... 142 외부 자바스크립트 참조하기 ... 143 기본 경험에서 자바스크립트 위치 이해하기 ... 143 스크립트 향상을 위한 실무 사례 ... 144 콘텐츠가 준비되면 스크립트를 실행하라 ... 144 마크업에 동작 적용하기 ... 145 자바스크립트를 이용해 향상된 마크업 만들기 ... 147 콘텐츠의 노출 관리하기 ... 150 스타일 향상 적용하기 ... 152 사용성과 접근성의 유지와 강화 ... 153 키보드 접근 적용하기 ... 154 WAI-ARIA 어트리뷰트 지정하기 ... 155 접근성 테스트 ... 156 뒤로 가기 버튼의 관리 ... 157 06장 브라우저 성능 테스트 ... 159 EnhanceJS : 성능 테스트 프레임워크 ... 160 EnhanceJS의 매커니즘 : 테스트 방법 ... 161 EnhanceJS를 이용해 개선사항 적용하기 ... 164 EnhanceJS 설정 ... 167 추가 스타일시트 로딩하기 ... 167 추가 스크립트 로딩하기 ... 170 경험 토글 링크 수정하기 ... 170 EnhanceJS의 pass/fail 조정하기 ... 172 EnhanceJS 테스트 세트 확장하기 ... 173 EnhanceJS 옵션으로 테스트 세트 수정하기 ... 173 EnhanceJS의 인스턴스 생성하기 ... 174 디버깅을 위한 성능 테스트 경고 활성화 ... 175 서버에서 EnhanceJS 최적화하기 ... 176 07장 단계적 기능 향상을 적용한 위젯 만들기 ... 181 위젯 코딩 방법 ... 182 위젯 예제 다루기 ... 183 예제 코드 내려받기 ... 185 08장 접을 수 있는 콘텐츠 ... 187 자세히 살펴보기 ... 188 접근이 쉬운 접을 수 있는 콘텐츠 만들기 ... 190 기초 마크업과 스타일 ... 191 향상된 마크업과 스타일 ... 191 접을 수 있는 스크립트 적용 ... 196 접을 수 있는 스크립트 사용하기 ... 198 09장 탭 메뉴 ... 201 자세히 살펴보기 ... 202 탭 메뉴 만들기 ... 205 기초 마크업과 스타일 ... 205 향상된 마크업과 스타일 ... 207 탭 메뉴 스크립트 ... 212 좀 더 개선하기 ... 215 즐겨 찾기와 방문기록(뒤로 가기 버튼) 탐색 ... 215 자동으로 회전하는 탭 ... 219 외부 탭 콘텐츠 참조하기 ... 220 아코디언처럼 보이기 ... 220 탭 스크립트 이용하기 ... 221 10장 툴팁 ... 223 자세히 살펴보기 ... 224 title 콘텐츠로 툴팁 만들기 ... 227 기초 마크업과 스타일 ... 227 향상된 마크업과 스타일 ... 228 향상된 툴팁 스크립트 ... 230 앵커 링크로 툴팁 만들기 ... 233 외부 소스로 툴팁 만들기 ... 235 툴팁 스크립트 사용하기 ... 237 11장 트리구조 메뉴 ... 239 자세히 살펴보기 ... 240 트리 메뉴 만들기 ... 243 기초 마크업과 스타일 ... 243 향상된 마크업과 스타일 ... 245 향상된 트리 스크립트 ... 249 트리 메뉴 스크립트 이용하기 ... 257 12장 HTML5 canvas를 이용한 그래프 ... 259 자세히 살펴보기 ... 261 기초 마크업 ... 262 그래프에 접근성 추가하기 ... 266 테이블 데이터 파싱하기 ... 266 데이터를 가시화하기 위해 canvas 이용하기 ... 271 향상된 테이블 스타일 적용하기 ... 280 데이터 접근성 유지하기 ... 281 canvas 그래프 좀 더 살펴 보기 : visualize.js 플러그인 ... 283 13장 대화 상자와 오버레이 메뉴 ... 287 자세히 살펴보기 ... 288 대화상자 만들기 ... 291 기초 마크업과 스타일 ... 291 향상된 마크업과 스타일 ... 292 개선된 대화상자 스크립트 ... 298 대화상자 좀 더 깊이 살펴보기 ... 303 대화상자 스크립트 이용하기 ... 304 14장 버튼 ... 309 자세히 살펴보기 ... 310 input 기반 버튼 스타일 만들기 ... 312 기초 마크업과 스타일 ... 312 향상된 마크업과 스타일 ... 314 hover 상태 스크립트 작성 ... 319 버튼에 좀 더 복잡한 비주얼 적용하기 ... 320 기초 마크업과 스타일 ... 320 향상된 마크업과 스타일 ... 321 input을 button으로 변경하는 스크립트 ... 322 input을 button으로 변경하는 스크립트 이용하기 ... 325 버튼 좀 더 깊이 살펴보기 ... 326 15장 체크박스, 라디오 버튼, 별점 ... 329 자세히 살펴보기 ... 330 사용자 정의 체크박스 만들기 ... 333 기초 마크업 ... 333 향상된 마크업과 스타일 ... 335 체크박스 스크립트 ... 339 사용자 정의 라디오 버튼 만들기 ... 341 기초 마크업 ... 342 향상된 마크업과 스타일 ... 342 라디오 버튼 스크립트 ... 344 사용자 정의 input 좀 더 살펴보기 : 별점 위젯 ... 347 기초 마크업 ... 348 향상된 마크업과 스타일 ... 350 별점 위젯 스크립트 만들기 ... 351 사용자 정의 input과 별점 스크립트 사용하기 ... 354 16장 슬라이더 ... 357 자세히 살펴보기 ... 358 슬라이더 만들기 ... 363 기초 마크업과 스타일 ... 363 향상된 마크업과 스타일 ... 364 슬라이더 스크립트 ... 371 슬라이더 스크립트 이용하기 ... 377 17장 셀렉트 메뉴 ... 381 자세히 살펴보기 ... 382 접근성이 고려된 사용자 정의 셀렉트 만들기 ... 384 기초 마크업과 스타일 ... 385 향상된 마크업과 스타일 ... 386 향상된 사용자 정의 셀렉트 스크립트 ... 395 사용자 정의 셀렉트 좀 더 살펴보기 : 최신 옵션 스타일 적용 ... 404 사용자 정의 셀렉트 스크립트 이용하기 ... 407 18장 리스트 빌더 ... 409 자세히 살펴보기 ... 410 리스트 빌더 만들기 ... 412 기초 마크업과 스타일 ... 412 향상된 마크업과 스타일 ... 413 리스트 빌더 스크립트 ... 418 리스트 빌더 좀 더 살펴보기 : 다중 선택, 정렬, 자동완성, 문맥 메뉴 ... 424 다중 선택 ... 424 드래그 앤 드롭 정렬 ... 424 자동 완성 ... 425 문맥 메뉴 ... 425 리스트 빌더 스크립트 사용하기 ... 426 19장 파일첨부 ... 429 자세히 살펴보기 ... 431 사용자 정의 파일 input 만들기 ... 433 기초 마크업과 스타일 ... 434 향상된 마크업과 스타일 ... 434 사용자 정의 파일 input 스크립트 ... 438 사용자 정의 파일 input 스크립트 사용하기 ... 441 마무리 : 미래를 내다보다 ... 443