개발냥발/FE (FrontEnd)👩🏻‍💻

HTML 익히기❗

승이버섯 2022. 5. 9. 11:09

 

1. HTML이란?

HTML (Hyper Text Markup Language) : 웹에서 내용을 파악하기 쉽게 문서화하는 언어, 웹페이지를 만드는 언어. 확장자가 .html이다. 90년대 초반에 개발됨. 영국의 물리학자 팀 버너스 리가 개발. 웹 사이트들은 모두 HTML을 사용하여 만들어짐.

Hyper Text : (텍스트 그 이상, 텍스트를 초월하는.) == 링크

Markup Language : 프로그래밍 언어의 한 종류. 정보를 구조적, 계층적으로 표현 가능한 언어라는 게 특징.

 

 

 

 

2. HTML 문법

2-1. 태그 : 무언가를 표시하기 위한 꼬리표! 각각의 태그들이 모여서 하나의 요소를 만들고, HTML 문서를 만들어낸다!

HTML은 태그들의 집합! 태그는 HTML에서 가장 중요하고 기본이 되는 규칙

<태그 이름> (시작 태그) _화면에 나타나는 내용_ </태그 이름> (종료 태그)

요소 : 내용을 포함한 태그 전체

 

2-2. 속성 : 태그에 추가로 정보 제공, 태그의 동작이나 표현을 제어할 수 있는 설정값

태그에 고유한 이름을 주거나, 이동할 경로를 명시

이름으로 이루어짐. ( 속성 이름=“속성값” )

(ex) <h1 id=“title”></h1> : h1id 속성을 추가해 title값 선언

여러 속성을 선언할 때에는 공백으로 구분! 속성의 선언 순서는 태그에 영향 X.

종류에 따라, 모든 태그에 사용할 수 있는 글로벌 속성과, 특정 태그에서만 사용할 수 있는 속성으로 구분

 

2-3. 태그 중첩 : 태그 안에 또 다른 태그 사용하기

중첩을 통해 부모 태그와 자식 태그의 관계 생성

중첩되는 태그는 부모 태그를 벗어나서는 X.

(ex) <h1>Hello, <i></i> </h1>

태그 안에서는 중첩이 얼마나 되는지, 어떤 태그를 쓰는 지는 상관 . 근데 때에 따라 정해진 태그만 중첩 가능. 태그의 구조 특성으로 인해 중첩할 수 없는 경우도

 

2-4. 빈 태그 : 1쌍의 태그들 사이에 내용이 없다!

빈 태그는 태그의 중첩이 불가

빈 태그는 내용이 없으므로, 종료 태그가 필요하지 X

(빈 태그 ex) <br>, <img src=“”>, <input type=“”>

빈 태그는 내용만 비어있을 뿐, 속성을 통해서 화면에 나타내거나, 화면에 표시되지 않더라도 다른 용도로 사용됨.

대표적인 경우는 브라우저가 직접 화면에 내용을 그려줘야하는 경우! 이런 태그는 브라우저가 내용을 대체한다고 해서 replacement 태그라고 함. (ex) <img> 태그

빈 태그에는 대체되는 태그만 있는 것은 아니고, 실제로 화면에 출력될 내용이 없어서, 다른 용도(문서 내부적으로 부가적인 정보 제공)로 쓰이는 태그도 존재. (ex) <br> 태그

 

2-5. 공백 : HTML 공백은 일반 텍스트 공백과는 차이

기본적으로 HTML두 칸 이상의 공백과 개행, 여러 줄의 개행을 모두 무시

이러한 공백처리 방식은 css로 제어 가능

 

2-6. 주석 : 화면상에 표시 X. 코드 상에만 노출됨. 메모의 목적으로만 사용

<!-- 여기에 작성되는 내용들은 모두 주석 처리됨! -->

<!--

주석은 여러 줄로 작성 가능

-->

 

2-7. 문서의 기본 구조 : 웹페이지를 만들기 위한 가장 기본이 되는 정보는 HTML 문서 구조!

브라우저는 HTML 문서 구조를 통해 HTML 버전, 문서의 제목, 정보, 내용 등을 파악

HTML 기본 구조 : 웹 문서를 작성할 때 반드시 필요한 기본적인 내용. 크게 문서 타입 정의<html> 요소로 구분!

 

<!DOCTYPE html>

  <html lang="ko">

     <head>

       <meta charset="UTF-8">

       <title>HTML</title>

     </head>

   <body>

       <h1>Hello, HTML</h1>

  </body>

 </html>

 

문서 타입 정의 : DTD(doctype). 이 문서가 어떤 버전으로 작성되었는지 브라우저에 알려주는 선언문. 반드시 문서 내 최상단에 선언되어야 함! 작성 안하면 비표준 방식으로 해석.

<html> 요소 : 문서 타입 선언 후 <html>태그 나와야함. 자식으로는 <head>태그와 <body>태그 있음.

<html> 태그의 lang 속성 : 문서가 어느 언어로 작성되었는지!

<head> 태그에 위치하는 태그들은 브라우저 화면에 표시 X. 대신 문서의 기본 정보 설정이나 외부 스타일시트 파일 및 js 파일 연결하는 등의 역할.

<meta> 태그의 charset 속성 : 문자의 인코딩 방식 지정.

<body> 태그 : 실제 브라우저 화면에 나타나는 내용들이 들어감! 태그들 대부분이 여기에 해당됨.

 

 

 

 

3. HTML 태그

3-1. 제목과 단락 요소

제목(Heading) 태그 : <h>

문서 내에 제목을 표현할 때!

태그 이름은 h (heading 줄임말), 제목의 레벨에 따라 <h1>~<h6>

<h1>은 해당 페이지를 대표하는 큰 제목. 숫자 수록, 수준 소제목

현재 웹 페이지의 내용은, 제목과 본문 식의 문서 형태 < 이미지나 그림처럼 시각적인 형태라서 <h6>까지는 잘 안씀.

제목 태그를 사용하면, 일반 텍스트보다 더 강조되는 스타일! (브라우저가 default로 제공)

 

단락(paragraph) 태그 : <p>

본문에 해당하는 내용

태그 이름은 p (paragraph 줄임말)

<p>를 사용해서 단락으로 구분하면 자연스럽게 개행이 됨!

블록 레벨 태그

 

개행 태그 : <br>

<p> 내부에서 임의로 개행할 때, 또는 개행을 위해 쓰이는 태그! (html은 두 칸 이상의 공백 및 개행을 무시하므로, 실제 코드창에 개행을 하더라도 화면에 나타나지 X)

태그 이름은 br (linebreak 줄임말)

<br>은 닫기 태그 X, 내용 X. <br>은 빈 태그

개행하고자 하는 곳에서 <br>을 선언하면 개행이 됨!

 

 

3-2. 텍스트를 꾸며주는 요소

웹 표준화가 대두되면서 웹문서의 구조와 표현이 분리됨. 그 과정에서 많은 표현용 태그가 사라졌고, 지금은 표현용 태그가 별로 없음. 아래 태그들은 의미없는 표현용 태그들 & 인라인 레벨 태그임.

<b> : bold 태그. 글자를 굵게 표현!

<i> : italic 태그. 글자를 기울여서 표현! (HTML5 버전에서는 <i>태그가 단순 표현용 태그에서 의미를 가지는 태그로 변경됨! 특정 이유(기술 용어, 외국어 문구, 소설 속 인물의 생각 등)로 다른 글자와 구분하기 위해 사용됨.)

<u> : underline 태그. 글자의 밑줄을 표현!

<s> : strike 태그. 글자의 중간선을 표현!

이외에도 텍스트 관련 태그는 https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics 에 더 자세히 있음!

 

3-3. 앵커 요소

앵커 태그 <a> : anchor의 줄임말. 링크를 생성하는 태그! 앵커 태그를 이용해 다른 페이지로 이동하거나, 현재 페이지 내에서 특정 위치로 초점 이동 가능! HTML의 가장 큰 특징이 되는 태그.

href(hypertext reference) 속성 : href 속성의 값은 링크의 목적지가 되는 URL. 링크를 만들기 위해 <a> 태그가 반드시 가져야하는 속성이 href 속성!

target 속성 : 링크된 리소스를 어디에 표시할지를 나타내는 속성!

target의 속성값

_self : 현재 화면에 표시. target 속성이 선언되지 않았을때의 기본값이 _self.

_blank : 새로운 창에 표시. 외부 페이지가 나타나게끔 함.

_parent, _top : 프레임이라는 특정 조건에서만 동작하는 속성. (근데 최근에는 프레임을 잘 안씀.)

기타 속성 : https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a (obsolete attributes : 폐기된 속성들)

내부 링크 : <a>를 통해 페이지 내부의 특정 요소로 초점 이동 가능! 이게 내부 링크.

내부 링크를 사용할 때는 href 속성값에 #를 쓰고, 그 뒤에 페이지 내에서 이동하고자 하는 요소의 id 속성값을 적으면 됨!

보통 페이지의 최상단으로 이동할려고 할 때, 내부 링크 사용. 웹페이지에 있는 top 버튼이 내부 링크에 해당.

 

3-4. 의미가 없는 컨테이너 요소

태그 자체에 아무 의미 X. 단순히 요소들을 묶기 위해 사용되는 태그. 사용빈도 매우 높음!! (html 태그들은 기본적으로 문서에 최적화되어있는데, 현재 웹의 형태는 문서 형태에서 많이 벗어났으므로)

스타일을 주거나, 서버에 보내는 데이터를 담기 위한 용도로 쓰임.

가장 대표적으로 많이 쓰이는 의미가 없는 태그 : <div>, <span> (모두 의미가 없는 태그이므로, 실제 브라우저도 별다른 스타일 적용 X.)

<div> : division의 줄임말. 블록 레벨 테그. 블록 레벨 요소는 기본적으로 한 줄을 생성해서 내용을 표현.

<span> : 인라인 레벨 태그. 인라인 레벨 요소는 블록 레벨 요소의 한 줄 안에서 표현되는 요소.

 

3-5. 리스트 요소

리스트 : 일련된 항목들이 나열된 것들.

<ul> : unordered list. 순서가 없는 리스트를 표현할 때 사용하는 태그. <ul>을 선언한 후 그 안에서 <li>를 사용해 각 항목을 나타내서 사용!

<ol> : ordered list. 순서가 있는 리스트를 표현할 때 사용하는 태그. <ol>을 선언한 후 그 안에서 <li>를 사용해 각 항목을 나타내서 사용!

<dl> : definition/description list. 용어와 그에 대한 정의를 표현할 때 사용하는 태그.

<ul>, <ol> : 항목을 단순히 나열하는 구조! but <dl> : 용어와 설명이 하나의 세트로 항목을 이루고, 하나 이상의 항목으로 리스트가 이루어지는 구조!

<dt> : 용어를 나타내는 태그

<dd> : 용어에 대한 정의 또는 설명을 나타내는 태그

용어 하나에 여러 정의가 들어갈 때, <dd>1개 이상 쓸 수 O

 

3-6. 이미지 요소

<img> : 문서에 이미지를 삽입하는 태그. 닫는 태그가 없는 빈 태그!

src 속성 : 이미지의 경로를 나타냄. <img>의 필수 속성!

상대경로와 절대경로

상대경로 : 현재 웹페이지를 기준으로 상대적으로 이미지의 위치를 나타냄.

절대경로 : 실제 그 이미지가 위치한 곳의 전체 경로.

alt 속성 : 이미지의 대체 텍스트(이미지를 대체하는 글)를 나타내는 속성. 웹 접근성 측면에서 중요한 속성. src 속성과 더불어 필수적임!

width/height 속성 : 이미지의 가로/세로 크기를 나타내는 속성. 값의 단위 필요 X. 값을 입력하면 자동으로 픽셀 단위로 계산됨. 이미지의 크기가 고정적이라면 선언하는 게 성능 측면에서 좋은 속성. 선언 안하면 이미지는 원본 크기대로 노출됨. 둘 중 하나만 선언하면 다른 한 속성은 자동으로 비율에 맞게 변경됨.

(+) 이미지 파일 형식 : gif(제한적인 색을 사용하고 용량이 적으며 투명 이미지와 애니메이션 이미지를 지원), jpg(사진이나 일반적인 그림에 쓰이며 높은 압축률과 자연스러운 색상 표현을 지원(투명 지원X)), png(이미지 손실이 적으며 투명과 반투명을 모두 지원)

 

3-7. 테이블 요소

데이터를 표로 나타낼 때!

: (내용이 들어가는 하나의 칸)으로 이루어짐.

row : 표의 행. 가로 방향.

column : 표의 열. 세로 방향.

<table> : 표를 나타내는 태그

<tr> : 행을 나타내는 태그

<th> : 제목 셀을 나타내는 태그

<td> : 셀을 나타내는 태그

하나의 <table>은 하나 이상의 <tr>로 이루어짐. <tr>은 셀을 나타내는 <th>, <td>를 자식으로 가짐.

표를 구성할 때는 위아래로, 좌측우측으로 작성.

브라우저에서 제공하는 테이블의 default 스타일에는 테두리가 X. style을 따로 써줘야함.

 

표의 구조와 관련된 태그

표를 구조적으로 파악하기 위해!

<caption> : 표의 제목

<thead> : 제목 행을 그룹화

<tfoot> : 바닥 행을 그룹화. (위치는 <tbody>의 뒤에 위치해야함!)

<tbody> : 본문 행을 그룹화

 

복잡한 표를 만들 때, <colgroup>, <col>, scope 속성, header 속성들이 자주 사용됨

 

 

 

 

4. HTML 콘텐츠 모델, 시멘틱마크업, 블록&인라인

4-1. 콘텐츠 모델 : HTML5에서 요소의 종류를 정의하는 규칙에 대해, 비슷한 성격의 요소들끼리 그룹화한 것

Content Models7분류

Metadata : 콘텐츠의 스타일, 동작을 설정하거나 다른 문서와의 관계 등 정보를 포함하는 요소들이 포함됨. (메타 태그, 타이틀 태그, 스타일 태그, 링크 태그가 이에 해당. 대부분 <head>내에 들어간다는 것이 특징)

Flow : 문서의 자연스러운 흐름에 의해 배치되는 요소들이 포함됨. (Metadata에 해당하는 일부 태그들만 Flow에서 제외됨. 요소들의 대부분이 Flow에 포함됨.)

Sectioning : 문서의 구조와 관련된 요소들이 포함됨. (HTML5에서 새로 생긴 <article>, <aside>, <nav>, <section> 등이 포함되며 이 태그들은 문서의 구조, 아웃라인에 영향을 줌.)

Heading : sectionheader를 정의하는 heading 태그가 포함됨.

Phrasing : 문서의 텍스트 또는 텍스트를 꾸며주는 문단 내부 레벨로 사용되는 요소들이 포함됨.

Embedded : 외부 콘텐츠를 표현하는 요소들이 포함됨. 오디오나 비디오, 이미지 등 멀티미디어 관련 요소들이 이에 해당.

Interactive : 사용자와 상호작용을 하는 요소들이 포함됨. 대표적으로 form 요소들이 이에 해당

 

4-2. 시멘틱 마크업 : 종종 POSH(Plain Old Semantic HTML)라고도 불리는데, 단어 그대로 평범하고 오래된 의미론적인 HTML이라는 뜻. 시멘틱 = 기계(컴퓨터, 브라우저)가 잘 이해할 수 있도록 하는 것을 뜻함.

시멘틱 마크업은 적절한 HTML 요소를 올바르게 사용하는 것에서 시작!

정해진 약속을 잘 지키면 됨! (= 마크업 할 때는 의미에 맞는 태그, 요소를 사용하는 것이고, 문서를 표현할 때는 구조화를 잘 해주는 것!)

정해진 약속대로 코드를 작성하게 되면 결국 기계뿐 아니라 사람도 이해하기 쉬운 코드가 됨! (그래서 중요함)

<b> vs <strong> (중요하다는 의미를 포함할때는 후자가 적절하고 시멘틱한 마크업임!)

<i> vs <em> (전자 : 단순히 기울어진 글자 / 후자 : 글자의 특정 부분 강조)

<u>, <s> vs <ins>, <del> (전자 : 단순히 글자에 선 / 후자 : 내용이 새롭게 추가됨/삭제됨 의미)

 

4-3. HTML5 시멘틱 요소

아래는 HTML5에서 새로 생긴 Sematic 요소들!

<article>, <aside>, <figcaption>, <figure>, <footer>, <header>, <main>, <mark>, <nav>, <section>, <time>

참고 URL : https://developer.mozilla.org/en-US/docs/Glossary/Semantics

 

4-4. 블록&인라인 : 요소들이 7개의 콘텐츠 모델로 분류되기 전에, 요소들이 구분되었던 2가지 기준!

Block Level 요소 : 한 줄에 하나의 요소 표시. 부모 요소의 가로 영역에 맞게 꽉 채워져 표현되는 요소

양옆으로 다른 요소가 배치되지 않게 박스를 생성하므로, 박스의 위아래로 줄 바꿈이 생김.

일반적인 모든 요소(블록, 인라인 레벨 등)를 포함 가능.

(ex) div, h1~h6, p, ul, li, table ...

 

Inline Level 요소 : 한 줄에 여러개의 요소 표시. 하나의 라인 안에서 자신의 내용만큼의 박스를 만드는 요소

라인의 흐름을 끊지 않고 요소 앞 뒤로도 줄 바꿈이 되지 않아 다른 인라인 요소들이 자리 가능.

인라인 레벨 요소는 블록 레벨 요소의 자식으로 분류됨. 그래서 인라인 레벨 요소는 블록 레벨 요소를 포함 X.

HTML5 버전에서 생겨난 한가지 예외 경우가 있는데 <a>는 인라인 레벨 요소지만, 자손으로 블록 레벨 요소를 가질 수 O

(ex) span, i, img, em, strong, a ..."

 

 

 

학습한 강의 : https://www.boostcourse.org/cs120/joinLectures/33586

'개발냥발 > FE (FrontEnd)👩🏻‍💻' 카테고리의 다른 글

React 익히기❗  (0) 2022.05.30
Javascript 활용하기❗  (0) 2022.05.25
Javascript 익히기❗  (0) 2022.05.16
CSS 익히기❗  (0) 2022.05.09
Git 과 Github 익히기❗  (0) 2022.05.01