목차
HTML 이란?
HTML은 Hyper Text Markup Language의 약자로 웹페이지를 작성하기 위한 언어입니다. Hyper Text는 텍스트에 하이퍼링크 설정이 가능하고 텍스트들이 서로 연결되어 있다는 의미이고, Markup은 종이 인쇄 산업시대 때 복사 편집인이 인쇄할 종이의 여백 부분에 특별한 글꼴이나 색 정보를 위해 표시(마크업)했던 것에서 사용되기 시작한 말입니다.
HTML 특징
- Markup언어는 태그(tag)로 구성되고 태그 안에 문서의 내용을 표시합니다.
- HTML 태그(tag)와 HTML 엘리먼트(element)는 같은 의미로 사용됩니다.
- 태그는 <>로 표시하며, 시작태그와 끝태그로 구성됩니다.
- empty content를 가지는 빈태그가 있으며, <tag /> 로 표현 가능합니다.
- 태그는 일반적으로 소문자를 사용합니다.
- 태그는 속성(attribute)을 가질 수 있으며, name=value의 형식을 갖습니다.
- 주석은 <!-- -->로 표시하며, 단축키는 ctrl+shift+/ (상이할 수 있음) 입니다.
주요 태그
기본 구조
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
<!DOCTYPE> | 문서(document)의 타입을 정의 | |
<html> | HTML 문서의 루트 요소(root element)를 정의, 한 페이지의 시작과 끝 | |
<head> | 문서에 대한 정보인 메타데이터(metadata)의 집합을 정의 | |
<meta> | 문서에 대한 정보인 메타데이터(metadata)를 정의 | |
<title> | 문서의 제목(title)을 정의 | |
<body> | 문서의 내용(contents)을 정의 |
head 태그가 포함할 수 있는 태그
<meta> | 문서에 대한 정보인 메타데이터(metadata)를 정의 |
<title> | 문서의 제목(title)을 정의 |
<base> | 문서의 모든 상대 주소에 대한 기본 URL과 target 속성값을 정의, 기본 경로를 지정 |
<link> | 문서와 외부 소스(external resource) 사이의 관계를 정의, 다른 파일을 추가 |
<style> | 문서에 스타일시트를 추가 |
<script> | 문서에 자바스크립트와 같은 스크립트를 추가 |
* 참고 : 상대 경로와 절대 경로
경로에는 상대 경로와 절대 경로 두 가지가 있습니다. 상대 경로는 파일이 실행되는 위치를 기준으로 한 경로이고, 절대 경로는 전체 URL을 사용한 경로입니다. 다음과 같은 구조에서 test1.html에서 images 폴더의 001.png 파일 경로를 찾는 상황을 생각해 봅시다.
상대 경로와 절대 경로를 직접 지정해 주면 다음과 같이 작성 가능합니다. ../ 은 해당 파일이 위치한 곳에서 한 단계 위의 상위 폴더(여기서는 webapp 폴더)를 찾아가는 표시입니다. 만일 해당 파일이 위치한 폴더와 같은 위치에 있는 폴더 및 파일을 찾아가고 싶으면 / 없이 바로 해당 이름을 적어주면 됩니다. (ex. "images/001.png") test는 프로젝트명입니다.
* src (Source) : 이미지 소스의 URL을 명시함.
<img alt="이미지파일" src="../images/001.png" width="100" height="100">
<img alt="이미지파일" src="http://localhost:8081/test/images/001.png" width="100" height="100">
<base>
head 태그 안에 base 태그를 사용해 기본 경로를 지정하면, 상대 경로를 간략히 적을 수 있게 됩니다.
* href (Hypertext Reference) : 링크될 외부 리소스(external resource)의 URL를 명시함.
<!-- head 부분 -->
<base href="../images/">
<!-- body 부분 -->
<img alt="이미지파일" src="001.png" width="100" height="100">
<link>
문서와 외부 소스(external resource) 사이의 관계를 정의합니다. 주로 외부 스타일 시트(external style sheet)를 추가할 때 사용됩니다.
동일한 폴더 위치에 mystyle.css 라는 파일을 따로 만들어 효과를 적용해 보겠습니다. p태그에 효과를 적용하여 글자색이 빨간색이 된 것을 확인할 수 있습니다.
* rel (relationship) : 필수 속성으로, 현재 문서와 외부 리소스 사이의 연관 관계를 명시함.
p {
color: red;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>link 태그 실습</title>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>
<!-- 외부스타일 시트 파일 이용 p태그에 효과 적용 -->
<p>Hello</p>
<p>World</p>
</body>
</html>
<style>
해당 문서의 head 태그 안에 직접 스타일시트를 추가할 수도 있습니다. 위와 동일한 결과를 얻을 수 있습니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>style 태그 실습</title>
<!-- head 사이에 css style 직접 지정 가능 -->
<style type="text/css">
p {
color: red;
}
</style>
</head>
<body>
<p>Hello</p>
<p>World</p>
</body>
</html>
<script>
문서에 자바스크립트와 같은 스크립트를 추가할 때 사용합니다. 스크립트 코드를 태그 안에 직접 명시하거나, src 속성을 사용하여 외부 스크립트 파일을 참조할 수 있습니다. script 태그는 반드시 head 태그 안에 와야하는 것은 아닙니다.
동일한 폴더 위치에 myscript.js 라는 파일을 만들어 추가시켜 보겠습니다. 실행한 html 페이지에서 F12를 눌러 콘솔창에 메세지가 출력된 것을 확인할 수 있습니다.
console.log("hello");
<script type="text/javascript" src="myscript.js"></script>
본문 작성
<p> | 문단(paragraph)을 정의 |
<br> | 행 바꿈(line-break)을 정의 |
<h1>~<h6> | 제목(headings)을 정의 |
<hr> | 수평선(horizontal rule)을 정의 |
<b> | 텍스트를 진하게(bold) |
<i> | 텍스트를 이탤릭체로(italic) |
<strong> | 텍스트 강조 |
<sub> | 아랫첨자(subscript) 텍스트를 표현 |
<sup> | 윗첨자(superscript) 텍스트를 표현 |
<address> | 문서나 글의 저자 또는 회사와 연락할 수 있는 정보를 명시 |
<del> | 텍스트 한가운데 라인을 추가하여 문서에서 삭제된(deleted) 텍스트를 표현 |
<ins> | 텍스트 아래쪽에 라인을 추가하여 문서에 추가된(inserted) 텍스트를 표현 |
* 참고 : HTML 태그 종류
HTML 태그는 특성에 따라 두 가지로 구분 가능합니다. 첫째는 block 방식 태그로, 태그 사용시 자동 개행(줄바꿈)이 이루어지는 태그입니다. 둘째는 inline 방식 태그로, 태그 사용시 줄바꿈이 이루어지지 않는 태그입니다.
<h1>~<h6>
제목을 정의하며, 가장 큰 글자크기의 h1 태그부터 h6 태그까지 사용 가능합니다. block 방식 태그입니다.
<h1>This is header 1</h1>
<h2>This is header 2</h2>
<h3>This is header 3</h3>
<h4>This is header 4</h4>
<h5>This is header 5</h5>
<h6>This is header 6</h6>
<hr>
수평선을 정의하며, 굵기 조절도 가능합니다. block 방식 태그입니다.
Hello
<hr>
World
<hr size="10" noshade="noshade">
<b>, <i>, <strong>, <sub>, <sup>, <address>, <del>, <ins>
address 태그를 제외한 나머지는 모두 inline 방식 태그로 줄바꿈이 이루어지지 않습니다.
<b>문자열을 진하게</b><br>
<i>문자열을 이탤릭체로</i><br>
<strong>문자열 강조</strong><br>
HTML5<sub>아랫첨자</sub><br>
HTML5<sup>윗첨자</sup><br>
<address>
서울시 강남구 ㅇㅇ동 ㅇㅇ 번지
</address>
<del>10000원</del>5000원<br>
<ins>밑줄 쫘악~</ins><br>
하이퍼링크 걸기
<a>
a 태그는 하나의 페이지에서 다른 페이지를 연결할 때 사용하는 하이퍼링크(hyperlink)를 정의할 때 사용합니다. 앵커(anchor) 태그라고도 합니다. 다음과 같이 href, title, target 등의 속성을 가질 수 있습니다. href로 링크할 페이지를 지정합니다. title은 마우스를 올려두었을 때 뜨는 메세지를 지정하는 속성이고, target은 링크를 어디에서 실행시킬지 결정하는 속성입니다. _self인 경우 현재 탭에서 링크가 열리고, _blank인 경우 새로운 탭에서 링크가 열립니다.
* href (Hypertext Reference) : 링크된 페이지의 URL를 명시함.
<a href="target.html" title="target.html 로컬 페이지" target="_self">로컬 페이지 이동</a><br>
<a href="http://www.google.com" target="_blank">외부 페이지 이동</a>
하나의 웹 페이지 내에서 특정 위치로 이동하는 것도 가능합니다. 맨아래라는 문단에 id 속성을 부여하고 id를 사용해 링크가 실행되도록 합니다.
* id : 태그에 부여하는 유일한 식별자. #id 형식으로 사용.
<a href="#bottom">맨아래로 이동</a><br>
...
<p id="bottom">맨아래</p>
테이블 만들기
<table> | 데이터를 포함하는 셀(cell)들의 행과 열로 구성된 2차원 테이블을 정의 | ||
<caption> | 테이블의 제목 정의 | ||
<tr> | 각 행(row)을 정의 | ||
<th> | 하나의 셀(cell)을 강조하여 정의 | ||
<td> | 하나의 셀(cell)을 정의 |
기본적인 테이블 구조를 다음과 같이 만들 수 있습니다. 주의할 점은 table 태그에 border 속성으로 테두리를 지정해야 테이블의 테두리가 보인다는 점입니다.
<table border="1">
<caption>제목</caption>
<tr>
<th>1열 제목</th>
<th>2열 제목</th>
</tr>
<tr>
<td>1행 1열</td>
<td>1행 2열</td>
</tr>
<tr>
<td>2행 1열</td>
<td>2행 2열</td>
</tr>
</table>
셀 병합
rowspan, colspan 속성으로 셀을 병합시킬 수 있습니다. row는 행이고 col(column)은 열입니다. rowspan은 행을 병합하고, colspan은 열을 병합합니다. 속성값으로 몇 개의 셀을 병합할 것인지 설정합니다.
<table border="1">
<tr>
<th>이름</th>
<th colspan="2">연락처</th>
</tr>
<tr>
<td rowspan="2">홍길동</td>
<td>02)111-1111</td>
<td>010-1111-1111</td>
</tr>
<tr>
<td colspan="2">hong@gmail.com</td>
</tr>
</table>
리스트 만들기
<ol> | 순서가 있는 리스트(ordered list)를 정의 | <li> | 리스트(list)에 포함되는 아이템(item)을 정의 | |
<ul> | 순서가 없는 리스트(unordered list)를 정의 | |||
<dl> | 용어(term)와 그에 대한 설명을 리스트 형식(description list)으로 정의 | |||
<dt> | 용어(term)나 이름(name)을 정의 | |||
<dd> | 용어에 대한 설명(description)을 정의 |
<ol>
순서가 있는 리스트를 정의합니다. start 속성으로 몇 번부터 시작할지 설정할 수 있습니다.
<ol>
<li>사과</li>
<li>배</li>
</ol>
<ol start="3">
<li>사과</li>
<li>배</li>
</ol>
<ul>
순서가 없는 리스트를 정의합니다. type 속성으로 모양을 지정할 수 있습니다.
<ul type="circle">
<li>사과</li>
<li>배</li>
</ul>
<ul type="square">
<li>사과</li>
<li>배</li>
</ul>
<ul type="disc">
<li>사과</li>
<li>배</li>
</ul>
<dl>
용어와 용어에 대한 설명을 리스트 형식으로 정의합니다.
<dl>
<dt>HTML5 이란</dt>
<dd>홈페이지를 만드는...</dd>
<dt>WWW 이란</dt>
<dd>World Wide Web...</dd>
</dl>
태그 그룹핑
<div> | 문서에서 특정 영역(division)이나 구획(section)을 정의할 때 사용, block 방식 |
<span> | 문서에서 인라인 요소(inline-element)들을 하나로 묶을 때 사용, inline 방식 |
<div>
문서에서 특정 영역이나 구획을 정의할 때 사용합니다.
<div id="title">
<h1>오만과 편견</h1>
<div id="volume">
<h2>1권</h2>
<div id="chapter">
<h3>1장</h3>
<p>하트포드셔의 작은 마을에 사는 베넷 가에는 다섯 자매가 있는데 ...</p>
<p>그러나 엘리자베스는 다아시가 ‘오만’하다는 ‘편견’을 가지고 ...</p>
</div>
</div>
</div>
<span>
특정한 효과를 갖지 않으며, 문서에서 인라인 요소들을 하나로 묶을 때 사용합니다.
<!-- head 부분 -->
<style type="text/css">
#red {
color: red;
font-size: 30px;
}
</style>
<!-- body 부분 -->
<p>하트포드셔의 작은 마을에 사는 베넷 가에는 다섯 자매가 있는데 ...</p>
<p>그러나 엘리자베스는 다아시가 <span id="red">‘오만’하다는 ‘편견’</span>을 가지고 ...</p>
데이터 입력하기
<form> | 사용자로부터 입력을 받을 수 있는 HTLM 입력 폼(form)을 정의할 때 사용 | ||
<input> | 사용자로부터 입력을 받을 수 있는 입력 필드(input filed)를 정의할 때 사용 | ||
<select> | 옵션 메뉴를 제공하는 드롭다운 리스트(drop-down list)를 정의할 때 사용 | ||
<option> | 드롭다운 리스트에서 사용되는 각각의 옵션을 정의 | ||
<textarea> | 사용자가 여러 줄의 텍스트를 입력할 수 있는 텍스트 입력 영역을 정의할 때 사용 | ||
<fieldset> | 폼에서 연관된 태그들을 하나의 그룹으로 묶어서 박스 라인을 그려줌 | ||
<legend> | <fieldset>의 제목을 정의 | ||
<button> | 클릭할 수 있는 버튼을 정의 |
input 태그의 type 속성으로 다양한 타입의 데이터를 입력받을 수 있습니다. 기본적으로 사용되는 태그와 속성들을 종합해 보면 다음과 같이 표현할 수 있습니다.
<form name="login" action="target.html" method="post">
<fieldset>
<legend>회원가입</legend>
아이디 <input type="text" name="userid"><br>
비밀번호 <input type="password" name="userpw"><br>
성별 <input type="radio" name="gender" value="male">남
<input type="radio" name="gender" value="female">여<br>
직업 <select name="job">
<option value="developer">개발자</option>
<option value="designer">디자이너</option>
<option value="unemployed" selected="selected">무직</option>
</select><br>
진입경로 <input type="checkbox" name="root" value="internet">인터넷
<input type="checkbox" name="root" value="recommend">추천
<input type="checkbox" name="root" value="tv">TV<br>
가입인사 <textarea rows="2" cols="20"></textarea><br>
<input type="reset" value="지우기">
<input type="submit" value="가입">
</fieldset>
</form>
form 태그를 사용하는 기본적인 방법은 이 글에서 더 자세히 살펴볼 수 있습니다. 참고해 주시면 감사하겠습니다.
이상으로 HTML의 기본 개념과 주요 태그를 정리해 보았습니다.
참고
'WEB > HTML, CSS' 카테고리의 다른 글
[CSS] CSS 기초 및 선택자 정리 (0) | 2022.06.23 |
---|---|
[HTML] form 태그 (0) | 2022.06.22 |
댓글