HTML(HyperText Markup Language)란 웹페이지의 구조와 컨텐츠를 나타내기위해 사용되는 코드이다.
예를들면, 여러 단락으로 구성된 컨텐츠를 나타낼 수도 있고, 리스트 형태나 이미지 또는 데이터 표를 나타낼 수도 있다.
HTML은 컨텐츠 구조를 정의하는 markup language이다. HyperText란 단일 웹사이트 내에서을 연결이던 다른 사이트로의 연결이든 하나의 웹페이지에서 다른 웹페이지로의 연결을 나타낸다. 즉 HTML은 한마디로 웹페이지 간을 연결해주는 컨텐츠 구조 및 표현이라고 생각 하면 된다.
HTML은 여러개의 '요소(element)'로 구성된다. 이 요소와 "<" 와 ">" 둘러쌓여져 구성된 '태그(tag)'는 각각의 표현과 기능을 한다. 이렇게 감싸진 태그는 단어나 이미지등 다양한 기능과 표현이 가능하다.
우리가 만약 단순한 문장을 표현하고 싶다면 paragraph tag(<p></p>)를 통해 다음과 같이 표현할 수 있다.
<p> 간단한 문장을 입력합니다. </p>
요소(element)의 기본 구성은 다음과 같다.
속성(attribute)은 실제 컨텐츠에 표시 되지 않는 추가적인 정보를 포함할 수 있다. 위의 경우 class가 속성의 이름이고 first-text 가 속성의 값이다. class란 속성은 스타일 정보나 기타 기능을 추가하기 위한 유일하지않은(다른 요소에도 쓸 수 있다는 뜻) 구분자로 쓰인다.
각 속성(attribute)에는 class, id, styles 등등 다양한 종류가 있다. 이는 나중에 천천히 배우도록 하자.
몇몇 속성은 값이 없이 boolean 값만 가지는 속성도 존재한다. 불린 속성의 경우 속성의 이름만 써줌으로서 할당할 수 있다.
예를 들어 disable란 속성은 <input> 요소(입력을 위한 요소)에 할당하면 더이상 입력을 할 수 없게된다.
<!-- <input> 요소를 사용할 수 없다. -->
<input type="text" disabled>
<!-- disabled가 없으므로 <input> 요소를 사용할 수 있다. -->
<input type="text">
때때로 속성 값의 따옴표가 생각되있는 경우를 볼 수 있다. 특정 환경에서 속성값의 따옴표가 생략이 될 수 있지만 문제가 충분히 발생 할 수 있으므로 속성 값에는 따옴표를 반드시 써주는게 좋다.
스타일의 문제이므로 뭘 쓰든 상관은 없다. 선호하는것을 골라 사용하면 된다. 그러나 몇몇 주의해야할 점이 있다.
<a href="https://www.tstory.com"> A link to Tstory </a>
<a href='https://www.tstory.com'> A link to Tstory </a>
당연한 얘기지만 따옴표와 쌍따옴표를 섞어서 쓰면 안된다.
<a href="https://www.tstory.com'> A link to Tstory </a>
만약 한 종류의 따옴표를 사용했다면 , 속성의 값에는 다른 종류의 따옴표를 사용할 수 있다.
<a href="https://www.tstory.com" title ="Isn't this cool?"> A link to Tstory </a>
title의 속성 값이 따옴표(')를 포함하므로 속성값은 쌍따옴표로 감싸준다. 당연하지만 그냥 따옴표로 감싸주게 되면 에러가 난다.
<a href='https://www.tstory.com' title ='Isn't this cool?'> A link to Tstory </a>
요소 안에 요소를 추가적으로 넣을수 있는데 이를 '중첩'이라고 한다. 예를 들어 아래 문장에서 '매우'란 단어를 강조하기 위해
<strong> 태그로 감싸주게 되면 <p>태그안에 <strong>태그가 중첩되게 된다.
<p> 이 문장은 <strong>매우</strong> 간단한 문장입니다. </p>
요소의 중첩시 중요한 사항은 각각의 태그들이 내부든 외부든 잘 닫혀야한다는 것이다. 아래와 같이 엇갈려서 닫히면 안된다.
<p> 이 문장은 <strong>매우 간단한 문장입니다. </p> </strong>
몇몇 요소들은 내용이 없는 경우가 있다. 이를 빈 요소라고 부른다. 빈 요소의 대표적인 것이 이미지를 나타내기위한 요소인 <img>이다.
<img src="images/example.png" alt="There is no image">
위에서 배웠던거 처럼 <img> 요소(element)에는 두가지 속성(attribute)가 있지만 컨텐츠와 닫은 태그가 존재하지않는다. 이는 이미지 요소가 내용에 영향을 줄 필요가 없이 홈페이지에 이미지를 심는 역할을 하기 때문이다.
HTML에서는 중요한 두가지 종류의 요소가 존재한다. 블록 요소(block-level elements)와 인라인(inline elements) 요소이다.
이 두가지 종류는 반드시 기억하는게 좋다. 나중에 CSS를 배울때도 블록 요소와 인라인 요소의 개념을 이해해야 좀 더 수월하게 할 수 있다.
가장 큰 차이점은 블록 요소는 추가시 개행(줄바꿈)이 되고 인라인은 개행이 안되는것, 블록 요소는 너비와 높이를 임의로 지정할 수 있지만 인라인 요소는 컨텐츠 크기만큼 설정되고 너비와 높이를 지정할 수 없다.
기본적인 HTML문서의 구조는 다음과 같다.
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset= "utf-8">
<title>My frist page</title>
</head>
<body>
<img src="images/index_image.png" alt="There is no image">
</body>
</html>
<p>Dogs are silly.</p>
<p>Dogs are
silly.</p>
HTML 요소의 컨텐츠에 아무리 많은 공백을 넣어도 상관없지만, HTML parser는 연속된 공백을 하나의 공백으로 줄여서 렌더링(화면에 표시를 의미)을 한다. 그래서 요소 안의 컨텐츠의 공백은 의미가 없지만 가독성을 위해서 공백을 넣는다. 요소의 중첩의 늘어남에 따라 가독성이 떨어져서 태그를 닫지 않는등의 실수를 할 수 있기 때문에 적당한 공백은 코드작성에 편리함을 준다.
어떤 언어를 배우던 주석은 기본적으로 배우게 된다. 각 언어마다 주석하는 방법은 조금씩 상이하다. HTML의 경우 주석을 달기 위해서
<!-- 와 --> 사이에 코드를 작성하게되면 주석처리가 되어 화면에 표시되지 않게 된다. 주석의 경우 종종 쓰이므로 알아두면 좋다.
<p>I'm not inside a comment</p>
<!-- <p>I am!</p> -->
참고
댓글 영역