문서 형식 정의 tag
문서 형식 정의(DTD) 태그는 출력할 웹 페이지의 형식을 브라우저에게 전달합니다.
문서의 최상위에 위치해야 하며 대소문자를 구별하지 않습니다.
HTML5 : <!DOCTYPE html>
<!DOCTYPE HTML>
<!doctype html>
<!Doctype Html>
HTML 4.01 : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
XHTML 1.0 :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
HTML Basic Tag
<!DOCTYPE html>
<html lang="ko"> // html은 글로벌 어트리뷰트를 지원합니다. lang은 언어를 뜻하며, 값으로는 ISO 코드가 들어갑니다.
<head> /* head는 메타데이터를 포함하기 위한 요소이며 웹페이지에 하나만 존재합니다.
메타데이터는 HTML문서의 title, style, link, script에 대한 데이터로 화면에 표시되지 않습니다.
head에 메타데이터 이외에 화면에 표시되는 일체의 요소를 포함시킬 수 없습니다. */
<meta charset="utf-8"> /* meta는 description, keywords, author, 기타 메타데이터 정의에 사용됩니다.
메타 데이터는 브라우저, 검색엔진 등에 의해 사용됩니다.
charset은 브라우저가 사용할 문자셋을 정의합니다.
meta에 대해서 밑에 따로 정리 해놨습니다.*/
<title>웹페이지 제목</title> // title은 문서의 제목을 정의합니다. 정의된 제목은 브라우저 탭에 표시됩니다.
<link rel="stylesheet" href="css/style.css"/> // link에는 외부 리소스와의 연계 정보를 정의합니다. 주로 HTML과 외부 CSS 파일을 연계에 사용됩니다.
<script> /* script에는 client-side JavaScript를 정의합니다.
<script src="js/event.js">처럼 외부 JS 파일을 로드할 수 있습니다. */
document.addEventListener('click', function(){
alert('클릭하셨네요');
})
</script>
<style> // style은 HTML 문서를 위한 style 정보를 정의합니다.
body { background-color : powderblue; }
</style>
</head>
<body> /* body는 HTML 문서의 내용을 나타내며 웹페이지에 단 하나만 존재합니다.
메타데이터를 제외한 웹페이지를 구성하는 대부분의 요소(콘텐츠)가 body 요소 내에 기술됩니다. */
<div class="myFavoriteFood">
<ul>
<li>초밥</li>
<li>냉면</li>
<li>고기</li>
</ul>
</div>
</body>
</html>
meta 관련 추가 정리
SEO(검색 엔젠 최적화)를 위해 검색엔진이 사용할 keywords를 정의합니다.
<meta name="keywords" content="HTML, CSS, XML, XHTML, JavaScript">
웹페이지의 설명을 정의합니다.
<meta name="description" content="Web Tutorials on HTML and CSS">
웹페이지의 저자를 명기합니다.
<meta name="author" contents="moong2">
웹페이지를 30초마다 Refresh합니다.
<meta http-equiv="refresh" content="30">
HTML Tag
제목관련 Tag
<h1>
~<h6>
[제목 태그] : Heading 태그는 제목을 나타낼 때 사용하며, h1 부터 h6 까지 있습니다.
h1 이 가장 중요한 제목을 의미하며, 크기도 제일 큽니다.
시맨틱 웹의 의미를 살린다면 제목 이외에 글자를 키우거나 bold 처리하기위해 사용하는 것은하지 않는게 좋습니다.
검색엔진은 제목 태그를 중요한 의미로 받아들일 가능성이 높습니다.
텍스트관련 Tag
-
<b>
[bold 태그] : bold 체를 지정합니다. 제목 태그처럼 의미론적인 중요성은 없습니다. -
<strong>
[strong 태그] : 위의 b 태그와 동일합니다. 하지만 의미론적으로 중요성을 띕니다.
표현되는 외양은 b 태그와 같지만 웹표준을 준수하고자 한다면 strong 태그를 쓰는 것이 좋습니다. -
<i>
[i 태그] : Italic 체를 지정합니다. 의미론적 중요성은 없습니다. -
<em>
[em 태그] : emphasized(강조, 중요한) text 를 지정합니다.
i 태그와 동일하게 Italic 체로 표현되며, 의미론적인 중요성을 갖습니다. <small>
[small 태그] : small text 를 지정합니다.<mark>
[mark 태그] : highligthed text 를 지정합니다.<del>
[del 태그] : deleted(removed) text 를 지정합니다.
지정된 텍스트는 text-decoration : line-through 같은 효과가 생깁니다.<ins>
[insert 태그] : inserted(added) text 를 지정합니다.
지정된 텍스트는 text-decoration : underlinke 같은 효과가 생깁니다.<sub>,<sup>
[sub/sup 태그] : sub 태그는 subscripted(아래에 쓰인) text 를
sup 태그는 superscripted(위에 쓰인) text 를 지정합니다.
(ex) 노멀 텍스트 / sub 태그가 적용된 텍스트 / sup 태그가 적용된 텍스트
본문관련 Tag
<p>
[p 태그] : 단락(Paragraphs)을 지정합니다.<br>
[br 태그] : br 태그는 (강제)개행 (line break)을 지정합니다.
br 태그는 빈 요소로 종료태그가 없습니다.
HTML 에서는 1 개 이상의 연속된 공백(space)를 삽입하여도 1 개의 공백으로 표시됩니다.
1 개 이상의 연속된 줄바꿈(enter)도 1 개의 공백으로 표시합니다.
연속적인 공백을 삽입하는 방법으로는
도 있습니다.<pre>
[pre 태그] : 형식화된(preformatted) text 를 지정합니다.
pre 태그 내의 content 는 작성된 그대로 브라우저에 표시됩니다.<hr>
[hr 태그] : 수평줄을 삽입합니다.<q>
[q 태그] : 짧은 인용문(quotation)을 지정합니다.
브라우저는 인용부호(큰따옴표/quotation marks)로 q 요소를 감쌉니다.
ex)World Wide Web
<blockquote>
[blockquote 태그] : 긴 인용문을 지정합니다.
브라우저는 blockquote 요소를 들여쓰기 합니다. css 를 이용하여 다양한 style 을 적용시킬 수 있습니다.
World Wide Web = "www.w3c.org"
Hyperlink Tag
-
<a>
[a 태그] : a 태그는 HTML link 의 hyperlink 를 의미하며 그 역할을 담당합니다.href 어트리뷰트
: a 태그의 href 어트리뷰트는 이동하고자 하는 파일의 위치(경로)를 값으로 받습니다.
경로(path)란 파일 시스템 상에서 특정 파일의 위치를 의미합니다.디렉토리
: 파일과 다른 디렉토리를 갖는 파일 시스템 내의 존재물로서 폴더라고 불립니다.
[루트 디렉토리] : 파일 시스템 계층 구조 상의 최상위 디렉토리
Unix: / Windows:C:\
[홈 디렉토리] : 시스템의 사용자에게 각각 할당된 개별 디렉토리
Unix:/Users/{username} Windows:C:\Users\{username}
[작업 디렉토리] : 작업 중인 파일에 위치한 디렉토리
./
[부모 디렉토리] : 작업 디렉토리의 부모 디렉토리
../
파일 경로
: 파일 경로는 파일 시스템에서 파일의 위치를 나타내는 방법입니다.
절대경로 : 현재 작업 디렉토리와 관계없이 특정 파일의 절대적인 위치를 가리킵니다.
루트 디렉터리를 기준으로 파일의 위치를 나타냅니다.
- http://www.naver.com
- /Users/leekuenhwan/Application/image.jpg
- C:\users\leekeuenhwan\document\image.jpg
- /index.html
상대경로 : 현재 작업 디렉토리를 기준으로 특정 파일의 위치를 가리킵니다.
- ./index.html
- ../imaga/bg.jpg
- ../../js/app.js
- index.html
- css/mystyle.css
-
href 어트리뷰트의 사용 가능한 값
Value Description 절대 URL 웹사이트 URL (href=”www.naver.com”) 상대 URL 자신을 위치를 기준으로한 대상의 URL (href=”../css/style.css”) fragment indenfier 페이지 내의 특정 id 를 갖는 요소에 링크 (href=”#top”) 메일 malito: script href=”javascript:alert(‘Hello’);” -
target 어트리뷰트
: target 어트리뷰트는 링크를 클릭했을 때 윈도우를 어떻게 오픈할 지를 지정합니다.Value Description _self
링크를 클릭했을 때 연결문서를 현재 윈도우에서 오픈 (기본값) _blank
링크를 클릭했을 때 연결문서를 새로운 윈도우나 탭에서 오픈
리스트관련 Tag
<ul>
[ul 태그] : Unordered List 라는 의미대로 순서없는 목록입니다.-
<ol>
[ol 태그] : Ordered List 라는 의미대로 순서가 있는 목록입니다.
순서는 숫자로 1 부터 표시되며, type 어트리뷰트를 사용하여 순서를 나타내는 숫자를 지정할 수 있습니다.
또한 start 어트리뷰트로 리스트의 시작값을 지정할 수 있고,
reversed 어트리뷰트를 지정하면 리스트의 순서값을 역으로 할 수 있습니다.|Value|Description| |------|------| |"1"|숫자 (기본값)| |"A"|대문자 알파벳| |"a"|소문자 알파벳| |"I"|대문자 로마숫자| |"i"|소문자 로마숫자|
<ol start="2">
<li>coffee</li>
<li>lemonade</li>
<li>juice</li>
<li>tea</li>
</ol>
결과
2. coffee
3. lemonade
4. juice
5. tea
<ol reversed>
<li>coffee</li>
<li>lemonade</li>
<li>juice</li>
<li>tea</li>
</ol>
결과
4. coffee
3. lemonade
2. juice
1. tea
- 중첩목록 : ul 태그과 ol 태그를 중첩하여 사용해서, 목록을 만들 수 있습니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>중첩목록</title>
</head>
<body>
<ul class="menu">
<li>staek</li>
<li>pasta</li>
<li>salad
<ol>
<li>salmon salad</li>
<li>avocado salad</li>
</ol>
</li>
</ul>
</body>
</html>
결과
테이블관련 Tag
-
table
[table 태그] : 표를 만들 때 사용하는 태그입니다.
과거에는 테이블 태그를 사용하여 레이아웃을 하기도 하였으나 현재는 시멘틱 태그를 사용하여 레이아웃을 구성합니다.
(가급적 무분별한 div 태그 사용은 금지)|Value|Description| |------|------| |table|표를 감싸는 태그| |tr|표 내부의 행 (table row)| |th|행 내부의 제목 셀 (table heading)| |td|행 내부의 일반 셀 (table data)|
-
테이블 태그 어트리뷰트
Value Description border 표 테두리 두께 지정. (CSS border property 사용하는게 더 좋다고 합니다.) rowspan 해당 셀이 점유하는 행의 수 지정 colspan 해당 셀이 점유하는 열의 수 지정
미디어관련 Tag
-
<img>
[img 태그] : 웹페이지에 이미지를 사용하는 경우, img tag 를 사용합니다.Value Description src 이미지 파일 경로 alt 이미지 파일이 없을 경우 표시되는 문장 width 이미지의 너비 (CSS 에서 설정하는 것이 일반적입니다.) height 이미지의 높이 (CSS 에서 설정하는 것이 일반적입니다.)
-
<audio>
[audio 태그] : audio 태그는 HTML5 에서 새롭게 추가된 태그입니다.
아쉽게도 IE8 이하에서는 사용할 수 없습니다.|Value|Description| |------|------| |src|음악 파일 경로| |preload|재생 전에 음악 파일을 모두 불러올 것인지 지정| |autoplay|음악 파일을 자동의 재생 개시할 것인지 지정| |loop|음악을 반복할 것인지 지정| |controls|음악 재생 도구를 표시할 것인지 지정. 재생 도구의 외관은 브라우저마다 차이가 있습니다.|
-
웹브라우저별 지원하는 음악 파일 형식
Browser Mp3 Wav Ogg Internet Explorer Yes No No Chrome Yes Yes Yes Firefox Yes(24~) Yes Yes Safari Yes Yes No Opera Yes(25~) Yes Yes Source 태그를 사용하여 파일 형식의 차이 문제를 해결할 수 있습니다.
type 어트리뷰트는 생략가능합니다.<!DOCTYPE html> <html> <head> </head> <body> <audio controls> <source src="moong2.mp3" type="audio/mpeg"> <source src="moong2.ogg" type="audio/ogg"> </body> </html>
비디오관련 Tag
-
<video>
[video 태그] : video 태그 역시 HTML5 에서 새롭게 추가된 태그로 IE8 이하에서 사용할 수 없습니다.Value Description src 동영상 파일 경로 poster 동영상 준비 중에 표시될 이미지 파일 경로 preload 재생 전에 동영상 파일을 모두 불러올 것인지 지정 autoplay 동영상 파일을 자동재생할 것인지 지정 loop 동영상을 반복할 것인지 지정 controls 동영상 재생 도구를 표시할 것인지 지정, 재생 도구의 외관은 브라우저마다 차이가 있습니다. width 동영상의 너비를 지정 height 동영상의 높이를 지정
웹브라우저별 지원하는 동영상 파일 형식
Browser | Mp4 | WebM | Ogv |
---|---|---|---|
Internet Explorer | Yes | No | No |
Chrome | Yes | Yes | Yes |
Firefox | Yes(21~) | Yes | Yes |
Safari | Yes | No | No |
Opera | Yes(25~) | Yes | Yes |
audio 태그와 마찬가지로 파일 형식의 차이 문제가 발생할 수 있는데,
source 태그를 사용하여 형식 차이 문제를 해결할 수 있습니다
type 어트리뷰트는 생략 가능합니다.
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<video controls>
<source src="moong2.mp4" type="video/mp4">
<source src="moong2.webm" type="video/webm">
</body>
</html>
form 태그
-
<form>
[form 태그] : 사용자가 입력한 데이터를 수집하기 위해 사용되며, input, textarea, button,
select, checkbox, radio button, submit button 등의 입력 양식 태그를 포함할 수 있습니다.attribute Value Description action URL 입력 데이터(form data)가 전송될 URL 지정 method get / post 입력 데이터(form data) 전달 방식 지정 GET 과 POST 는 HTTP 티토콜을 이용해서 사용자 입력 데이터를 서버에 전달하는 방식을 나타내며,
이를 HTTP request method 라 합니다.GET - GET 방식은 전송 URL에 입력 데이터를 리퀘스트링으로 보내는 방식입니다. - ex)http://jsonplaceholder.typecode.com/posts?userId=1&id=1 - 전송 URL 바로 뒤에 '?'를 통해 데이터의 시작을 알려주고, key-value 형태의 데이터를 추가합니다. 1개 이상의 전송 데이터는 '&'으로 구분합니다. - URL에 전송 데이터가 모두 노출되기 때문에 보안에 문제가 있으며(최소한의 보안도 보장받기 힘듭니다.), 전송가능한 데이터의 한계가 있습니다. (최대 255자)
POST - POST 방식은 Request Body에 담아 보내는 방식입니다. - ex) http://jsonplaceholder.typecode.com/posts - URL에 비해 전송 데이터가 모두 노출되지 않지만 GET에 비해 전송속도가 느립니다. - REST API에서 POST 메소드는 특정 리스트의 생성을 요청합니다.
post 방식을 이용하여 입력받은 데이터를 보내는 코드입니다. <form action="http://formActionPost.php" method="post"> <div class="form-group"> <label for="form-title">제목</label> <input type="text" class="form-control" name="title" id="form-title" placeholder="제목을 적어주세요."> </div> <div class="form-group"> <label for="form-author">작성자</label> <input type="text" class="form-control" name="author" id="form-author" placeholder="작성자를 적어주세요."> </div> <div class="form-group"> <label for="form-description">본문</label> <textarea class="form-control" rows="10" name="description" id="form-description" placeholder="본문을 적어주세요."></textarea> </div> <input type="submit" name="name" class="btn btn-default btn-lg"> </form>
input 태그
-
input 태그는 form 태그 중에서 가중 중요한 태그로 사용자의 정보를 입력받기 위해 사용됩니다.
input 태그는 다양한 종류가 있는데 type 어트리뷰트에 의해 구분되며, 보통은 form 태그 내에 존재하여야 입력 데이터를 전송할 수 있으나
ajax 를 사용할 때는 form 태그 내에 존재하지 않아도 됩니다.
서버에 전송되는 데이터는 name 어트리뷰트를 key 로, value 어트리뷰트를 값으로 하여 key=value 의 형태로 전송됩니다.type 어트리뷰트 값 Description HTML5 추가 IE FF CR SF OP button 버튼 생성 ◯ ◯ ◯ ◯ ◯ checkbox checkbox 생성 ◯ ◯ ◯ ◯ ◯ color 컬러 선택 생성 ◯ X ◯ ◯ X ◯ date date control(년월일) 생성 ◯ X X ◯ ◯ ◯ datetime data & time control(년월일시분초)생성, HTML spec 에서 drop 되었습니다. ◯ X X X X X datetime-local 지역 data & time control(년월일시분초)생성 ◯ X X ◯ ◯ ◯ email 이메일 입력 form 생성, submit 시 자동 검증 ◯ ◯(10~) ◯ ◯ X ◯ file 파일 선택 form 생성 ◯ ◯ ◯ ◯ ◯ hidden 감추어진 form 생성 ◯ ◯ ◯ ◯ ◯ image 이미지로 된 submit button 생성 ◯ ◯ ◯ ◯ ◯ month 월 선택 form 생성 ◯ X X ◯ ◯ ◯ number 숫자 입력 form 생성 ◯ ◯(~10) ◯ ◯ ◯ ◯ password password 입력 form 생성 ◯ ◯ ◯ ◯ ◯ radio radio button 생성 ◯ ◯ ◯ ◯ ◯ range 범위 선택 form 생성 ◯ ◯(~10) ◯ ◯ ◯ ◯ reset 초기화 button 생성 ◯ ◯ ◯ ◯ ◯ search 검색어 입력 form 생성 ◯ X X ◯ ◯ X submit 제출 butoon 생성 ◯ ◯ ◯ ◯ ◯ tel 전화번호 입력 form 생성 ◯ X X X X X text 텍스트 입력 form 생성 ◯ ◯ ◯ ◯ ◯ time 시간 선택 form 생성 ◯ X X ◯ ◯ ◯ url url 입력 form 생성 ◯ ◯(10~) ◯ ◯ X ◯ week 주 선택 입력 form 생성 ◯ X X ◯ ◯ ◯
select 태그
-
여러개의 리스트에서 복수개의 아이템을 선택할 때 사용합니다.
서버에 전송되는 데이터는 select 요소이 name 어트리뷰트를 키로,
option 요소의 value 어트리뷰트를 값으로 하여 key=value 의 형태로 전송됩니다.tag Description select select form 생성 option option 생성 optgroup option 을 그룹화합니다.
textarea 태그
- input 태그의 text 어트리뷰트와 다르게 여러 줄의 텍스트를 입력할 때 사용합니다.
<textarea name="연습장" row="50" col="30" style="width:400px; height:100px;">낙서장입니다.</textarea>
button 태그
<input type="button">
과 유사하지만 input 태그는 빈 태그인 반면에 button 태그는 빈 태그가 아니라 텍스트와 이미지같은 콘텐츠를 사용할 수 있습니다.
type 어트리뷰트는 반드시 지정하는 것이 바람직하며, 어트리뷰트 값으로는 reset, submit, button 이 있습니다.
button 태그는 어트리뷰트만을 받아들이는 대신 input 태그와 다르게 콘텐츠로 문자열을 포함하여 HTML 요소도 받을 수 있습니다.
단, IE 의 경우 submit 되는 값이 다릅니다. (value 어트리뷰트의 값이 아닌 태그 안에 들어간 텍스트를 전달합니다.)
그래서 오래된 IE 를 지원해야 한다면 input 태그를 쓰는게 좋습니다.
<button type="button" onclick="alert('호기심이 많으시군요!');">이 버튼을 누르신 당신은?</button>
fieldset / legend 태그
- fieldset 태그는 관련된 입력 양식들을 그룹화할 때 사용합니다.
legend 태그는 fieldset 태그 내에서 사용되야 하며 그룹화된 fieldset 의 제목을 정의합니다.
<fieldset>
<legend>로그인</legend>
<input type="text" placeholder="id를 입력해주세요" id='id'>
<input type="text" placeholder="password를 입력해주세요" id='pw'>
<input type="submit" value="제출">
</fieldset>
2. Today I Found Out
이번주에 배운 내용중 HTML에 대해서 복습을 쭉 해봤는데,
'지금까지 내가 HTML의 기능을 20%만 알고 사용했구나'라는 생각이 들었습니다.
알면 알수록 웹 문서의 기능만이 아닌 어플리케이션으로써도 좋은 기능이
많다는 것을 알게 되면서 평소에 궁금했던 부분들이 상당수 풀렸습니다.
아직도 추가적으로 공부해야할 부분이 남았지만 기대가 많이 되는 것 같습니다.
앞으로 더 공부할 CSS와 JavaScript도 제가 모르던 기능을 만나게 될 거라는
생각을 하다보니 설렘이 가득한 것 같습니다.
기술들을 공부하고 습득한다는 것만큼 행복한 게 없는 것 같습니다.
앞으로도 열심히 공부하고 깨닫도록 노력하겠습니다.
3. refer
http://poiemaweb.com/
https://webisfree.com/?category=html
http://www.w3im.com/ko/html/default.html
http://webberstudy.com/html-css/