HTML 살펴보기
해당 글은 inflearn 초보자를 위한 HTML 기초 를 보고 정리한 것입니다. 문제가 될 시 삭제하겠습니다.
HTML 이란#
HTML (Hypertext Markup Language)
- Hypertext
 - Markup Language 
<div>,<section>- SGML (Standard General Markup Language)
 - 이런 마크업 언어도 있어요: XML, MathML, EmotionML (Markup Language)
 
 - HTML 표준은 HTML과 관련 API로 구성되어 있음
 마크업언어로만 접근하는 것을 권장하지 않음- Web Storage, Socket API (HTML Spec)
 - 나아가 웹이 어떻게 동작하고 어떻게 웹브라우저가 동작하고 렌더링되는지 알아보면 좋음
 
HTML의 탄생 배경#
- HTML은 문서를 표현하기위해 탄생
 - 지금은 버전이 Living Standard
- HTML 5 용어는 공식적으로 폐기된 상태
 - html.spec.whatwg.org
 
 
왜 중요?#
- HTML은 웹의 근간, 웹의 골격
- JSX (React 문법) > HTML
 
 - 브라우저가 공식증로 지원하는 언어는 4종류
- HTML, CSS, JavaScript, WASM (웹어셈블리)
 
 HTML을 잘 안다는 건- 브라우저가 어떤 방식으로 동작하는지 이해
 - 검색엔진, 크롤러, 콘텐츠 표현 방식, 접근성 등에 대한 이해도를 높이는 것
 
웹 브라우저 전쟁과 웹 표준#
웹 브라우저 전쟁#
- 최초의 브라우저: MOSAIC
 - 이후 Netscape가 Netscape Navigator 브라우저를 제작
 - Netscape Navigator vs. Microsoft Internet Explorer
 - MS에서 windows 95에서 인터넷 익스플로러 끼워 팔기 시작하면서 1위로 점유하기 시작
 - JScript 자체적으로 개발
 - Flash
 웹 표준의 시작- 2000년도에 Netscape가 Firefox개발로 전환 (Mozilla 재단 설립)
 
웹 표준 (Web Standard)#
모든 브라우저에서 동일한 동작을 기대할 수 있어야 한다
표준화기구 W3C
- 1994, 팀 버너스리 설립
 - W3C 표준은 몇 가지 단계를 거쳐 만들어짐
 - 시간이 걸림
 - Recommendation: 권고안
- 구현에 필수적인 사항은 아님
 
 
WHATWG 표준
- WHATWG Standard
 - Living Standard
 
웹 표준 프로젝트
- 1998년 만들어짐
 - 브라우저 및 개발자들에게 웹 표준 준수에 대한 인식을 심어주고
 - 모든 브라우저에 동일한 사용성을 제공할 수 있게 하자는 운동
 
웹 표준 처음 시작 스펙- Structural Languages
- HTML 4.0
 - XML 1.0
 
 - Presentational Languages
- CSS1, CSS2
 - XSL (under development)
 css3는 따로 보는게 좋음
 - Object Models
- DOM1 Core HTML/XML
 
 - Scripting
- ECMAScript (the "official" version of JavaScript)
 
 
- Structural Languages
 
RECAP#
- 브라우저 전쟁으로 비표준 기술 발달
 - 브라우저 독점 시장화
 - IE 독주
 - 여러 브라우저가 웹표준을 지원해서 개발자가 기대한 결과를 얻게하는데 취지
 - 지금 시점에선 웹표준을 지키면됨
 
웹 콘텐츠 접근성#
- Accessibility, 접근성 !== 장애인 대상
 - 접근성이 반드시 추가 작업을 일으키거나, 장애인 만을 대상으로 하는게 아님!!
 웹 콘텐츠 접근성으로 바라보자- 모두가 웹에 있는 컨테츠에 잘 접근할 수 있어야 함
 
- 장애
- 시각, 청각, 색약, 색맹, 전맹, 뇌병변, 신체 결손
 
 
WCAG#
- W3C에서 관리
 - not only developer, 모든 프로덕트 제작자가 챙겨야하는 영역
 - best practices를 잘 준수
 - HTML 표준을 잘 준수하는 것도 WCAG에 포함
 - 항목
- Perceivable
 - Operable
 - Understandable
 - Robust
 
 
KWCAG#
(한국에서 배포하고 있는 국내 표준, WCAG와 거의 동일)
- 인싱
 - 운용
 - 이해의 용이성
 - 견고성
 
장애인 차별 금지 및 권리 구제에 관한 법률#
- 제작한 웹사이트가 접근성을 준수하지 않았을 경우, 장애인 단체 및 집단이 진정을 넣을 수 있음
 
브라우저와 브라우저 엔진#
웹 브라우저#
- HTML, CSS, JS, WASM 해석
 - 해석 후 렌더링
 - 생각보다 많은 영역을 수행해주는 애플리케이션
 - 종류
- Chrome (Google)
 - Safari (Apple)
 - Edge (MS)
 - Firefox (Mozilla)
 - Opera (Opera software)
 - Internet Explorer (MS)
- 2022 지원 wndeks 예정
 
 - Whale (Naver)
 - Brave (Brave)
 - Samsung Internet (Samsung, mobile)
 
 
웹 브라우저 구성#
- 브라우저 엔진 (렌더링 엔진)
- 브라우저가 동작하는 데 필요한 기반 기술을 모두 포함하는 집합체
 - 브라우저 엔진에 따라 동작 방식이 거의 유사
 - 종류
- Blink Engine (Chrome, Opera, Samsung Internet, MS Edge, Whale, Brave)
 - WebKit Engine (Safari)
 - Servo Engine (Firfox), Gecko Engine (Firefox)
 
 
 - 자바스크립트 엔진
 - 통신 모듈
 
iOS#
- 모든 브라우저가 WebKit 기반
 - Safari 브라우저에 스킨 씌우는 정도
 - (검색해보니 blink가 ios에 도입될 수 있도록 구글에서 추가 개발했다고 하는데 나중에 알아보면 좋을 듯)
 
표준화 기구 소개#
표준화 기구란#
- 기술 표준을 만들어, 여러 제조사와 기관들이 해당 표준을 따라 구현하게 함
 - 이는 사용자가 해당 표준을 통해 해당 제품을 만들 수 있음
 - 표준화 기구 목록
- W3C
- WICG
 
 - WHATWG
 - ECMA International (Javascript Spec.)
- TC 39 (ECMA 내 조직)
 
 - IETF
 - ISO
 
 - W3C
 
note
표준화 기구 리스트
W3C#
- https://w3.org/
 - 가장 큰 웹 표준화 기구
 - 1994 ~
 - specs
- CSS
 - MathML, EmotionML
 - Payment
 - Authentication
 - Linked Data
 - 구버전 HTML
 - Accesibility
 - ETC...
 
 
WICG#
- https://wicg.io/
 - w3c 산하그룹
 - 신규 스펙들을 제안하고 관리하는 그룹
 - specs
- Web-codecs
 - Web components
 - Priority-hints
 - Web package
 - Cookie-store
 - virtual-scroller
 - video-editing
 
 
WHATWG#
- https://whatwg.org/
 - 2004 ~
 - Apple, Mozilla, Opera 가 모여 만듦
 - 표준을 만들고 자주 변경하자는 취지
 - 대신 compability를 보여주는 것으로~
 - html 위주, web app 관련
 - specs
- HTML Living Standard
 - DOM
 - Encoding
 - Fetch
 - Notification
 - Fullscreen API
 - ETC...
 
 
ECMA International#
- https://ecma-international.org/
 - 1961 ~
 - specs
- [ECMA-262] ECMAScript (JavaScript)
 - [ECMA-402] ECMAScript 2020 Internalization API
 - [ECMA-404] JSON
 - [ECMA-408] Dart Programming
 - nfc 등 많음
 
 
TC 39#
- https://tc39.es/
 - ecma international 산하 조직
 - JavaScript 표준을 정의하고 관리하고 논의
 - specs
- [ECMA-262] ECMAScript (JavaScript)
 - [ECMA-402] ECMAScript 2020 Internalization API
 - [ECMA-404] JSON
 
 
IETF#
- https://www.ietf.org/
 - 인터넷 운영, 관리, 개발에 대해 협의 프로토콜을 제작
 - specs
- [RFC 9740] HTTP/2
 - [RFC 2616] HTTP/1.1
 - [RFC 8441] WebSocket
 - [RFC 6265] HTTP State Management Mechanism (Session & Cookie)
 - [RFC 2289] One-time password system (OTP)
 
 
ISO#
- https://www.iso.org/home.html
 - 인터넷 뿐만 아니라 다양한 분야의 표준을 정의하고 관리하는 기구
 - 1947 ~
 - specs
- [ISO/IEC 10918-6:2013] Application to printing systems
 - [ISO/IEC 15948:2004] Computer graphics and Image processing
 - [ISO/IEC 8859-1] Latin 1 Supplement
 
 
Recap#
- 웹에선 W3C, WHATWG, ECMA International 등이 가장 중요함
 - 표준화 기구 내에도 다양한 관심사 그룹이 존재, 관심사 별로 기능
 
HTML Living Standard 소개#
https://html.spec.whatwg.org/multipage/
multipage version / developer version 을 추천
- 처음엔 어려울 수 있으니 어느정도 적응후에 보는 것을 추천
 - Examples이 best practices라 생각하면 됨
 - 옆에 MDN 에서 Compatibility 확인 가능
 
기본 HTML 템플릿#
DOCTYPE#
- html, xml, xgbml, svg 같은 마크업 기반 언어에서 사용됨
 - 문서 타입과 버전을 명시
 - html living standard doctype: 
<!DOCTYPE html> - 명시하지 않으면, 브라우저는 해당 파일을 읽을 때 Quirks mode 라는 하위 호환성 모드로 읽음
 
HTML Content model#
- 모든 html 요소는 콘텐츠 모델을 가짐
 - WHATWG 스펙에 명시되어 있는 항목을 나열 조금 해보자면
Contexts in which this element can be used- 어디에서 활용하는지 스펙에서 볼 수 있음
 
Content model- 어떤 컨텐트 타입에 속하는지 표현
 
 
카테고리#
note
각 타입 정리
Metadata content#
- 웹페이지 내에 동작이나 표현을 정의
 - 문서간의 관계를 나타냄
 - 문서에 대한 정보를 나타냄
 - tags: link, meta, script, title, style ....
 
Flow content#
- 문서에 body 요소내 들어갈 수 있는 대부분의 요소는 Flow 콘텐츠에 속함
 
Sectioning content#
- heading과 footer의 범위를 정하는 콘텐츠
 - tags: article, aside, nav, section
 
Heading content#
콘텐츠의 섹션 헤더 정의
- tags: h1 ~ h6, hgroup
 
Phrasing content#
- 텍스트 표현
 
Embedded content#
- 문서에서 외부 콘텐츠를 가져올 때 사용하는 콘텐츠
 - 이미지, 비디오, 오디오, 외부 문서 등
 - tags: audio, canvas, embed, iframe, img, svg, video, picture, Object, mathML ...
 
Interactive content#
- 유저와 상호작용이 발생하는 모든 요소
 - 보통 interactive 내에 다른 intreactive 요소를 넣을 수 있음
 - tags: a(href), iframe, textarea, input, button, select, details, audio/video(controls), label
 
Palpable content#
- 컨텐츠가 자식 노드를 가지지 않는경우
 - 숨김 상태인 경우
 - Flow와 Phrasing 이 대부분 포함됨
 
Script-supporting content#
- 스크립트 지원을 위해 사용
 - script
 - template
 
Transparent content model#
- 어떤 컨텐츠 모델에 포함되어 있는가에 따라 콘텐츠 모델이 달라지는 것을 말함
 - a는 Transparent
- p내에 a가 있다면 a는 phrasing content model 이라 함
 
 
Paragraphs#
- 콘텐츠 모델은 아님
 
The nothing content model#
- 일부 요소는 자식 노드를 전혀 포함하지 않는 경우도 존재
 - 이부분이 무엇인지 모름
 - tags: template
 
HTML 기본 문법#
- 주요 키워드
- 태그
- 요소 (Elements)
 - 속성 (Attributes)
- 속성명, 속성값
 
 
 
 - 태그