[Day 04] 웹 접근성과 표준 + HTML5 Basic + CSS Basic
웹 접근성과 표준
- BACK-END
- Server
- Database
- Application Layer
- FRONT-END
- Client
- Web Browser
- Presentation Layer
- FRONT-END의 3가지 기술
- HTML5 : 건강한 신체
- CSS3 : 근사한 스타일링
- Javascript : 스마트한 두뇌
- 웹 표준(Web Standard)
- 웹 표준은 W3C(World Wide Web Consortiums) 에서 제정한다.
- 하지만 HTML5 이후 제작사에서 표준을 만들고 제정만 W3C에서 하기도 한다.
- 책 추천 : 제프리 젤드만의 웹표준 가이드
- 웹 접근성(Web Accessibility)
- 웹의 힘은 보편성에 있다. 장애가 있음에도 불구하고 웹에 접근할 수 있어야 한다. - Tim Berners Lee
- 개발할 때 고려해야 할 장애 환경
- 시각 장애 - 전맹, 저시력
- 청각 장애
- 지체 장애 - 절단 및 지체기능 장애
- 뇌병변 장애
- 접속 환경에 대한 이해
- 다양한 Platform
- Cross Browsing
- SEO (Search Engine Optimization) : 검색 엔진 최적화
- 저사양 또는 저속회선
HTML5 Markup
- HTML의 탄생
- HTML 3.2
<center>
, <font>
등의 태그가 존재했고, 이에 대한 문제점이 있었다.
- HTML 4.01
- [DTD] (DOCTYPE)의 등장
- DTD를 근거로 html 문서를 해석한다.
- DTD에 없으면 에러
- 태그 이름에 대소문자 구분 X
- XHTML (W3C 주도)
- XML 처럼 태그를 사용자가 만들어낼 수 있다.
- 소문자만 사용
- 속성 = “값” / checked = “checked”
- 시장에서는 실패(모든 태그가 종료 태그를 갖는 등 불편한 점 때문)
- 호환성에도 문제
- HTML5 (WHATWG 주도)
- XHTML 2.0의 실패 이후 개발된 HTML
- DTD가 아닌 브라우저에 따라 HTML 구조가 해석된다.
- HTML + CSS + Javascript 통합된 개념
- 콘텐츠 모델(Content Models)의 등장
- 명확한 정보 구조 설계 및 구성을 위해 카테고리를 정의하여 각 요소별로 비슷한 성격을 가지고 있는 것끼리 그룹화한다.
- 콘텐츠 모델이 문법적으로 허용하느냐 아니냐가 inline, block 보다 더 중요하다.
- 콘텐츠 모델에서 정해진 문법에 따라 구조를 잡는 것이 가장 중요하다.
- 콘텐츠 모델의 카테고리(Category)
- Flow, Heading, Sectioning, Metadata, Embedded, Phrasing, Interactive 등
- 인터랙티브 콘텐츠(Interactive Content)
- 사용자가 어떤 기능을 조작할 수 있는 (상호작용) 콘텐츠
- 인터랙티브 콘텐츠 간에 중첩 불가
- 아웃라인 알고리즘(Outline Algorithm)
<section>
, <article>
, <aside>
, <nav>
등을 활용해 명시적으로 아웃라인(웹 페이지의 정보구조)을 잡을 수 있다.
- API(Application Programming Interface)
- 기능을 동작시키는 것(엄밀히 따지면 자바스크립트 함수 덩어리)
- 오프라인 웹 구현을 위한 API
- Web Storage
- Web SQL Database / Indexed Database
- Application Cache
- 실시간 커뮤니케이션 API
- Web Workers
- Web Socket
- Notifications
- 파일/하드웨어 접근 API
- File API(Desktop Drag-In, Desktop Drag-out)
- Geolocation
- Device Orientation
- Speech Input
- GUI를 위한 API
- HTML 기본 골격
<!DOCTYPE html>
<html lang="ko-KR">
- html 문서의 시작
- lang 속성은 language
- 문서를 voice로 읽을 때에도 이 언어에 따라 읽는다. (웹 접근성 증대)
<head>
<meta charset="UTF-8">
- 캐릭터(글자) 인코딩
- UTF-8은 다국어 호환
- EUC-KR은 깨진다.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- 반응형 사이트, 모바일 사이트를 만들 때 사용
<meta http-equiv="X-UA-Compatible" content="ie=edge">
- 값에 X가 붙어 있으면 비표준
- 브라우저 버전에 따른 호환성을 조정해서 렌더링 해준다. (호환성 보기)
- content 속성의 경우에는 edge로 맞춰 놓으면 해당 ie의 가장 최신 버전으로 렌더링 해준다.
<title>
- 문서 전체를 관통하는 제목
- 모든 페이지에 같은 title이 달리면 SEO에 안좋다.
- 쓸데없는 ‘*****’ 같은거 넣지 않는다. (웹 접근성 차원에서 안좋음)
- yahoo 검색 시 html:title 로 검색하면 웹페이지의 title에 html이 포함되어 있는 것을 검색한다.
- HTML 구조 잡기
- 콘텐츠 중심 마크업
- 성격이 서로 다른 contents 끼리 나누거나 묶어주는 작업이 필요하다.
- 3단 골격
- header
- [ visual area ]
- main content
- [ slogan area ]
- footer
- 4단 골격
- header
- navigation
- main content
- footer
- header area
- 브랜딩 영역과 navigation을 포함할수 있다.
- 의미 중심 마크업(semantic markup)
<div>
는 의미가 1도 없다.
<header>
- block level
- visual area 같이 의미론적인 태그가 존재하지 않을 경우
<div>
<main>
- 독립적인 섹션으로 부분적으로 떼서 전달해도 될 정도의 내용
<article>
<section>
은 여러가지 중 하나의 섹션
- article, section, aside, nav tag는 아웃라인에 직접적으로 영향을 미치기 때문에 heading tag를 필요로 한다.(없으면 warning)
<footer>
- 모든 문서를 아우르는 영역은
<div>
<div>
같이 여러번 나오는 태그에는 네이밍이 필요하다.
- id(#) - unique
- class(.)
- 최근에는 component 조립 위주로 개발되기 때문에 id 보다는 class로만 네이밍 한다.
- Pascal Case (ex. MainMenu)
- Camel Case (ex. mainMenu)
- Snake Case (ex. main_menu (소문자 + _))
- kebob Case (ex. main-menu (소문자 + 꼬챙이 -))
- 바깥쪽에
div.container
가 있어야 하는 이유는 컴포넌트 핸들링이 편하기 때문이다.
CSS (Cascading Style Sheet)
- CSS3 이후로는 표준화가 모듈 단위로 진행되고 있다.
- CSS4 가 아니라 CSS3의 어떤 모듈의 Level이 올라간다.
- CSS 사용의 의의 : 문서의 구조와 표현을 분리한다.
- CSS 우선순위
- user agent stylesheet < author style
<body>
의 기본 font-size: 16px
- vendor prefix
-webkit-
: chrome, safari, opera
-ms-
: ie, edge
-moz
: firefox
- size 단위
vh
: viewport height (viewport의 몇 %)
- margin
- margin의 좌우에 auto를 주면 viewport를 기준으로 양쪽에 균등하게 배분된다. (가운데 정렬처럼 보인다.)
댓글남기기