Hyper Text Markup Language, 웹 페이지가 어떻게 구조화 되어있는지 브라우저로 하여금 알 수 있도록 하는 마크업 언어
요소 - Element
<img>
)속성 - Attribute
class=”hoho”
/ type=”itext”
와 같이 태그 안에 들어가는 어떤 설정XHTML은 Extensible HTML 을 의미하고, HTML을 XML로 재정의한 언어이기 때문에 요소와 속성에는 차이가 없다. 문법의 적용이 조금 더 엄격하다. XHTML 문서는 하나의 XML 문서로서 문법적으로 정확하므로, 표준 XML 라이브러리를 이용한 자동화된 처리가 가능하다.
/
를 기입한다.변환하는 방법 - 첫 줄에 코드를 추가한다.
```html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
```
HTML5는 웹 상에서 콘텐츠를 구성하고 보여주기 위한 HTML 언어의 최신 표준 권고안이다.
HTML 4.0.1, XHTML 1.1등을 대체하는 차세대 표준안.
HTML5에서의 기본 문자 인코딩(character encoding) 방식은 UTF-8이다.
간결하고 명확해진 문법 (DOCTYPE 선언 방법)
<!DOCTYPE html>
시멘틱 요소가 생겼다.
Sectioning Root - setction이나 article 요소와 같이 장이나 절과 같은 계층 구조로 구분되지 않고, 독립적인 컨텐츠로 분리되기 때문에 아웃라인에 영향을 주지 않는다.
blockquote | body | detail | fieldset | figure | td
Metadata Content - 문서의 정보를 포함하는 메타데이터, 스타일 표현을 위한 style요소, 행동을 설정하는 script 등을 나타낸다. 웹 브라우저에 직접적으로 보여지지 않으며 문서와 문서 간의 관계를 설정
base | link | meta | noscript | script | style | title
Flow Content - 문서 본문에 해당하는 body 요소에 들어가는 대부분의 요소들이 속하는 콘텐츠
a | abbr | address | area | artivle | aside | audio…….
Sectioning Content - 대부분 HTML5에서 새롭게 추가된 요소들이며, 제목과 그 내용을 포함한 범위를 지정하는 콘텐츠를 나타낸다. 모든 섹셔닝 컨텐츠는 헤딩과 아웃라인을 가진다.
article | section | nav | aside
Heading Content - 섹션의 제목을 나타낸다. 문서의 아웃라인 고려가 필요!
h1 | h2 | h3 | h4 | h5 | h6
Phrasing Content - 문서의 텍스트를 나타내며, 그 텍스트를 문단 내부 레벨로 마크업하는 요소들
a | abbr | area | b | i | img | input...
Embedded Content - 포함된 이라는 뜻을 가지며, 문서 안에 외부 자원 또는 HTML이 아닌 다른 언어로 표현되는 컨텐츠
audio | canvas | embed | iframe | img | math | object | svg | video
Interactive Content - 사용자가 어떤 기능을 조작할 수 있는 콘텐츠. 확인 버튼을 부른다던가, 재생하든가, 링크를 클릭하는 것 등
a | audio | button | details | embed | iframe | img | input | keygen | label | object | select | textarea | video
Palpable Content - 기존 콘텐츠 모델에 새롭게 추가된 개념으로, 구체적으로 보여지고 이해할 수 있는 콘텐츠 요소
Script-Supporting Content - 어떤 정보 표현을 하지는 않지만 사용자에 대한 기능 등에 해당하는 스크립트를 지원하는 데 사용된다.
script
Transparent Content - 콘텐츠 모델을 가지지만, 어떠한 카테고리에 속하지 않은 요소 . 그 안에 담긴 콘텐츠를 바꾸어 마크업해도 문법 오류가 없는 것을 의미
table | audio | canvas | del | ins | map | noscript | object | video
다양한 API의 추가 (Application Programming Interface) - 프로그램을 개발할 때 필요한 기본 기능
오프라인 웹 구현을 위한 API
Web Storage: 브라우저에 데이터를 저장하는 공간. 크기 제한과 유효 기간이 없고, 데이터가 서버로 전송되지 않으면, Javascript 객체를 저장할 수 있다는 장점
Web SQL Database/Indexed Database: API 클라이언트(웹 브라우저)에서 관리되는 데이터 베이스를 제어할 수 있는 API로 구성되어 있다.
Application Cache: 웹 애플리케이션을 오프라인에서 사용하는 데 필요한 리소스 (HTML, CSS, JS, 이미지 등)를 클라이언트 쪽에 캐시하기 위한 기능으로, 리소스가 로컬에 캐시된 상태에서 웹 브라우저가 네트워크에 접소하기 안호 캐시된 리소스를 이용할 수 있다.
실시간 커뮤니케이션 API
Web Workers: 메인 스레드(UI)와 독립적인 백그라운드 프로세스로 처리되는 스크립트를 말하며, 웹 브라우저 내에 자바스크립드로 멀티스레드 프로그램을 구현할 수 있다.
Web Socket: 웹 브라우저와 서버 간 양방향 전이중 통시을 구현한 Web Socket 프로토콜을 이용할 수 있는 API
Notifications: 운영체제에 독립적인 플랫폼 수준의 알림 메세지를 보여주는 API
파일/하드웨어 접근 API
GUI를 위한 API
HTML5는 XML이나 XHTML과 달리 문법적으로 매우 유연하게 대처한다.
태그 이름에 대문자 사용
속성값에 따옴표 생략 (style=height: 50px;)
속성값 생략 (disabled)
빈 태그의 종료 태그(/) 생략 (<br>
)
<head>
<head>
내용은 이용자게에 보이지 않지만, 검색 결과에 노출 될 키워드, 홈페이지 설명, CSS 등 HTML 페이지의 모든 내용을 담고 있다.
HTML 문서의 메타데이터를 정의하는 곳이다.
<head>
<meta charset="UTF-8">
<meta name="author" content="Chris Mills">
<meta name="description" content="The MDN Learning Area aims to provide
complete beginners to the Web with all they need to know to get
started with developing web sites and applications.">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>민영 WORLD</title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="icon" type="image/png" href="http://example.com/image.png" />
<link rel="stylesheet" href="../dist/css/style.min.css" />
<script src="my-js-file.js"></script>
</head>
<title></title>
HTML 문서 전체의 타이틀을 표현하기 위한 메타데이터
<meta>
속성(attribute)메타데이터는 데이터를 설명하는 데이터이다.
<meta charset="utf-8">
웹 브라우저에서 한글이나 영어와 같은 문자를 처리하기 위해 문자 인코딩 방식(문자 코드 세트)을 명시한다.
HTML의 텍스트를 어떻게 보여질 지 명시하는 것
UTF-8: 유니코드를 위한 문자셋으로 전 세계적인 character 집합으로 많은 언어, 문자를 포함한다.
meta 요소 중 가장 먼저 선언하는 게 좋다.
기존 방식: <meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta content=”텍스트”>
실제 메타데이터의 컨텐츠, 속성 값이다.
name 속성이나 http-equiv 속성과 관련된 값을 명시한다.
content=”웹접근성, 웹표준, HTML, 웹콘텐츠 접근성 지침” 과 같이 콤마로 구분하여 선언
<meta http-equiv=”content-type | default-type | refresh”>
content 속성에 명시된 값에 대한 HTTP 헤더를 제공한다.
http-equiv 속성이 명시되어 있으면, 반드시 content 속성도 함께 명시되어야 한다.
content-type: 해당 문서의 문자 인코딩 방식을 명시한다.
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
default-type: 우선적으로 적용할 스타일시트를 명시한다.
<meta http-equiv="default-style" content="preferred stylesheet">
refresh: 해당 문서를 새로고침(refresh)할 시간 간격을 명시한다.
<meta http-equiv="refresh" content="30">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
문서 호환성 모드. 최신 모드로 지정된 DOCTYPE에 상관없이 IE8 이상 버전에서 항상 최신 표준 모드로 렌더링 된다.
<meta **name**=”애플리케이션이름 | author | description | generator | keywords | viewport”>
메타 요소가 어떤 정보의 형태를 갖고 있는지 알려준다.
name 속성을 사용하면 반드시 content 속성도 함께 사용한다.
author: 문서의 저자를 명시한다.
description: 웹 페이지에 대한 설명을 명시. 검색 엔진은 검색 결과에 설명을 함께 표시할 수 있다.
keywords: 검색 엔진을 위해 웹 페이지와 관련된 콤마(,)로 구분한 키워드 목록을 명시한다.
generator: 문서를 생성하는 데 사용되는 소프트웨어 패키지 중 하나를 명시한다.
<meta name=”**viewport**” content="width=device-width, initial-scale=1.0"/>
웹 페이지에서 사용자가 볼 수 있는 영역인 뷰포트를 제어한다. 장치에 따라서 뷰포트가 달라지므로, 모바일 화면은 컴퓨터 화면보다 뷰포트가 더 작아진다. viewport는 브라우저에게 해당 페이지의 면적과 비율 등을 어떻게 제어할 지에 대한 지침을 제공한다.
width
initial-scale=1.0
처음 로드될 때, 초기 렌더링 비율
1.0: 비율 100%를 의미한다.
user-scalable= yes | no
width | height | initial-scale | minimul-scale | maximum-scale | user-scalable(기본1)
<meta name="robots" content="noindex,follow">
해당 페이지를 검색결과에 표시할지(index), 표시하지 않을지(noindex), 페이지 안에 있는 링크를 따라 이동하게 할 것인지(follow), 아닌지(nofollow)를 지정할 수 있다.
nofollow의 경우 크롤러가 페이지에 있는 외부 사이트 링크를 따라 이동하지 이동하지 않도록 한다
복수 지정이 가능하며 콤마(,)로 구분한다.
all
- 기본 값. 색인 생성이나 게재에 대한 제함없음.
none
- noindex, nofollw와 같다.
og 태그는 웹 페이지를 공유할 때 보여주는 미리보기이다.
크롤러가 해당 웹 페이지를 먼저 방문 후 메타데이터를 크롤링해서 미리보기를 만들어준다.
- 페이스북, 네이버, 카카오톡 링크 공유 시 보여질 미리보기 설정
```html
<!-- 웹 페이지 URL -->
<meta property="og:url" content="www.youtube.com">
<!-- 콘텐츠 제목 -->
<meta property="og:title" content="YouTube">
<!-- 콘텐츠 설명 -->
<meta property="og:description" content="여기를 눌러 링크를 확인하세요.">
<!-- 웹페이지,콘텐츠 타입 (ex: blog,article,website..) -->
<meta property="og:type" content="video">
<!-- 미리보기 썸네일 이미지 -->
<meta property="og:image" content="../images/thumb.png">
<!-- 사이트 이름 -->
<meta property="og:site_name" content="YouTube">
```
- 트위터의 미리보기 설정
```html
<!-- 트위터 카드 타입 -->
<meta name="twitter:card" content="summary">
<!-- 콘텐츠 제목 -->
<meta name="twitter:title" content="SEO 최적화 방법">
<!-- 콘텐츠 설명 -->
<meta name="twitter:description" content="퍼블리셔의 SEO 최적화 방법 소개">
<!-- 미리보기 썸네일 이미지 -->
<meta name="twitter:image" content="../images/thumb.png">
```
웹 페이지에 접속했을 때, 상단 탭에 보여지는 아이콘을 일컫는다. 즐겨찾기에도 사용 됨
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
스타일 적용 우선순위: 인라인 스타일 > 내부/외부 스타일 시트 > 웹 브라우저 기본 스타일
<link rel="stylesheet" href="css/style.css" type="text/css">
객체(Object) 기반의 스크립트 언어로, 웹의 동작을 구현하는 언어이다. 웹 브라우저에서 사용되나, Node.js와 같은 프레임워크를 사용해서 서버 측 프로그래밍에서도 사용할 수 있다.
<body>
Element
<h1>
- 이야기의 제목. 가급적이면 페이지 당 하나의 h1만 사용한다.
<h2>
- 각 장의 제목
<h3>
- 각 장의 하위 절 제목
<form action="처리할페이지주소" method="get | post">
사용자로부터 입력을 받을 수 있고, 입력한 데이터를 서버로 보낼 수 있는 요소
action
- 입력받은 데이터를 처리할 서버 상의 스크립트 파일의 주소를 명시
method
- 입력받은 데이터를 서버에 전달할 방식을 명시
get
- 주소에 데이터를 추가하여 전달하는 방식. 데이터가 주소창에 그대로 나타나며 전송할 수 있는 데이터 크기도 제한적이다. 검색엔진의 쿼리와 같이 크기가 작고 중요도가 낮은 정보를 보낼 때 사용한다.post
- 데이터를 별도로 첨부하여 전달하는 방식. 데이터가 외부에 드러나지 않으며, 전송할 수 있는 데이터 크기 또한 제한이 없다. 보안성 및 활용성이 더 좋다.type
text / password / radio / checkbox / select / textarea / button / submit / fieldset
HTML5에 추가된 input type
number / range / color / date / time / datetime-local / month / week / email / tel / url / search
<em>
- 중요한 문구에 사용하는 요소로 화면 판독기(스크린 리더기)에 다른 톤의 목소리로 표현된다. 기울임 꼴 스타일.
<i>
- 단순 스타일로 중요한 문구에 사용하는 요소. 기울임 꼴 스타일. 사용 지양
<strong>
- 중요한 문구에 사용하는 요소로 화면 판독기(스크린 리더기)에 다른 톤의 목소리로 표현된다. 굵은 글씨 스타일.
<b>
- 단순 스타일로 중요한 문구에 사용하는 요소. 굵은 글씨 스타일. 사용 지양
<u>
- 단순 스타일로 중요한 문구에 사용하는 요소. 밑줄 스타일 . 사용 지양
<dl>
/ <dt>
/ <dd>
(Definition List) - 용어, 질문과 같은 상위 항목은 dt, 정의, 답변과 같은 하위 항목은 dd 요소를 사용
<ul>
/ <li>
(Unorderd List) - 순서가 없는 리스트
<ol>
/ <li>
(Orderd List) - 순서가 있는 리스트
<q>
- 짧은 인용구
<blockquote>
- 인용 블록 요소 | cite 속성
- 인용된 내용의 출처 URL
<abbr>
- 준말, 머리 글자를 나타낸다. | title 속성
- 준말의 전체 뜻이나 설명을 툴팁으로 제공함
<address>
- 주소를 나타낼 때 사용하는 요소
http://www.tcpschool.com/html/html_text_entities
<code>
- 일반적인 컴퓨터 코드를 표시
<pre>
- 공백을 유지하기 위해 사용하는 요소
<var>
- 변수이름을 특별하게 표시하는 요소
<kbd>
- 컴퓨터에 입력된 키보드 입력 표시하는 요소
<samp>
- 컴퓨터 프로그램의 출력을 표시
<br>
- 줄바꿈
<hr>
- 수평선
검색어 최적화 (SEO)에도 큰 도움을 주는 시멘틱 마크업 작성.
컨텐츠에 정확한 의미, 기능, 모습을 확실히 담아서 마크업 작성을 해야한다.
스타일에 의미를 줄 수 있지만, 검색 엔진과 스크린 리더에 명확한 의미를 전달하기 위해서 올바는 Element를 사용하도록 하자!
<header>
HTML 문서나 섹션(section) 부분에 대한 헤더를 정의한다.
도입부에 해당하는 콘텐츠를 가지고 있는 부분이다.
한 문서 내에 여러 개의 header가 존재할 수 있다.
<nav>
웹 페이지에서 다른 카테고리 영역으로 이동할 수 있는 링크의 집합
HTML 문서 사이를 탐색할 수 있는 링크의 집합을 정의한다.
문서 내의 모든 링크가 nav 요소에 포함되는 것은 아니다.
<main>
<section>
article과 비슷하지만 하나의 기능을 구성하는 페이지의 단일 부분을 그룹화 하는데에 사용
제목을 가지고 있으며, HTML 문서의 전체적인 내용과 관련이 있는 콘텐츠들의 집합을 의미한다.
대체로 section 요소는 HTML 문서의 전체적인 내용에 포함되며, article 요소는 문서의 전체적인 내용과는 별도의 독립적인 내용이 들어갈 때 사용하면 된다.
h1 ~ h6 함께 사용하는게 좋다.
<article>
단일 블로그 게시물과 같이 독립적인 하나의 컨텐츠를 의미한다.
article 요소의 내용은 그 자체만으로도 이해가 되어야 하며, 웹 사이트 나머지 부분과는 별도로 읽을 수 있어야 한다.
<figure>
& <figcaption>
책이나 신문 등에 포함되는 이미지 바로 아래에는 해당 이미지를 설명하는 caption이 위치하게 되는데, HTML5에서는 이와 같은 목적을 위해 figure 요소와 figcaption 요소를 제공한다.
그래픽과 비디오 등 독립적인 콘텐츠를 정의할 때 사용
<aside>
페이지의 주된 내용 이외의 다른 콘텐츠를 보여줄 때 사용
간접적으로 추가 정보를 제공하는 내용에 사용. 종종 <main>
안에 위치함
<time datetime="2016-01-20">20 January 2016</time>
<mark>
<details>
<summary>
<dialog>
<footer>