HTML | HyperText Markup Language
KT 에이블스쿨 6기 HTML에 진행한 강의 내용 정리한 글입니다.
웹 개발 이해
웹 표준 & 마크업 언어
웹 표준
웹에서 표준적으로 사용되는 기술이나 규칙
- 표준화 단체인 W3C가 권고한 표준안에 따라 웹사이트를 구성하는 HTML, CSS, JS등에 대한 규정이 담겨 있음
- 브라우저 종류 및 버전에 따른 기능 차이에 대하여 호환이 가능하도록 제시된 표준
- 궁극적인 목적으로는 사용자가 어떠한 브라우저를 사용하더라도 동일한 결과를 보이게 하는 것
마크업 언어
웹에서 사용된 문서가 어떻게 구조화되는지 나타내는 언어
- 대표적으로는 HTML, XML, SGML, SVG 등이 있음
- HTML은 사용하기 편리하고 단순한 구조를 가지고 있어 폭발적인 인터넷 보급에 기여한 언어
웹 개발자의 역할
웹 개발자 인터넷에서 사용되는 웹사이트나 웹 어플리케이션을 만드는 사람
- 웹 페이지를 디자인하고 개발하며, DB(Database)에 연동하여 사용자의 데이터를 저장하거나 요청에 대한 응답을 처리함
- 프론트엔드 개발과 백엔드 개발을 나눠서 개발을 진행
백엔드
- 사용자가 볼 수 없는 환경을 구성하는 영역
- 프론트엔드에서 구현된 기능들이 서버에서 동작하는 기능을 구현
- 주로, 서버 분야로 서버가 터지지 않게 하고, 응답 시간을 최적화하거나 데이터를 저장 및 관리함
프론트엔드 개요
프론트엔드 개념
프론트엔드
- 프론트엔드는 사용자가 볼 수 있는 화면, 즉 사용자 인터페이스(User Interface, UI)
- 화면상 보이는 디자인과 이미지, 텍스트 등을 포함하며, 사용자와 웹이 직접 상호작용하는 부분
- 웹 개발자는 사용자의 경험에 맞춰 서비스를 최적의 인터페이스로 갖추는 것이 중요
- 사용하는 언어로는 HTML, CSS, JavaScript 등이 있음
프론트엔드 개발자의 역할
프론트엔드는 주로 사용자의 인터페이스(User Interface, UI)와 사용자 경험(User Experience, UX)을 디자인하고 구현
- 사용자와 직접적으로 상호작용 하는 부분을 담당하여 개발
- 반응형 웹 디자인: 다양한 장치와 화면 크기에 맞게 콘텐츠를 적절하게 표시하기 위한 디자인
- 프론트엔드 성능 최적화: 로딩 시간을 줄이고 효율적인 코드를 작성하여 사용자 경험을 개선
- 크로스 브라우징 호환성: 다양한 브라우저에서 웹 사이트나 애플리케이션이 개발자의 목적에 맞게 작동
- 웹 표준 및 접근성 준수: 웹 표준을 준수하여 사용자와 장치에서의 접근성이 높은 사이트를 구축
사용자 인터페이스 & 사용자 경험
사용자 인터페이스
- 반응형 웹 디자인: 다양한 장치와 화면 크기에 맞게 콘텐츠를 적절하게 표시하기 위한 디자인
- 프론트엔드 성능 최적화: 로딩 시간을 줄이고 효율적인 코드를 작성하여 사용자 경험을 개선
- 크로스 브라우징 호환성: 다양한 브라우저에서 웹 사이트나 애플리케이션이 개발자의 목적에 맞게 작동
- 웹 표준 및 접근성 준수: 웹 표준을 준수하여 사용자와 장치에서의 접근성이 높은 사이트를 구축
사용자 경험
- 사용자가 제품, 시스템, 서비스를 이용하면서 경험하는 전반적인 감정과 반응을 뜻함
- 사용자가 해당 플랫폼을 얼마나 쉽고 편하게 효과적으로 사용할 수 있는지를 포함
- 사용성: 직관적인 인터페이스, 명확한 지침 등 서비스가 사용하기 쉬워야 함
- 접근성: 모든 사용자 특히 장애를 가진 사용자도 서비스에 쉽게 접근하고 사용할 수 있어야 함
- 효율성: 사용자의 목표를 빠르고 효과적으로 달성해야 함
HTML 문서의 구조
웹 페이지를 생성하기 위한 표준 마크업 언어
- 웹 페이지의 구조를 설명
- 웹 페이지의 콘텐츠를 정의
- 일련의 요소(Element)로 구성
- 요소들은 브라우저에 콘텐츠를 표시하는 방법을 알려줌
- 요소는 콘텐츠의 레이블을 지정
- 초기 웹의 응용 분야에서 추가로 필요한 기능을 구현하기 위해 HTML5가 출현
HTML5의 특징
- 구조적 설계: 콘텐츠의 본문과 이외의 부분을 분류하였고, header, section, footer, nav, aside등으로 구분
- CSS3: 스타일을 적용하기 위해 사용하는 언어로, CSS1에서 기능을 추가한 CSS3을 지원
- JavaScript: 동적인 웹 페이지를 제작하기 위해 활용되는 언어
- 다양한 API 제공: 드래그 앤 드롭, 웹 스토리지, 웹소켓 API 등 다양한 API를 제공
- 멀티미디어 기능 강화: video, audio, canvas 등의 태그를 활용할 수 있고 플래시 같은 플러그인을 설치하지 않아도 동작
- 모바일 웹 지원: 아이폰이나 안드로이드에서도 동일하게 구현
HTML 문서 기본 구조
1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html>
<head>
<title>제목</title>
</head>
<body>
<p>콘텐츠 내용</p>
</body>
</html>
<!DOCTYPE html>
과<html>
,<head>
,<title>
,<body>
4개의 기본 태그가 있음- 문서 형식 선언
<!DOCTYPE html>
- 문서가 어떤 마크업 언어 형식으로 작성되었는지 명시
- ‘HTML5로 작성되었다’는 의미
- 문서의 시작과 끝
<html>
- 실제 문서 내용 표시
lang
속성 추가 가능- 한국어는
ko
, 영어는en
등을 속성값으로 입력 - 여는 태그는 문서 시작, 닫는 태그는 문서 끝
- 문서의 제목
<title>
- 입력한 제목이 웹 브라우저의 탭에 표시
- 화면에 표시된 콘텐츠
<body>
- HTML5 문서 본문 작성 공간
<body>
태그 안에 텍스트, 이미지, 미디어 요소 등 다양한 태그 추가 가능
HTML 문서 작성 규칙
- 태그 이름은 대소문자 구분 없음
<body>
,<BODY>
,<Body>
모두 같은 태그
- W3C는 소문자 사용 권장
- 연속된 공백과 줄바꿈은 하나의 공백으로 처리
- 들여쓰기로 태그 포함 관계 표현
- 시작 태그와 종료 태그 쌍이 겹치지 않게 작성, 종료 태그 반드시 사용
- 주석은
<!--
로 시작하고-->
로 끝내야 함
기본 태그
태그의 속성(Attribute)
- 태그의 종속적 정보 표현
- 하나의 태그에 같은 속성은 한 번만 사용 가능
- 속성에 값이 없으면 속성 이름만 작성 가능
- 태그의 동작이나 표현 제어
- 각 태그마다 고유한 속성 존재
속성 | 설명 |
---|---|
id | 문서에서 유일한 식별자 설정, CSS나 JS에서 요소 찾을 때 사용 |
class | 요소의 클래스 설정, CSS에서 스타일 적용 또는 JS에서 요소 선택시 사용 |
style | 요소에 인라인 스타일 적용, CSS 속성들을 ‘속성: 값’ 형식으로 설정 |
title | 요소에 추가 정보 제공하는 텍스트 설정 |
href | <a> 태그에서 링크 대상 URL 설정 |
src | <img> , <audio> , <video> , <script> 태그에서 외부 리소스 경로 설정 |
alt | <img> 에서 이미지 설명 대체 텍스트 제공 |
type | 요소의 타입 설정 |
value | <input> , <option> , <button> 등에서 요소 값 설정 |
placeholder | <input> , <textarea> 에서 입력 전 표시되는 안내 텍스트 설정 |
selected | <select> 요소 내 <option> 에서 기본 선택된 옵션 표시 |
checked | 체크박스나 라디오 버튼에서 체크된 상태 표시 |
disabled | 체크박스나 라디오 버튼에서 비활성화된 상태 표시 |
태그 분류
- HTML 태그는 미리 정의된 태그와 사용자 정의 태그로 나뉨
- 미리 정의된 태그
- 구조 기술 태그: 문서의 구조를 정의하는 태그
- 멀티미디어 태그: 이미지, 비디오, 오디오 등을 처리하는 태그
- 사용자 정의 태그
- 의미적 태그: 특정 의미를 가지는 태그
- 비의미적 태그: 의미가 없는 태그, 스타일이나 구조만 지정
- 미리 정의된 태그
구조 기술 태그
HTML 문서의 기본 구조를 만들기 위한 태그들
태그 | 설명 |
---|---|
<!DOCTYPE html> | 문서가 HTML5 버전임을 선언 |
<html> | HTML 문서의 루트 요소 |
<head> | 문서의 메타데이터 포함 |
<title> | 웹 브라우저 탭에 표시되는 문서의 제목 정의 |
<meta> | 문자 인코딩, 뷰포트, 저자, 키워드 등 문서의 메타데이터 정의 |
<link> | 외부 리소스를 문서에 연결 |
<script> | 클라이언트 측 스크립트(JS)를 문서에 포함하거나 참조 |
<body> | 실제 내용과 화면에 표시될 요소들이 위치하는 부분 |
사용자 정의 태그
- 태그 간의 관계는 포함 관계 또는 동등 관계를 고려하여 만들어야 함
- CSS나 제이쿼리 등에서 사용자 정의 태그가 중요함
- 의미가 없는 비의미적 요소도 만들 수 있음
텍스트 관련 태그
태그 | 설명 |
---|---|
<i> | 이탤릭체로 변환 |
<em> | 강조하여 표시 |
<b> | 볼드체로 표시 |
<strong> | 중요한 내용 표시 |
<small> | 글씨 크기를 작게 표시 |
<sub> | 아래첨자 표시 |
<sup> | 윗첨자 표시 |
<mark> | 하이라이트 표시 |
<code> | 컴퓨터 코드 표시 |
<ins> | 삽입된 콘텐츠, 의미 강조 밑줄 표시 |
<u> | 단순 시각적 밑줄 표시 |
<del> | 텍스트에 취소선 표시 |
<s> | 텍스트에 취소선 표시 |
<blockquote> | 인용문을 나타내는 태그 |
공간 분할 태그 <div>
와 <span>
<div>
와<span>
은 HTML에서 레이아웃과 스타일을 정의하는 기본 요소<div>
- 웹 브라우저 전체 공간을 ‘block’ 형식으로 분할
- 블록 레벨 요소, 새로운 줄에서 시작
<span>
- 웹 브라우저의 일부 영역을 ‘inline’ 형식으로 분할
- 인라인 요소, 텍스트나 콘텐츠 내에서 사용
공간 분할 태그 <iframe>
<iframe>
은 HTML 문서 내에 또 다른 HTML 문서를 내장하는 요소- 현재 문서 안에 독립적인 다른 페이지를 표시 가능
- 주로 비디오, 맵, 다른 웹 사이트 페이지 등을 삽입할 때 사용
하이퍼링크 태그
<a>
태그는 다른 사이트나 같은 문서 내 다른 위치로 이동하는 링크를 생성- 링크는 텍스트일 필요 없음, 이미지나 다른 HTML 요소도 링크로 사용 가능
<a href="URL">
형식으로 사용, URL에는 대표적으로 5가지 유형이 있음
유형 | 예시 |
---|---|
절대 경로 (Absolute URL) | <a href="https://www.example.com/page.html">절대 URL</a> |
상대 경로 (Relative URL) | <a href="page.html">상대 URL</a> |
루트 상대 (Root-relative URL) | <a href="/folder/page.html">루트 상대 URL</a> |
프래그먼트 (Fragment URL) | <a href="#section">프래그먼트 URL</a> |
이메일 링크 (Mailto URL) | <a href="mailto:someone@example.com">이메일 보내기</a> |
<a>
태그의 target과 rel 속성
- target: 링크를 클릭 했을 때 웹 사이트가 열릴 곳을 지정하는 역할
- rel: 현재 문서와 링크된 문서 간의 관계를 명시
속성 | 설명 |
---|---|
_blank | 새로운 웹 브라우저 창에 열기 |
noopener | 링크된 페이지가 원본 페이지와의 관계를 유지하지 못하도록 함 |
_self | 현재 웹 브라우저 창에 열기 (기본값) |
noreferrer | HTTP 참조자 정보를 전송하지 않음 |
_parent | 부모 웹 브라우저 창에 열기 |
nofollow | 검색 엔진이 이 링크를 따라가지 않도록 함 |
_top | 웹 브라우저 전체 영역에 열기 |
external | 링크가 외부 사이트로 연결됨을 나타냄 |
목차(list) 태그
- HTML에는 목록을 나타내는
<ol>
,<ul>
,<dl>
태그가 있음<ol>
- 순서가 있는 목록
- 내부 태그로
<li>
사용
<ul>
- 순서 없이 불릿으로 표시
- 내부 태그로
<li>
사용
<dl>
- 각 항목은
<dt>
로 정의 - 항목에 대한 설명은
<dd>
로 나타냄
- 각 항목은
<ul>
속성 기호
속성 | 기호 |
---|---|
list-style-type: disc | ● |
list-style-type: circle | ○ |
list-style-type: square | ■ |
list-style-type: none | 없음 |
<ol>
속성 기호
속성 | 기호 |
---|---|
1 | 1, 2, 3… |
A | A, B, C… |
a | a, b, c… |
I | I, II, III… |
i | ⅰ, ⅱ, ⅲ… |
테이블과 폼
주요 테이블 태그
테이블 태그를 사용하여 표를 만들 수 있음
태그 | 설명 |
---|---|
<table> | 표의 시작과 끝을 나타냄 |
<tr> | 표의 각 행을 나타냄 (Table Row) |
<th> | 표의 머리글 셀을 나타냄 (Table Header) |
<td> | 표의 일반 셀을 나타냄 (Table Data) |
테이블의 시맨틱 태그
테이블의 시맨틱 태그를 사용하면 웹 페이지의 접근성과 가독성을 높일 수 있음
태그 | 설명 |
---|---|
<thead> | 테이블의 헤더 부분을 나타냄 |
<tbody> | 테이블의 본문 부분을 나타냄 |
<tfoot> | 테이블의 바닥글 부분을 나타냄 |
테이블 속성
- 테이블을 생성할 때 특정한 상황이나 스타일에 따라 다양한 속성을 활용 가능
<table>
의 속성
속성 | 설명 |
---|---|
border | 테이블의 테두리 두께를 지정함 |
width | 테이블의 너비를 설정함 |
height | 테이블의 높이를 설정함 |
cellpadding | 셀 내부의 여백을 설정함 |
cellspacing | 셀 사이의 간격을 설정함 |
align | 테이블의 정렬을 설정함 |
bgcolor | 테이블의 배경색을 설정함 |
align의 속성값
속성값 | 설명 |
---|---|
center | 테이블을 가운데 정렬함 |
left | 테이블을 왼쪽 정렬함 |
right | 테이블을 오른쪽 정렬함 |
justify | 테이블을 양쪽 정렬함 |
initial | 브라우저의 기본값을 사용함 |
테이블 병합
- rowspan 속성: 세로 방향(행)으로 셀을 병합
- colspan 속성: 가로 방향(열)으로 셀을 병합
폼(Form)
<form>
태그는 사용자로부터 데이터를 수집하기 위한 양식을 만듦- 다양한 입력 요소들을 위치시킬 수 있음
- 수집된 데이터를 서버에 제출할 수 있음
<form>
태그 | 설명 |
---|---|
<form> | 폼의 시작과 끝을 정의 |
<input> | 사용자 입력을 받을 수 있는 입력 필드 |
<textarea> | 여러 줄의 텍스트 입력을 위한 영역 |
<label> | input 요소에 레이블 추가 |
<select> | 드롭다운 선택 메뉴 생성 |
<datalist> | 드롭다운 선택 메뉴 생성 |
<option> | <select> , <datalist> 에서 선택 가능한 옵션 정의 |
<button> | 사용자가 클릭할 수 있는 버튼 생성 |
<form>
의 속성
속성 | 설명 |
---|---|
action | 폼 데이터를 보낼 URL 지정 |
method | get : URL 쿼리 문자열로 전송 post : HTTP 요청 본문에 포함되어 전송 |
폼의 목적
- HTML에서 사용자 입력을 위한 드롭다운 메뉴를 생성할 때 사용됨
- 목적과 방식에 차이가 있음
폼 <input>
태그
<input>
태그는 사용자가 입력을 받을 수 있는 입력 필드를 생성
<input>
의 속성
속성 | 설명 |
---|---|
type | 입력 필드의 유형을 지정 |
name | 폼 데이터와 함께 전송될 필드의 이름을 지정 |
value | 입력 필드의 초기값 또는 버튼의 라벨을 지정 |
placeholder | 필드에 표시될 힌트나 설명을 제공 |
required | 필수 입력 필드임을 지정 |
readonly | 필드의 값을 읽기 전용으로 설정 |
disabled | 필드를 비활성화 |
<input type>
의 유형
유형 | 설명 |
---|---|
text | 기본 텍스트 입력 필드 생성 |
password | 비밀번호 입력 필드 생성 |
submit | 폼을 제출하는 버튼 생성 |
radio | 라디오 버튼 생성 |
checkbox | 체크박스 생성 |
멀티미디어 태그
임베디드 콘텐츠 태그
- 임베디드 콘텐츠 태그는 멀티미디어 데이터를 웹 문서에 포함시킬 수 있는 태그임
- 멀티미디어 파일을 웹 문서에 삽입할 때는 웹 문서와 같은 폴더에 있어야 함
- 같은 폴더에 있지 않으면 파일의 절대 경로를 모두 입력해야 함
태그 | 설명 |
---|---|
<canvas> | 그래픽 그리기 |
<img> | 이미지 파일 삽입 |
<audio> | 오디오 파일 삽입 |
<video> | 비디오 파일 삽입 |
<source> | 미디어 소스 삽입 |
<embed> | 객체 삽입 |
이미지 삽입
<img>
태그를 사용하여 이미지를 웹 페이지에 삽입
속성 | 설명 |
---|---|
src | 이미지의 경로를 지정 |
alt | 이미지가 로딩되지 않을 때 대체 텍스트 |
width | 이미지의 너비를 지정 |
height | 이미지의 높이를 지정 |
비디오 삽입
<video>
태그를 사용하여 동영상을 웹 페이지에 삽입- 최근 브라우저는 사용자 보안을 위해 자동 재생에 제한을 둠
속성 | 설명 |
---|---|
src | 경로 지정 |
controls | 재생 컨트롤 바를 추가 |
autoplay | 페이지가 로딩될 때 자동 재생 |
loop | 동영상이 끝나면 다시 반복 |
muted | 영상 음소거 |
width | 비디오의 너비를 지정 |
height | 비디오의 높이를 지정 |
오디오 삽입
<audio>
태그를 사용하여 오디오 파일을 웹 페이지에 삽입- 최근 브라우저는 사용자 보안을 위해 자동 재생에 제한을 둠
속성 | 설명 |
---|---|
src | 경로 지정 |
controls | 재생 컨트롤 바를 추가 |
autoplay | 페이지가 로딩될 때 자동 재생 |
loop | 오디오가 끝나면 다시 반복 |
muted | 오디오 음소거 |
반응형 웹
메타 태그와 뷰포트 설정
- 반응형 웹 디자인은 다양한 디바이스와 화면 크기에 맞게 적절하게 보여지도록 만드는 디자인 접근법
- 주로 메타 태그의 뷰포트 설정과 CSS 미디어 쿼리를 사용
<meta>
태그 중viewport
속성은 모바일 브라우저에게 웹 페이지의 화면 크기와 초기 확대 수준을 설정하는 역할
속성 | 설명 |
---|---|
width=device-width | 화면 너비에 맞게 뷰포트 너비를 설정 |
initial-scale=1.0 | 초기 확대/축소 수준을 1로 설정 |
메타 태그
- 문서에 대한 메타데이터를 제공
- 웹 페이지의 설명, 키워드, 문서의 저자, 마지막 수정일 등과 같은 정보를 포함
- SEO와 브라우저의 동작 방식에 영향을 줄 수 있음
<head>
태그에 위치
메타 태그 | 설명 |
---|---|
<meta charset="UTF-8"> | 문서의 문자 인코딩을 UTF-8로 설정 |
<meta name="description"> | 웹 페이지의 내용에 대한 짧은 설명 제공 |
<meta name="keywords"> | 웹 페이지와 관련된 키워드를 나열 |
<meta name="author"> | 문서의 저자를 지정 |
<meta http-equiv="refresh" content="30"> | 30초마다 새로고침을 함 |
메타 태그 예시
1
2
3
4
5
6
<!-- 검색 엔진을 위한 키워드(keyword)를 정의할 때 -->
<meta name="keyword" content="강아지, 강아지사료, 강아지간식, 강아지집">
<!-- 웹 페이지에 대한 설명(description)을 정의할 때 -->
<meta name="description" content="강아지 용품을 판매하는 쇼핑몰">
<!-- 문서의 저자(author)를 정의할 때 -->
<meta name="author" content="쁘띠하루">
미디어 쿼리
- CSS3에서 도입된 기술로, 미디어의 유형과 특정 조건에 따라 다른 스타일 규칙을 적용
- 주로 브라우저 창의 너비에 따라 다른 스타일을 적용하는 데 미디어 쿼리를 사용
- 브레이크 포인트 설정: 특정 스타일을 적용하고 싶을 때 사용
- 최소 너비 및 최대 너비
- min-width: 최소너비
- max-width: 최대 너비
- 장치별 스타일: 모바일, 태블릿, 데스크탑에 맞는 스타일 지정
- 방향(가로/세로)에 따른 스타일: 화면의 방향에 따른 다른 스타일을 적용
- 다중 쿼리 조합: and나 쉼표(,)를 사용하여 여러 조건을 결합
This post is licensed under CC BY 4.0 by the author.