
웹 페이지를 구성하고 있는 요소(element) 하나하나를 "태그(Tag)"라는 표기법으로 작성한다.
태그를 통해 어떤 요소인지 (제목, 본문, 이미지, 비디오 등) 명시한다.
태그의 이름은 HTML5 웹 표준에 맞게 작성한다.
여는 태그(Opening tag): <요소의 이름>
닫는 태그(Closing tag): </요소의 이름>
내용(Content): 요소의 내용
요소(Element): 여는 태그, 닫는 태그, 내용을 통틀어 요소(element)라고 한다.
--> 여는 태그 & 닫는 태그는 사용자에게는 보이지 않는다. == 개발자가 명시하기 위한 용도이다.
[ 사용자에게는 내용만 보인다. ]
<h1>This is Title!</h1>
<h2>fix you</h2>
<p>
Lights will guide you home, And ignite your bones, And I will try to fix you.
</p>
html은 줄바꿈을 무시한다. (3~5 Line)
각 태그 사이에 있는 Text가 내용이다.
<title>, <Title>, <tItle>, ... --> 전부 동일하게 인식한다.
태그 요소 이름의 경우 대소문자를 구분하진 않지만, HTML5에서는 모두 소문자로 작성하는 것을 권장한다.
일관성 있는 html 문서 작성과 가독성을 위해서 반강제되는 내용이다.
내용(content)이 없다면? (이미지, 수평선, 줄바꿈, ...)
내용이 없는 요소를 빈 요소(Empty element)라고 부른다.
--> 닫는 태그를 추가로 명시하지 않아도 된다.
Empty element, Self-Closing element, Void element, Single tag, ...
빈 요소로 쓰일 수 있는 태그와 쓰일 수 없는 태그는 정해져 있다.
--> <p></p> 와 같이 내용만 비운다고 해서 빈 요소가 되는 것은 아니다!!
<빈 요소명> & <빈 요소명/> : 같은 의미 (Optional)
But, 일관성 있게 사용하자.
<br>
<hr>
<img src="http://url">
<meta charset="UTF-8">
<input type="text" name="name">
요소 안에 다른 요소가 들어가는 포함관계를 성립할 수 있다.
여러 요소가 중첩된 경우 : 열린 순서의 반대로 Tag 가 닫혀야 한다.
포함관계를 구분하기 위해 들여쓰기(Indent)를 사용한다. --> 가독성도 함께 올라간다.
<html>
<head>
<title>요소의 중첩</title>
</head>
<body>
<h1>요소 안에 <strong>다른 요소가</strong> 들어갈 수도 있습니다!</h1>
<ul>
<li>하나</li>
<li>둘</li>
<li>셋</li>
</ul>
</body>
</html>
- 내용(content) 의 구성요소는
1. 텍스트
2. 다른 요소
가 될 수 있다.
< 주석의 목적 >
- 코드에 메모를 추가
- 사용하지 않는 코드를 임시로 처리
<p>I'm not inside a comment</p>
<!-- <p>I am!</p> -->
<!DOCTYPE html>
<html>
<head>
<!-- HEAD 영역 -->
</head>
<body>
<!-- BODY 영역 -->
</body>
</html>
<!DOCTYPE html> : 문서의 종류를 나타낸다.
html : 페이지 전체의 컨텐츠를 감싸는 루트(root) 요소 (최상위 요소)
head : 웹브라우저 화면에서 직접적으로 나타나지는 않는 웹페이지의 정보
-- meta : 문서의 일반적인 정보와 문자 인코딩(Encoding)을 명시
-- title : Chrome 기준 상단 '탭' 제목
body : 웹브라우저 화면에 나타나는 모든 콘텐츠(내용)
<head> 태그에 관한 MDN Info.
🦊 https://developer.mozilla.org/ko/docs/Web/HTML/Element/head
<body> 태그에 관한 MDN Info.
🦊 https://developer.mozilla.org/ko/docs/Web/HTML/Element/body
--> body 는 속성을 지정하기보다 단독으로 사용된다.
단독으로 사용했을 때에는 눈에 보이지 않는다.
여러가지 요소들을 묶어서 그룹화한다.
--> Item 들을 담는 용도로 사용된다. == Item이 없으면 눈에 보이지 않는다.
상자를 아래로 쌓는 것!
블록 레벨 요소는 언제나 새로운 줄에서 시작한다.
좌우 양쪽으로 최대한 늘어나 가능한 모든 너비를 차지한다.
인라인 요소는 줄의 어느 곳에서나 시작할 수 있다.
바로 이전 요소가 끝나는 지점부터 시작한다.
--> 요소의 내용(content)만큼만 자리를 차지한다.
다른 인라인 요소와 한 줄에 중첩되어 사용 가능하다.
Block과Inline특성의 혼종이다. (?)
기본적으로 인라인 요소처럼 전후 줄바꿈 없이 한 줄에 다른 엘리먼트들과 나란히 배치된다.
But, inline에서 불가능하던 width와 height 속성 지정 및 margin과 padding 속성의 상하 간격 지정이 가능해진다.
📦 포함 규칙
- 같은 형태의 다른 요소를 안에 포함할 수 있다.
(블록 > 블록, 인라인 > 인라인)- 대부분의 블록 요소는 다른 인라인 요소도 안에 포함할 수 있다.
(블록 > 인라인)- !! 인라인 요소는 블록 요소를 포함할 수 없다. !!
HTML5 부터 비슷한 특징을 가진 요소끼리 묶어서 7가지 카테고리로 세분화한다.
하나의 HTML 요소가 여러 콘텐츠 카테고리 내의 포함관계에 들어갈 수도 있다.
- 메타데이터 콘텐츠 (Metadata Content) : 문서의 메타 데이터(정보), 다른 문서를 가리키는 링크 등을 나타내는 요소
- 플로우 콘텐츠 (Flow Content) : 웹 페이지상에 메타데이터를 제외하고 거의 모든 요소.
- 보통 텍스트나 임베디드 콘텐츠를 포함한다.- 섹션 콘텐츠 (Section Content) : 웹 문서의 구획(Section)을 나눌 때 사용
- 헤딩 콘텐츠 (Heading Content) : 섹션의 제목(heading)과 관련된 요소
- 프레이징 콘텐츠 (Phrasing Content) : 문단에서 텍스트를 마크업 할 때 사용
- 임베디드 콘텐츠 (Embedded Content) : 이미지나 비디오 등 외부 소스를 가져오거나 삽입할 때 사용되는 요소
- 인터렉티브 콘텐츠 (Interactive Content) : 사용자와의 상호작용을 위한 컨텐츠 요소