HTML Element와 구조
HTML Element와 구조
1. Element 구조
<여는 태그> 컨텐츠 </닫는 태그><태그 이름 속성 = "값"> 컨텐츠 </ 태그 이름>- 태그 안에 값은 “”권장
 
2. 콘텐츠를 감싸지 않은 요소
- 내용이 필요 없는 경우 여는 태그만 존재
 
3. 표준 호환모드
<!doctype html>웹 표준을 설정함 표준호환모드로 변환
4. 문서에 사용되는 주 언어 설정
<html lang="ko-KR">이런식으로 html에 언어를 설정해주면 시각장애인들을 위해 웹에서 해당언어로 읽어줄수 있게 설정해준다.
5. 제목과 단락
- 제목은 
태그로 감싼다  - 단락은 
태그로 감싼다
 <h1>태그는 문서에서 하나만 작성 가능
6. HTML 이미지 & 피규어 & 캡션
- 도표나 이미지 차트 등을 감싸는 태그는 
<figure>을 사용해서 감싸준다. - 이미지태그는 
<img src="이미지 경로" alt="이미지에 대한 설명"/>으로 사용해준다. <figcaption>는 이미지에 대한 캡션을 작성해주는 태그이다. (사진 밑에 사진에 대한 설명)
7. HTML 문법 유효성 검사 (validator)
validator.w3.org : 온라인으로 문법이 틀린곳이 없는지를 확인해주는 툴이다.
사이트 사용법
- URI를 사용하여 문법검사를 해주는 방법
 - File을 직접 업로드하여 문법검사를 해주는 방법
 
entitycode.com : html에 entitycode 설명이 나와있는 사이트
8. HTML 목록 디자인
목록(lists)
- 비순차 목록 (순서가 중요하지 않은 목록)
1
2
3
4<ul>
<li></li>
<li></li>
</ul> - 순차 목록(순서가 중요한 목록)
1
2
3
4<ol>
<li></li>
<li></li>
</ol> 
9. 하이퍼링크(Hyperlink)
- anchor는 웹 페이지 내에서 다른 페이지 이동을 하지않고 현재 페이지 하단 부분으로 이동하는 것을 의미한다.
1
2
3<!--a태그를 사용하여 href값에 #태그와 id값을 다음과 같이 넣어주면 해당 id의 위치로 이동하게 된다.-->
<a href="#id">achor이동</a>
<h3 id="id">여기로</h3> - hyper link는 link가 이동되는 것을 의마한다.
1
2<!--a태그를 사용하여 href값에 이동할 링크값을 다음과 같이 넣어주면 해당 링크로 이동하게 된다.-->
<a href="https://www.google.com">구글 링크로 이동</a> 
10. 그룹 디자인
다음과 같이 dl을 통해 그룹화를 해준후 dt요소와 dd요소를 사용해서 그룹화의 제목과 설명을 적어준다.
1  | <!--설명목록 (Description Lists)-->  | 
11. 인용문
1  | <!--인라인 인용문-->  | 
12. 줄바꿈(<br>)
- 단락으로 나누지 않고 줄 바꿈을 사용할 때
 <br>을 두번 사용하지 말아야한다
13. 어휘에 사용 되는 요소들
강조와 표현적인 목적으로 나눔
강조
<em>: 특정 내용의 스트레스 강조 (문장 의미를 변경)<strong>: 내용의 중요성, 심각성, 긴급성을 강조할 경우표현적인 목적
<b>: 단순히 다른 글자와 구분된 용도로 사용, 문서 요약의 주요 단어, 리뷰 제품 이름 등<i>: 다른 글자와 구분된 용도로 사용, 기술적 용어, 다른 언어(목소리), 인물의 생각 등을 표현
14. 문서의 섹션 및 메인 요소 구조화
섹션 요소에 포함되어있는 것
<header>: 일반적으로 섹션의 제목, 목차(Nav), 검색, 로고 등을 포함하여 사용<footer>: 일반적으로 섹션의 저자, 링크, 저작권 정보 등을 포함하는데 사용   
섹션 요소와 포함되어 있지 않음
<main>: 일반적으로 주요페이지 요소들 사용 여러 번을 사용해도 상관없다.  
1  | <!--잘못된 예시-->  | 
다음과 같은 구조로 크게 나뉜다.
1  | <body>  | 
15. 컨테이너 요소
아무런 의미를 가지지 않는 요소들에 사용<div>:  블럭 컨테이너<span>: 인라인 컨테이너  
16. 텍스트 레벨 시멘틱 요소
<sup> : 윗첨자 시 사용  
1  | <p>각주<sup><a href="#movehear">[1]</a></sup></p>  | 
<data> : 댓글과 같은 갯수들을 나타낼때 감싸주는 요소  
1  | <span>댓글 <data value="0">0</data></span>  | 
17. 그룹핑(Grouping) 요소
<address> : 조직의 정보를 담는 요소(footer에서 주로 사용)  
1  | <address>  | 
18. 임베디드(Embedded) 요소
01. HTML 픽쳐(Picture) 요소
<picture> 요소  
- 0개 이상의 
<source>요소와 1개 이상의를 포하맣는 컨테이너 요소
 - 다양한 스크린 환경에 맞는 적합한 이미지를 제공하기 위한 목적으로 사용
 - 최신브라우저에서는 
<source>를 인식하면<source>요소에 대한 정보를 표시, 인식하지 못하는 경우는<img>요소를 사용1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36<!--media 속성-->
<picture>
<source srcset="사진.png" media="(min-width: 600px)">
<img src="사진.png" alt="사진에 대한 설명">
</picture>
<!--type 속성-->
<picture>
<source srcset="사진.svg" type="image/svg+xml">
<img src="사진.png" alt="사진에 대한 설명">
</picture>
```
`<source>` 요소
- `<picture>`, `<audio>`, `<video>` 요소의 다중 미디어 리소스를 지정하기 위해 사용.
- 여러개 사용 가능
- media 속성을 사용하여 반응형 웹을 사용할 수 있다.
### 02. HTML 비디오(Video) 요소
`<video>` 요소
- 동영상 콘텐츠를 포함하기 위해서 사용.
- src 속성이나 `<source>` 요소을 이용해 여러 개의 동영상 소스 중 하나를 표시.
- mp4를 사용하면 요즘 모든 브라우저에서 사용 가능하기 때문에 따로 `<source>`요소를 사용하지 않아도 된다.
- 속성
- src : 비디오 파일 경로
- poster : 포스터 이미지 경로
- preload : auto(기본값) 브라우저를 미리 읽어와서 사용자 경험을 향상시키는데 목적이 있음
- controls : 재생 컨트롤러 표시 설정
- autoplay : 자동 재생 설정
- loop : 반복 설정
- mute : 소리 꺼짐
```html
<video src="비디오 path 작성" poster="비디오 포스터 path" muted>
<p>
HTML5 <code>video</code> 요소를 지원하지 않는 구형 웹 브라우저를 사용 중입니다.
<a href="http://outdatedbrowser.com/ko">최신형 브라우저로 업데이트</a> 하세요.
</p>
</video>03. HTML 오디오(Audio) 요소
<audio>요소 - 오디오는 
controls속성을 사용하여 표시해 주어야 한다. - mp3를 사용하면 요즘 모든 브라우저에서 사용 가능하기 때문에 따로 
<source>요소를 사용하지 않아도 된다. - 보통은 다음과 같이 사용해준다. 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27<figure>
<img src="이미지 path" alt="img 설명">
<figcaption>
<audio src="오디오 path 작성" controls>
<p>
HTML5 <code>video</code> 요소를 지원하지 않는 구형 웹 브라우저를 사용 중입니다.
<a href="http://outdatedbrowser.com/ko">최신형 브라우저로 업데이트</a> 하세요.
</p>
</audio>
</figcaption>
</figure>
```
### 04. HTML 트랙(Track) 요소
`<track>` 요소
- 비디오, 오디오 재생 시, 자막을 표시
- 실제 서버에서만 자막을 출력가능
```html
<video src="비디오 path">
<track kind="subtitles" src="자막 path" srclang="ko" label="한국어" default>
<track kind="subtitles" src="자막 path" srclang="en" label="영어">
</video>
<audio src="오디오 path">
<track kind="subtitles" src="자막 path" srclang="ko" label="한국어" default>
<track kind="subtitles" src="자막 path" srclang="en" label="영어">
</audio>05. HTML 인라인 프레임(iframe) 요소
<iframe>요소 - 인라인 프레임에 다른 HTML 페이질르 포함하여 화면에 표시 (구글 맵이나 유투브등)
 - 속성
- src: 프레임 소스 설정
 - width : 프레임 너비 설정
 - height : 프레임 높이 설정
 - allowfullscreen : 프레임 전체화면 설정
 
 
06. HTML 이미지 맵(map) 요소
<map> 요소
- 이미지 앱(클릭 가능한 링크 영역)을 정의하기 위해 
<area>와 함께 사용됨. - 눈에 보이지 않음
 
<area> 요소
- 이미지의 핫스팟 지역 정의, 하이퍼링크 설정. 
<map>내부에서만 사용 가능. - 이미지에 좌표 생성 도구 (https://www.image-map.net)
 - 속성
- shape
 - coords
 - href
 - target
 - alt
 - hreflang
 - download
 
 
1  | <map name="map에 이름">  | 
07. HTML 확장 가능한 벡터그래픽(SVG) 요소
<svg> 요소
- 확장가능한 백터 그래픽은 2차원의 백터 그래픽을 기술하기 위한 XML 마크업 언어.
 
19. 표 디자인
<table> 요소
- 테이블 몸체에 해당되면, 행/열 및 셀을 포함한다.
 - 복잡한 내용을 x,y축에 따라 이해하기 쉽게 데이터를 구조화하는데 테이블을 사용한다.
 - 테이블 내에 테이블 중첩사용은 안된다.
 - 테이블을 레이아웃 목적으로 사용해서는 안된다.
 area-describedby속성을 사용하여 자세한 설명과 연결해줄수 있다.- 또는 
<figure>요소에 aria-labelleby 속성을 사용해 제목(caption)을 연결해줄수 있다. <table>요소 안에는<tr>요소와<caption>요소를 갖을 수 있다.
<tr> 요소
- 테이블의 행을 가르킨다.
 <tr>요소는<th>와<td>를 갖을 수 있다.
<th> 요소
- 테이블 셀 제목
 - 속성
- scope : 행 또는 열, 행그룹, 열그룹의 제목임을 명시
 - colspan: 열을 그룹 지을때 사용
 - rowspan: 행을 그룹 지을때 사용
 
 
<tr> 요소
- 테이블 셀 내용
 - 속성
- headers : 셀 제목을 하나 이상 연결하여 읽기 용이하도록 구성할 때 사용
 - colspan: 열을 그룹 지을때 사용
 - rowspan: 행을 그룹 지을때 사용
 
 
<col> 요소
- 테이블 열을 하나 이상 묶고자 할 때 사용한다.
 - 일반적으로 colgroup 요소 내부에 포함시킨다.
 - 속성
- span : 열 묶음 개수 설정
 
 
<colgroup> 요소
- 테이블 열을 그룹을 만들고자 할 때 사용한다.
 - 내부에 col요소를 포함하거나, 포함하지 않을 수 있다.
 - 속성
- span : colgroup 요소가 col을 포함하지 않을 경우, 열 묶음 개수 설정
 
 
20. 폼 디자인
<form> 요소
- 폼은 텍스트필드, 버튼, 체크박스와 같은 폼 컨트롤을 포함하는 웹페이지의 컴포넌트를 말한다.
 - 사용자와 인터렉션을 수행한 결과 (예: 검색)를 서버로 보낼 수 있다.
 
<label> 요소
- 속성
- for : 
<input>요소의 id 값과 동일하게 만들면 해당 요소의 label이 된다. 
 - for : 
 
<input> 요소
- 사용자의 데이터를 받을 수 있는 폼 컨트롤을 말한다.
 - 다양한 유형 설정이 가능하며, 유형에 맞는 역할을 수행한다.
 - 속성
- name
 - placeholder
 - value
 - readonly
 - required
 - disabled
 - minlength
 - maxlength
 - list
 
 - type
- text
 - password
 - checkbox
 - radio
 - file
 - submit
 - button
 - image
 - reset
 - hidden
 - search
 - url
 - tel
 - date
 - month
 - week
 - time
 - datetime-local
 - number
 - range
 - color
 
 
<button> 요소
- 버튼 폼 컨트롤로 사용자의 인터렉션을 받아 액션을 트리깅 처리한다.
 - type
- submit
 - button
 - reset
 
 
<select> 요소
- 드롭 다운 메뉴 컨트롤을 말한다.
 - 내부에 
<option>요소를 포함하여 사용자에게 선택할 수 있도록 한다. <option>요소를 묶어 그룹으로 만들고자 한다면<optgroup>요소를 사용하고<label>속성을 사용해 그룹 이름을 설정한다.- 속성
- name
 - multiple
 - disabled
 - required
 - size
 
 
<textarea> 요소
- 멀티라인 일반 텍스트 편집 컨트롤을 말한다.
 - 속성
- name
 - placeholder
 - rows
 - cols
 - readonly
 - required
 - disabled
 - minlength
 - maxlength
 
 
<filedset> 요소
- 하나 이상의 폼 컨트롤을 그룹화 하는데 사용됨
 - 속성
- name
 - disabled
 
 
<legned> 요소
<filedset>컨트롤의 레이블을 설정하는 컨트롤
<output> 요소
- 계산된 결과를 출력하는 컨트롤
 - 속성
- name
 - for
 
 
<datalist> 요소
- 데이터 목록 요소 컨테이너 컨트롤
 - 내부에 
<option>요소를 사용해 항목을 만든다. 
<progress> 요소
- 작업의 완료 진행 상황을 표시하는데 사용되는 컨트롤
 - 속성
- value
 - max
 
 
<meter> 요소
- 알려진 범위 내에서의 스칼라 측정 또는 분포 비율을 나타내는 컨트롤 (게이지라고도 부른다.)
 - 디스크 사용 현황, 쿼리 결과의 관련성, 특정 후보에 대한 투표율 등이 해당됨.
 - 속성
- value
 - max
 - min
 - low
 - high
 - optimum
 
 
21. 인터랙티브 요소(, , 
,
<details> 요소
- 디스클로저 위젯으로 정보를 감추거나, 펼처서 보여준다.
 - 모든 정보를 일시에 고액하지 않고 사용자의 요구에 맞춰 정보를 공개할 수 있다.
 - 아코디언 컴포넌트와 비슷하게 작동한다.
 - 속성 
- open : 페이지 로딩 시, 위젯을 표시하도록 설정
 
 
<summary> 요소
<details>요소의 레이블/ 제목(캡션), 요약(서머리) 등을 표시한다.- 폼 
<filedset>요소의 제목을<legend>요소가 표시하듯 비슷하다. 
<dialog> 요소
- 사용자의 결정 또는 정보 입력을 요구하는 컴포넌틀를 말함.
 - ‘모달 윈도우’ 또는 대화상자로도 불린다.
 - 속성 
- open : 페이지 로딩 시, 위젯을 표시하도록 설정
 
 
22. 스크립팅 요소들
<script> 요소
- JS 코드 또는 파일을 HTML 문서에 작성하거나, 연결할 때 사용한다.
 - 속성 
- src
 - type
 - async
 - defer
 
 
<noscript> 요소
- 사용자의 웹 브라우저 환경에서 스크립트를 지원되지 않거나, 스크립트가 꺼져있는 경우, 문서에 표시될 문구를 삽입한다.
 
<canvas> 요소
- JS를 사용하여 그래픽을 그릴 떄 사용한다.
 - 2D 또는 WebGL 컨텍스트 객체를 추출해 그래픽을 그릴 수 있다.
 
23. 사용자와 상호작용하는 속성(인터랙티브 요소)
hidden 속성
<div>요소 안에 속성으로hidden을 넣어 놓으면 화면에서는 보이지 않는다. JS를 통해 조작 가능하다.
tabindex 속성
- 요소를 키보드로 탐색할 수 있도록 설정하거나, 제외 또는 순서대로 탐색할 수 있도록 설정할 수 있다.
 - 속성값으로 0을 주면 비포커스 요소(
<div>등)에 포커스를 적용해야 할 경우 사용된다. - 속성값으로 -1을 주면 포커스 순서에서 제외시킬 수 있다.
 - 기본적 포커스 가능한 요소들
- 폼컨트롤 요소 : 
<input>,<button>,<textarea>,<select>등 - href 속성을 가진 요소 : 
<a>,<area> - controls 속성을 가진 요소 : 
<video>,<audio> 
 - 폼컨트롤 요소 : 
 
accesskey 속성
- 모든 HTML 요소는 accesskey 속성을 가질 수 있다. 속성 값은 키보드 단축키로 설정된다.
 - accesskey 속성의 단축키는 브라우저와 운영체제 플랫폼에 의존하고 있어 운영체제마다 단축키가 달라진다.
 
contenteditable 속성
- 설정된 요소는 사용자가 직접 편집할 수 있도록 만들어 준다.
 - ture(“””) or false로 설정하고 false면 사용자가 수정하지 못하고 빈문자열이나 true일 때는 수정 가능하다.
 
draggable 속성
- drag가능
 
HTML Element와 구조



