2021-12-21 19:55 작성

2021-12-29 16:10 수정

HTML 입문

Table of contents
  1. HTML 소개
  2. HTML 시작하기
    1. 따옴표 내 특수문자 사용: HTML entities
  3. <head> 안에는 무엇이 있을까? HTML 안의 메타데이터
    1. meta 태그와 attribute
    2. meta 태그 내 페이지 관련 키워드와 SEO
    3. 플랫폼 별 특수 meta 태그
    4. meta 태그 키워드 기능
    5. favicon 추가 방법
    6. lang attribute
  4. HTML text 기본 원칙
    1. Heading 사용 방법
    2. Heading과 SEO
    3. Heading과 접근성
    4. Heading과 그럴 듯한 Heading의 차이
    5. <em>(Emphasis:강한 어조)의 적절한 사용
    6. <strong>(Strong importance:아주 중요)의 적절한 사용
    7. <i>, <b>, <u> 태그의 사용
  5. 하이퍼링크 만들기
    1. title 속성
    2. 문서 조각
    3. 좋은 링크 만들기
    4. HTML이 자원이 아닌 것에 링크 걸기
    5. E-mail 링크
  6. 심화 텍스트 서식 설정하기
    1. 서술 리스트
    2. Blockquotes
    3. Inline quotations
    4. <cite> element
    5. 축약
    6. 자세한 Contact 정보 마크업 하기
    7. superscript(위첨자)와 subscript(아래첨자)
    8. 컴퓨터 코드 나타내기
    9. 시간과 날짜 마크업 하기
  7. 문서와 웹사이트 구조
    1. 문서의 일반적인 부분
    2. 컨텐츠 구조화를 위한 HTML
    3. 더 자세한 HTML layout elements
    4. 비의미론적 포장
    5. 줄 나누기와 수평선
    6. 간단한 웹사이트 설계
  8. HTML 디버깅
    1. HTML 확인
  9. 저작권

HTML 소개

HTML 시작하기

따옴표 내 특수문자 사용: HTML entities

<head> 안에는 무엇이 있을까? HTML 안의 메타데이터

meta 태그와 attribute

charset, name, content

meta 태그 내 페이지 관련 키워드와 SEO

meta 태그 내 페이지 관련 키워드는 SEO(Search Engine Optimization) 성능을 강화한다. 또한 검색 엔진에서 <meta name="description" content="설명">에 기반해 페이지 관련 설명을 출력한다.

플랫폼 별 특수 meta 태그

Facebook은 <meta property="og: " content=""> 형태를 사용하고, 안드로이드 및 ios는 <meta property="al: " content=""> 그리고 twitter는 <meta property="twitter: " content="">를 사용해 보다 자세한 컨텐츠 미리보기 기능을 제공한다.

meta 태그 키워드 기능

<meta name="keywords" content="key, word"> 기능은 더이상 제공되지 않는다. (악성 스팸이 해당 기능을 악용해 브라우저가 해당 기능을 사용하지 않게 됨.)

favicon 추가 방법

기본 아이콘 추가 방법과 디바이스 별 아이콘 추가 방법 간략 소개

lang attribute

검색 엔진에 보다 효과적으로 색인되며 시각장애인에게 접근성을 제공함.

HTML text 기본 원칙

Heading 사용 방법

h1은 페이지당 하나, 3개보다 많은 종류의 heading(<h$>)을 사용하지 않아야 한다.

Heading과 SEO

검색 엔진은 heading을 페이지 내에서 우선 순위로 삼으며 따라서 heading에는 강조하고자 하는 중요 키워드로 이루어져야 한다.

Heading과 접근성

시각장애인들을 위한 프로그램은 heading을 읽어줌으로써 원하는 정보에 빠르게 접근할 수 있게 하므로 사이트 이용에 어려움을 겪는 사용자를 위해 적합한 Heading을 설정해야 한다.

Heading과 그럴 듯한 Heading의 차이

h 태그를 이용한 것과 같은 폰트 사이즈를 가진 span 태그는 크기만 같다. 상기의 SEO 이점과 접근성을 향상시키기 위해서는 h 태그를 사용해야 한다.

<em>(Emphasis:강한 어조)의 적절한 사용

<em> 태그는 화면판독기에서 다른 톤으로 읽힘, 단순히 css에서 italic 체로 스타일링하는 것과 다른 의미를 지님. 따라서 단순히 스타일링을 위해 italic 체를 사용하는 경우 <em> 태그의 사용은 지양하고 css를 통해 구현하거나 <i> 태그를 사용해야 한다.

<strong>(Strong importance:아주 중요)의 적절한 사용

<em> 태그와 마찬가지로 화면판독기에서 다른 톤으로 읽힘, 따라서 스타일링의 목적으로 사용은 지양하며 스타일링이 목적인 경우, <span> 태그에 css 스타일링을 추가하거나 <b> 태그를 사용해야 한다.

<i>, <b>, <u> 태그의 사용

<i>: 외래어, 분류학 명칭, 전문 용어, 생각 등 <b>: 주요 단어, 제품 이름, 주요 문장 등 <u>: 적절한 이름, 잘못된 철자 등 (사용자들은 밑줄을 하이퍼링크와 강하게 연관시키므로 링크에만 밑줄을 사용하는 것이 가장 좋다.)

하이퍼링크 만들기

title 속성

하이퍼링크를 위한 <a> 태그 내에 title 속성을 추가함으로써 hover 시 링크 정보를 드러낼 수 있다.

<a
	href="https://mauvpark.github.io"
	title="모브의 프론트엔드 기술 블로그 링크입니다."
	>모브의 프론트엔드 기술 블로그</a
>

문서 조각

HTML 문서의 특정 부분에 링크하는데 document fragment(문서 조각)를 사용할 수 있다. 링크를 걸고자 하는 요소(element)에 id 속성을 지정하고 URL의 끝에 #(hash) 문자와 id에서 지정한 id명을 적는다.

<!-- namul-muchim.html -->
<h2 id="how-to-cook">HOW TO COOK</h2>
<!-- 아래의 링크는 동일 폴더 내에 존재하는 namul-muchim.html 파일에서 HOW TO COOK으로 연결한다. -->
<p>
	나물 무침의 구체적인 요리 방법에 대해 알고 싶다면
	<a href="namul-muchim.html#how-to-cook">요리 방법</a>을 참고하세요!
</p>

좋은 링크 만들기

링크는 최근 문맥이나 사용자가 좋아하는 도구에 상관없이 모든 사용자에게 접근성이 좋아야 한다.

  1. 스크린리더 사용자들은 페이지에서 링크를 통해 건너 뛰는 것을 좋아하고 문맥을 무시하고 링크를 읽는 것을 좋아한다.

  2. 검색 엔진은 링크 텍스트를 목표 파일을 색인하는데 사용하므로 링크되는 곳을 설명하는 주요 키워드를 사용해 작성하는 것이 좋다.

  3. 비주얼 리더는 페이지의 모든 단어를 세세히 읽어보기 보다는 대충 훑어보는데, 그렇기에 링크와 같은 두드러지는 곳으로 시선이 이끌린다. 여기에 자세히 서술된 링크 텍스트가 존재한다면 유용할 것이다.

  4. 지저분해 보이므로 URL을 링크 텍스트에 쓰지 않아야 한다.

  5. 링크 텍스트에 “링크” 혹은 “~로의 링크” 식의 용어는 사용하지 않는다. 스크린 리더에서 링크는 링크임을 알려주며(반복은 소음으로 들림) 시각을 사용하는 이용자들도 링크의 표시가 다르게 되어 있기 때문에 쉽게 알 수 있다.

  6. 링크 텍스트는 가능한 짧게 작성한다. 스크린 리더는 모든 링크 텍스트를 설명하기에 짧은 것이 도움이 된다.

  7. 서로 다른 곳에 중복되는 링크 텍스트가 존재하지 않도록 최소화한다. 스크린 리더는 모든 링크 텍스트를 읽으므로 링크는 필요한 곳에만 표시하고 나머지는 일반 텍스트만 보여줘도 충분한다.

<!-- 좋은 예시 -->
<p>
    나물 무침의 구체적인 요리 방법에 대해 알고 싶다면
    <a href="namul-muchim.html#how-to-cook">나물무침 요리 방법</a>을
    참고하세요!
</p>

<!-- 나쁜 예시 -->
<p>
    나물 무침의 구체적인 요리 방법에 대해 알고 싶다면
    <a href="namul-muchim.html#how-to-cook">여기를 클릭</a>하세요!
</p>

HTML이 자원이 아닌 것에 링크 걸기

다운로드, 스트림, 팝업창과 플래시 무비와 같은 기대치 않은 효과 등이 발생하는 경우 명확한 설명을 더해 혼란을 줄인다. 예를 들어:

  1. 대역폭이 낮다면 링크를 클릭했을 때 다수의 메가바이트 다운로드가 시작 될 수 있다.

  2. Flash player가 설치되어 있지 않다면 갑작스레 Flash 관련 페이지로 연결될 수 있다.

  3. 다운로드로 연결할 때는 download 속성을 사용한다. download 속성에 기본 세이브 파일명을 지정할 수 있다.

<p>
    <a
        href="https://www.example.com/a/report"
        download="a-company-report.pdf"
    >
        A 회사 신용 보고서 (PDF, 5MB)
    </a>
</p>

<p>
    <a href="https://www.example.com/video-stream" target="_blank">
        IMF 긴급 속보 동영상 보기(별도의 탭, HD 화질)
    </a>
</p>

<p>
    <a href="https://www.example.com/domino-game" target="_blank">
        도미노 게임하기(별도의 탭, Flash 필요)
    </a>
</p>

E-mail 링크

  1. href 속성에 mailto:메일명 형식으로 작성해 해당 메일로 보내는 창을 연다. mailto:에 메일명을 적지 않으면 수신자가 빈 상태가 되는데 사용자가 원하는 상대에게 “공유”하고자 할 때 유용하다.

  2. mailto:에는 cc, bcc, subject와 body(body는 참된 header field에는 속하지 않음)와 같은 header fields를 추가할 수 있다. ? question mark를 통해 메인 URL를 구분하고 & ampersand mark를 통해 각각의 필드를 구분한다.

<!-- cc, bcc는 수신자, subjecct 메일 제목, body 메일 내용 -->
<a
    href="mailto:nowhere@example.com?cc=name2@exmaple.com&bcc=name3@example.com&subject=The%20subject%20of%20the%20email&body=The%20body%20of%20the%20email"
>
    cc, bcc에게 subject와 body가 미리 쓰여진 이메일 보내기
</a>

심화 텍스트 서식 설정하기

서술 리스트

용어와 정의, 질문과 답변에서 사용할 수 있다.

<dl>
	<dt>용어 A</dt>
	<dd>A의 정의는 이렇습니다.</dd>
	<dd>다음은 용어의 용례입니다.</dd>
	<dt>용어 B</dt>
	<dd>B의 정의는 이렇습니다.</dd>
</dl>
용어 A
    A의 정의는 이렇습니다.
    다음은 용어의 용례입니다.
용어 B
    B의 정의는 이렇습니다.

Blockquotes

한 개 혹은 복수의 paragraph 그리고 리스트 등 block level content의 섹션이 인용될 때 <blockquote> element 안에 감싼다. 그리고 <blockquote>cite 속성에서 인용한 소스를 가리키는 URL을 적는다. 여기에서 cite 속성은 유용한 듯 하지만 브라우저나 스크린리더에서 썩 유용하지는 않다.

아래는 blockquote 예시입니다.

The HTML <blockquote> Element (or HTML Block Quotation Element) indicates that the enclosed text is an extended quotation.

<p>아래는 blockquote 예시입니다.</p>
<blockquote
	cite="https://www.example.com/en-US/docs/Web/HTML/Element/blockquote"
>
	<p>
		The <strong>HTML <code>&lt;blockquote&gt;</code> Element</strong> (or
		<em>HTML Block Quotation Element</em>) indicates that the enclosed text
		is an extended quotation.
	</p>
</blockquote>

Inline quotations

Inline quotation은 <q> element를 사용해서 표현한다.

The quote element — <q> — is intended for short quotations that don't require paragraph breaks.

<!-- q 태그는 인용 표시("")만을 더하고 일반적인 텍스트처럼 렌더링 된다. -->
<p>
	The quote element — <code>&lt;q&gt;</code> — is
	<q cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q">
		intended for short quotations that don't require paragraph breaks.
	</q>
</p>

<cite> element

blockquoteq element의 cite 속성 대신 cite element를 이용해 인용구를 표현할 수 있다. 이 때 cite element 안의 content는 이탤릭체로 보여진다.

축약

<abbr>은 축약어나 두음문자에 설명을 제공할 수 있는 element다. title 속성에 설명을 적을 수 있으며 element에 hover 할 경우 설명이 드러나게 된다.

HTML
<!-- 사용예시 -->
<abbr title="Hypertext Markup Language">HTML</abbr>

자세한 Contact 정보 마크업 하기

<address> element를 통해 contact 정보에 대해 마크업할 수 있다. <address> element는 <article> 혹은 <body> element 내에서 contact 정보를 표기하기 위한 용도로만 사용되어야 한다. 예를 들어 사이트의 footer에 사용하거나 기사의 저자를 표기할 때 사용하고 페이지의 내용과 관계없는 주소들을 마크업하는 곳에는 사용하지 않는다.

Mauv
Seoul
00-gu
South Korea

  • Tel: 01234 567 890
  • Email: mauvpark@gmail.com
<address>
	<p>
		Mauv<br />
		Seoul<br />
		00-gu<br />
		South Korea
	</p>
	<ul>
		<li>Tel: 01234 567 890</li>
		<li>Email: mauvpark@gmail.com</li>
	</ul>
</address>

superscript(위첨자)와 subscript(아래첨자)

날짜, 화학식, 수학 등식을 사용할 때 superscript(<sup>)와 subscript(<sub>)를 사용할 수 있다.

My birthday is on the 25th of May 2001.

Water's chemical formula is H2O

If x2 is 9, x must equal 3 or -3.

<p>My birthday is on the 25<sup>th</sub> of May 2001.</p>
<p>Water's chemical formula is H<sub>2</sub>O</p>
<p>If x<sup>2</sup> is 9, x must equal 3 or -3.</p>

컴퓨터 코드 나타내기

HTML을 사용해서 컴퓨터 코드를 마크업 하는 elements는 다음과 같다:

  • <code>: 포괄적 컴퓨터 코드를 마크업 할 때 사용한다.

  • <pre>: 여백을 보존할 때 사용한다. 브라우저에서 보통 무시하는 여백을 보존시켜야 할 경우 사용할 수 있다.

  • <var>: 변수 이름을 명확하게 마크업 할 때 사용한다.

  • <kbd>: 컴퓨터에 들어오는 키보드 입력값을 마크업 할 때 사용한다.

  • <samp>: 컴퓨터 프로그램의 결과를 마크업할 때 사용한다.

let para = document.querySelector('p');
p.onclick = function() {
    alert('나 좀 그만 좀 건드려!');
};

para는 paragraph element를 나타낸다.

Ctrl/Cmd + A를 눌러 모든 텍스트를 선택한다.

$ ping mozilla.org
PING mozilla.org (63.245.215.20): 56 data bytes
64 bytes from 63.245.215.20: icmp_seq=0 ttl=40 time=158.233 ms
<pre><code>let para = document.querySelector('p');
p.onclick = function() {
    alert('나 좀 그만 좀 건드려!');
};
</code></pre>
<p><var>para</var>는 paragraph element를 나타낸다.</p>
<p>
	<kbd>Ctrl</kbd>/<kbd>Cmd</kbd> + <kbd>A</kbd>를 눌러 모든 텍스트를 선택한다.
</p>
<pre>$ <kbd>ping mozilla.org</kbd>
<samp>PING mozilla.org (63.245.215.20): 56 data bytes
64 bytes from 63.245.215.20: icmp_seq=0 ttl=40 time=158.233 ms</samp></pre>

시간과 날짜 마크업 하기

<time>element를 통해 기계가 읽을 수 있는 형태의 시간과 날짜로 마크업 할 수 있다. 예를 들어 페이지에 있는 모든 이벤트 날짜를 자동적으로 잡아 캘린더에 넣고 싶다면, <time> element는 모호하지 않고 machine-readable 한 time/date를 추출할 수 있도록 돕는다.

<!-- Standard simple date -->
<time datetime="2016-01-20">20 January 2016</time>
<!-- Just year and month -->
<time datetime="2016-01">January 2016</time>
<!-- Just month and day -->
<time datetime="01-20">20 January</time>
<!-- Just time, hours and minutes -->
<time datetime="19:30">19:30</time>
<!-- You can do seconds and milliseconds too! -->
<time datetime="19:30:01.856">19:30:01.856</time>
<!-- Date and time -->
<time datetime="2016-01-20T19:30">7.30pm, 20 January 2016</time>
<!-- Date and time with timezone offset -->
<time datetime="2016-01-20T19:30+01:00"
	>7.30pm, 20 January 2016 is 8.30pm in France</time
>
<!-- Calling out a specific week number -->
<time datetime="2016-W04">The fourth week of 2016</time>

문서와 웹사이트 구조

문서의 일반적인 부분

  • 머리말(header)

  • 내비게이션 바(navigation bar): 머리말의 일부분으로 구성되는게 보통이나 접근성을 향상시키기 위한 목적으로 서로 다른 두 개의 내비게이션 바를 만들기도 한다.

  • 메인 컨텐츠(main content)

  • 사이드바(sidebar): 메인 컨텐츠와 맥락적으로 관련된 정보들(작가의 bio, 관계된 기사) 혹은 내비게이션 시스템을 위치시킨다.

  • 꼬리말(footer): copyright, contact info 등 부수적인 정보로 구성되며 SEO를 향상시킬 목적으로 인기있는 컨텐츠로 빠르게 접근할 수 있는 링크를 제공하기도 한다.

컨텐츠 구조화를 위한 HTML

맞는 작업을 수행하기 위해서는 그에 맞는 element를 사용해야 한다. 단순히 컬러와 폰트 사이즈를 변경하는 것은 시각을 가진 사람들의 이목을 끌 수는 있겠지만 시각 장애인들의 경우 컬러와 폰트사이즈는 아무 의미가 없다(12명 중 한 명의 남자, 200명 중 한 명의 여자는 색맹이며 세계 인구의 4-5%가 시각장애인임).
적절한 element의 사용은 스크린리더로 메인 콘텐츠를 찾거나 내비게이션을 찾는 등의 기능적 수행을 올바르게 수행할 수 있게 돕는다.

  • 머리말(header): <header>.

  • 내비게이션 바(navigation bar): <nav>.

  • 메인 콘텐츠(main content): <main>을 사용하며 다른 서브섹션이 있을 경우 <article>, <section> 그리고 <div>를 함께 사용한다.

  • 사이드바(sidebar): <aside>; 주로 <main> 안에 위치시킨다.

  • 꼬리말(footer): <footer>.

<!DOCTYPE html> My page title

Header

Article heading

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Donec a diam lectus. Set sit amet ipsum mauris. Maecenas congue ligula as quam viverra nec consectetur ant hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur.

Subsection

Donec ut librero sed accu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor.

Pelientesque auctor nisi id magna consequat sagittis. Curabitur dapibus, enim sit amet elit pharetra tincidunt feugiat nist imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros.

Another subsection

Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum soclis natoque penatibus et manis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.

Vivamus fermentum semper porta. Nunc diam velit, adipscing ut tristique vitae sagittis vel odio. Maecenas convallis ullamcorper ultricied. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, is fringille sem nunc vet mi.

©Copyright 2050 by nobody. All rights reversed.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />

		<title>My page title</title>
		<link
			href="https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300|Sonsie+One"
			rel="stylesheet"
			type="text/css"
		/>
		<link rel="stylesheet" href="style.css" />

		<!-- the below three lines are a fix to get HTML5 semantic elements working in old versions of Internet Explorer-->
		<!--[if lt IE 9]>
			<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js"></script>
		<![endif]-->
	</head>

	<body>
		<!-- Here is our main header that is used across all the pages of our website -->

		<header>
			<h1>Header</h1>
		</header>

		<nav>
			<ul>
				<li><a href="#">Home</a></li>
				<li><a href="#">Our team</a></li>
				<li><a href="#">Projects</a></li>
				<li><a href="#">Contact</a></li>
			</ul>

			<!-- A Search form is another common non-linear way to navigate through a website. -->

			<form>
				<input type="search" name="q" placeholder="Search query" />
				<input type="submit" value="Go!" />
			</form>
		</nav>

		<!-- Here is our page's main content -->
		<main>
			<!-- It contains an article -->
			<article>
				<h2>Article heading</h2>

				<p>
					Lorem ipsum dolor sit amet, consectetur adipisicing elit.
					Donec a diam lectus. Set sit amet ipsum mauris. Maecenas
					congue ligula as quam viverra nec consectetur ant hendrerit.
					Donec et mollis dolor. Praesent et diam eget libero egestas
					mattis sit amet vitae augue. Nam tincidunt congue enim, ut
					porta lorem lacinia consectetur.
				</p>

				<h3>Subsection</h3>

				<p>
					Donec ut librero sed accu vehicula ultricies a non tortor.
					Lorem ipsum dolor sit amet, consectetur adipisicing elit.
					Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper
					sed, adipiscing id dolor.
				</p>

				<p>
					Pelientesque auctor nisi id magna consequat sagittis.
					Curabitur dapibus, enim sit amet elit pharetra tincidunt
					feugiat nist imperdiet. Ut convallis libero in urna ultrices
					accumsan. Donec sed odio eros.
				</p>

				<h3>Another subsection</h3>

				<p>
					Donec viverra mi quis quam pulvinar at malesuada arcu
					rhoncus. Cum soclis natoque penatibus et manis dis
					parturient montes, nascetur ridiculus mus. In rutrum
					accumsan ultricies. Mauris vitae nisi at sem facilisis
					semper ac in est.
				</p>

				<p>
					Vivamus fermentum semper porta. Nunc diam velit, adipscing
					ut tristique vitae sagittis vel odio. Maecenas convallis
					ullamcorper ultricied. Curabitur ornare, ligula semper
					consectetur sagittis, nisi diam iaculis velit, is fringille
					sem nunc vet mi.
				</p>
			</article>

			<!-- the aside content can also be nested within the main content -->
			<aside>
				<h2>Related</h2>

				<ul>
					<li>
						<a href="#">Oh I do like to be beside the seaside</a>
					</li>
					<li><a href="#">Oh I do like to be beside the sea</a></li>
					<li><a href="#">Although in the North of England</a></li>
					<li><a href="#">It never stops raining</a></li>
					<li><a href="#">Oh well...</a></li>
				</ul>
			</aside>
		</main>

		<!-- And here is our main footer that is used across all the pages of our website -->

		<footer>
			<p>©Copyright 2050 by nobody. All rights reversed.</p>
		</footer>
	</body>
</html>

더 자세한 HTML layout elements

더 자세한 HTML element 참조는 여기에서 확인 가능한다.

  • <main>은 페이지의 유일무이한 콘텐츠를 위한 element다. 따라서 <main>은 페이지 당 하나만 사용해야 하며 <body> 안에 위치시킨다. <main><body> 외의 다른 elements 안에 위치시키지 않는다.

  • <article>은 페이지의 다른 부분 없이도 온전히 이해될 수 있는 관계 콘텐츠로 구성된 블록을 설정한다.(e.g. 하나의 블로그 포스트)

  • <section><article>과 비슷하나 하나의 기능(e.g. 미니맵, 일련의 기사 헤드라인과 요약) 혹은 테마를 구성하는 페이지의 한 부분을 그룹화하는 역할에 더 적합하다. 각각의 섹션은 헤딩(e.g. <h1>)과 함께 시작하고는 한다. 맥락에 따라 <article><section>이 될 수 있고 그 반대가 될 수도 있다.

  • <aside>는 메인 콘텐츠와는 직접적인 관계는 없지만 간접적으로 추가 정보를 제공할 수 있는 콘텐츠를 포함한다.(관계 링크, 저자 bio, 용어사전 등)

  • <header>는 도입부 콘텐츠로 구성된 그룹을 나타낸다. <body>의 child일 경우 웹페이지의 global header로 기능하고 <article> 혹은 <section>에서는 해당 섹션의 header로 기능한다.(title과 headings와 헷갈리지 말 것)

  • <nav>는 페이지의 주요 내비게이션을 포함한다.

  • <footer>는 페이지의 마지막 콘텐츠 그룹을 의미 한다.

비의미론적 포장

특별한 의미를 주지 않고 elements를 포장하려면 <div><span>을 사용할 수 있다.

  • <span>은 일직선(블록 단위가 아닌) 상의 비의미론적 element기 때문에 콘텐츠를 감쌀 수 있는 더 나은 의미론적 텍스트 element가 존재하지 않을 경우 부득이하게 사용하거나 특별한 의미를 두고 싶지 않은 경우에 사용할 수 있다.

  • <div>은 블록 레벨의 비의미론적 element로 더 나은 의미론적 블록 element가 없을 경우에 한해 사용하거나 특별한 의미 없이 사용하고 싶을 경우에만 사용한다.

주의: <div>가 사용하기 편하기 때문에 과하게 사용하는 경우가 많은데 이것은 의미론적 가치를 가지지 못하므로 작성한 HTML 코드가 지저분해 보일 수 있다. 따라서, 문서를 유지하거나 업데이트 하는데 있어 어려움을 겪지 않기 위해서는 이 element를 최소한으로 사용하는 것이 좋다.

줄 나누기와 수평선

  • <br>(줄 나누기 element): <br>은 paragraph에서 줄 나눔을 생성한다.
  • <hr>(주제 나누기 element): <hr>은 텍스트의 주제가 변경되었음을 알리는 수평선을 생성한다.

Dolore qui duis eiusmod irure excepteur magna amet duis reprehenderit cillum.


Minim ex cupidatat deserunt reprehenderit.

<p>Dolore qui duis eiusmod irure excepteur magna amet duis reprehenderit cillum.</p>
<hr>
<p>Minim ex cupidatat deserunt reprehenderit.</p>

간단한 웹사이트 설계

간단한 웹사이트 설계과정 설명

HTML 디버깅

HTML 확인

HTML elements를 잘못 사용해도 브라우저에도 자동으로 보완하여 적용하기는 하나 근본적으로 버그가 수정되는 것은 아니다. W3C에서는 마크업 확인 서비스를 통해 HTML에서 잘못된 부분을 보고해준다.



저작권


Mozilla 기여자가 작성한 MDN에 대해는 CC-BY-SA 2.5 라이선스에 따라 사용할 수 있습니다.


크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.