IT 강좌 HTML 기초 015_HTML5 새로운 기능
HTML5 새로운 기능
HTML5는 HTML의 최신 버전으로, 많은 새로운 태그, 속성, 기능을 도입하여 웹의 기능과 상호작용성을 크게 향상시켰습니다.
HTML5의 흥미로운 새로운 기능들:
- 그림 그리기를 위한 canvas 요소
- 미디어 재생을 위한 video와 audio 요소
- 로컬 오프라인 저장에 대한 더 나은 지원
- article, footer, header, nav, section과 같은 새로운 특수 콘텐츠 요소
- calendar, date, time, email, url, search와 같은 새로운 폼 컨트롤
<canvas>
HTML5 <canvas> 요소는 웹페이지에서 그래픽을 그리는 데 사용됩니다. <canvas> 요소는 JavaScript 기반 그리기 API를 사용하며, 차트, 그래픽, 애니메이션 등 다양한 그래픽을 만드는 데 사용할 수 있습니다.
예제:
<canvas width="500" height="500"> 귀하의 브라우저는 HTML5 canvas 태그를 지원하지 않습니다.</canvas><script> const canvas = document.querySelector("canvas"); // 그리기 컨텍스트 가져오기 const ctx = canvas.getContext("2d"); // 원 그리기 ctx.beginPath(); ctx.arc(250, 250, 100, 0, 2 * Math.PI); ctx.fillStyle = "yellow"; ctx.fill();</script>효과:

<svg>
HTML5 SVG 요소는 웹페이지에서 SVG 그래픽을 만드는 데 사용됩니다. SVG 그래픽은 XML 기반 벡터 그래픽으로, 무손실 확대/축소가 가능하며, 다음을 포함한 다양한 목적에 적합합니다:
SVG 요소에는 다음이 포함됩니다:
<svg>요소: SVG 그래픽의 루트 요소를 정의합니다.<path>요소: 경로 모양을 정의합니다.<rect>요소: 직사각형 모양을 정의합니다.<circle>요소: 원 모양을 정의합니다.<ellipse>요소: 타원 모양을 정의합니다.<line>요소: 직선을 정의합니다.<polygon>요소: 다각형을 정의합니다.<polyline>요소: 절선을 정의합니다.<text>요소: 텍스트를 정의합니다.<g>요소: 그룹을 정의하며, SVG 요소를 함께 그룹화하는 데 사용됩니다.<defs>요소: 여러 SVG 요소에 적용할 수 있는 전역 속성을 정의합니다.
예제:
<svg width="500" height="500"> <circle cx="250" cy="250" r="100" fill="yellow" /></svg>효과:

SVG와 Canvas는 모두 웹페이지에서 그래픽을 만드는 도구입니다. 각각 장단점이 있으며, 다른 시나리오에 적합합니다.
SVG는 XML 기반 벡터 그래픽으로 무손실 확대/축소가 가능합니다. 이는 SVG 그래픽이 품질 손실 없이 모든 크기로 표시될 수 있음을 의미합니다. SVG 그래픽은 CSS와 JavaScript를 사용하여 조작하고 애니메이션화할 수도 있습니다.
Canvas는 JavaScript 기반 그리기 API로 비트맵 그래픽을 만들 수 있습니다. 이는 Canvas 그래픽이 무손실 확대/축소가 불가능하지만, JavaScript를 사용하여 더 복잡한 그래픽을 만들 수 있음을 의미합니다. Canvas 그래픽도 JavaScript를 사용하여 조작하고 애니메이션화할 수 있습니다.
SVG와 Canvas의 구체적인 차이점:
| 특성 | SVG | Canvas |
|---|---|---|
| 이미지 유형 | 벡터 | 비트맵 |
| 확대/축소 | 무손실 | 손실 |
| 그래픽 유형 | 직사각형, 원, 경로 등 | 임의 |
| 조작 | CSS, JavaScript | JavaScript |
| 애니메이션 | CSS, JavaScript | JavaScript |
| 파일 크기 | 일반적으로 작음 | 일반적으로 큼 |
| 접근성 | 우수 | 보통 |
-
SVG 적합한 시나리오:
- 아이콘, 로고, 일러스트와 같이 무손실 확대/축소가 필요한 그래픽
- CSS와 JavaScript를 사용하여 조작 및 애니메이션화해야 하는 그래픽
-
Canvas 적합한 시나리오:
- 게임, 애니메이션과 같이 복잡한 그래픽을 만들어야 하는 시나리오
- JavaScript를 사용하여 복잡한 작업이 필요한 시나리오
HTML5 폼
HTML5는 폼의 기능과 사용성을 향상시키기 위해 몇 가지 새로운 입력 유형과 속성을 도입했습니다.
새로운 폼 요소:
<datalist>요소:<input>요소에 대한 미리 정의된 옵션 목록입니다.
예제:
<label for="browser">브라우저 선택:</label><input list="browsers" id="browser" name="browser" autocomplete="off"><datalist id="browsers"> <option value="Chrome"> <option value="Firefox"> <option value="Safari"> <option value="Edge"> <option value="Opera"></datalist>효과:

| 요소 | 설명 |
|---|---|
<datalist> | <input> 요소에 대한 미리 정의된 옵션 목록을 정의합니다. |
<output> | 계산 결과를 나타냅니다. |
<keygen> | 폼에 대한 키 쌍을 생성하며, 일반적으로 키 교환에 사용됩니다. |
<progress> | 모든 유형의 작업에 대한 진행률 표시줄을 정의합니다. |
<meter> | 알려진 범위 내의 스칼라 값 또는 분수를 측정합니다. |
새로운 폼 속성:
<form>/<input>autocomplete 속성: form 또는 input 필드가 자동 완성 기능을 가져야 함을 지정합니다. 사용자가 자동 완성 필드에 입력을 시작하면 브라우저가 해당 필드에 채울 옵션을 표시해야 합니다.
예제:
<form action="demo-form.php" autocomplete="on"> 성: <input type="text" name="fname"><br> 이름: <input type="text" name="lname"><br> 이메일: <input type="email" name="email" autocomplete="off"><br> <input type="submit"></form>효과:

| 속성 | 설명 |
|---|---|
autocomplete | 입력 필드가 자동 완성 기능을 활성화해야 하는지 지정합니다. |
novalidate | 브라우저의 폼 검증을 비활성화합니다. |
form | <input> 요소가 속한 폼을 지정하여 특정 폼과 연결합니다. |
formaction | 폼을 제출할 때 사용할 URL을 지정합니다. |
formenctype | 폼을 제출할 때 사용할 인코딩 유형(예: application/x-www-form-urlencoded 또는 multipart/form-data)을 지정합니다. |
formmethod | 폼을 제출할 때 사용할 HTTP 메서드(예: get 또는 post)를 지정합니다. |
formnovalidate | 폼을 제출할 때 브라우저의 폼 검증을 비활성화합니다. |
formtarget | 폼을 제출한 후 열릴 대상 창 또는 프레임을 지정합니다. |
height | <input type="image"> 요소의 높이를 설정합니다. |
width | <input type="image"> 요소의 너비를 설정합니다. |
list | <input> 또는 <textarea> 요소와 연결된 <datalist> 요소의 id를 지정합니다. |
min | <input> 요소의 최소값을 지정합니다. |
max | <input> 요소의 최대값을 지정합니다. |
pattern | 폼을 제출할 때 입력 필드를 검증하기 위한 정규 표현식을 정의합니다. |
placeholder | 입력 필드가 비어 있을 때만 표시되는 간단한 힌트를 제공합니다. |
required | 입력 필드가 필수인지 지정합니다. |
step | <input> 요소의 유효한 숫자 간격을 지정합니다. |
새로운 input 유형:
<form action="/submit" method="post"> <label for="name">이름:</label> <input type="text" id="name" required /> <br> <label for="email">이메일 주소:</label> <input type="email" id="email" required /> <br> <label for="birthday">생년월일:</label> <input type="date" id="birthday" required /> <br> <label for="phone">전화번호:</label> <input type="tel" id="phone" required /> <br> <input type="submit" value="제출" /></form>효과:

| 유형 | 기능 |
|---|---|
| color | 색상 값을 입력하는 데 사용됩니다. |
| date | 날짜 값을 입력하는 데 사용됩니다. |
| datetime-local | 날짜와 시간 값을 입력하는 데 사용됩니다. |
| 이메일 주소를 입력하는 데 사용됩니다. | |
| file | 파일을 업로드하는 데 사용됩니다. |
| month | 월 값을 입력하는 데 사용됩니다. |
| number | 숫자 값을 입력하는 데 사용됩니다. |
| range | 범위 값을 입력하는 데 사용됩니다. |
| search | 검색 문자열을 입력하는 데 사용됩니다. |
| tel | 전화번호를 입력하는 데 사용됩니다. |
| time | 시간 값을 입력하는 데 사용됩니다. |
| url | URL 주소를 입력하는 데 사용됩니다. |
[!요약]
| 요소 | 기능 | 추천 여부 |
|---|---|---|
| 새로 추가된 요소 | ||
<canvas> | 차트 및 기타 이미지와 같은 그래픽을 정의합니다. 이 태그는 JavaScript 기반 그리기 API를 기반으로 합니다. | 추천 |
<audio> | 오디오 콘텐츠를 정의합니다 | 추천 |
<video> | 비디오(video 또는 movie)를 정의합니다 | 추천 |
<source> | <video> 및 <audio>의 멀티미디어 리소스를 정의합니다 | 추천 |
<track> | 오디오 또는 비디오의 자막 또는 번역을 정의합니다 | 추천 |
<datalist> | 옵션 목록을 정의합니다. input 요소와 함께 사용하여 input의 가능한 값을 정의합니다. | 추천 |
<keygen> | 폼에 대한 키 쌍 생성기 필드를 지정합니다. | 추천 |
<output> | 스크립트 출력과 같은 다양한 유형의 출력을 정의합니다. | 추천 |
<article> | 페이지의 독립적인 콘텐츠 영역을 정의합니다. | 추천 |
<aside> | 페이지의 사이드바 콘텐츠를 정의합니다. | 추천 |
<bdi> | 부모 요소의 텍스트 방향 설정에서 벗어나도록 텍스트 일부를 설정할 수 있습니다. | 추천 |
<dialog> | 대화 상자를 정의합니다. | 추천 |
<figure> | 이미지 또는 기타 시각적 콘텐츠를 포함하는 영역을 정의합니다. | 추천 |
<footer> | 페이지 또는 페이지 일부의 하단 영역을 정의합니다. | 추천 |
<header> | 페이지 또는 페이지 일부의 상단 영역을 정의합니다. | 추천 |
<main> | 페이지의 주요 콘텐츠 영역을 정의합니다. | 추천 |
<mark> | 중요하거나 강조 표시된 텍스트를 정의합니다. | 추천 |
<meter> | 진행률 또는 값 범위를 정의합니다. | 추천 |
<nav> | 페이지 또는 페이지 일부의 탐색 영역을 정의합니다. | 추천 |
<progress> | 진행률 표시줄을 정의합니다. | 추천 |
<time> | 날짜 또는 시간을 정의합니다. | 추천 |
<wbr> | 텍스트에 줄 바꿈 가능한 문자를 삽입할 수 있습니다. | 추천 |
| 더 이상 사용되지 않거나 권장되지 않는 요소 | ||
<acronym> | 약어를 정의합니다. <abbr> 요소 사용을 권장합니다. | 추천 |
<applet> | Java 애플릿을 정의합니다. JavaScript 또는 기타 최신 기술 사용을 권장합니다. | 비추천 |
<basefont> | 페이지의 모든 텍스트에 대한 기본 글꼴 크기와 색상을 설정합니다. CSS를 사용하여 텍스트 스타일을 설정하는 것을 권장합니다. | 비추천 |
<big> | 텍스트의 글꼴 크기를 설정합니다. CSS를 사용하여 텍스트 스타일을 설정하는 것을 권장합니다. | 비추천 |
<center> | 텍스트를 강제로 가운데 정렬합니다. CSS를 사용하여 텍스트 정렬 방식을 설정하는 것을 권장합니다. | 비추천 |
<dir> | 디렉토리 목록을 정의합니다. <ul> 요소 사용을 권장합니다. | 비추천 |
<font> | 텍스트의 글꼴 크기, 색상, 스타일 등을 설정합니다. CSS를 사용하여 텍스트 스타일을 설정하는 것을 권장합니다. | 비추천 |
<frame> | 프레임을 정의합니다. iframe 요소 사용을 권장합니다. | 비추천 |
<frameset> | 프레임 세트를 정의합니다. iframe 요소 사용을 권장합니다. | 비추천 |
<noframes> | 프레임을 지원하지 않는 브라우저에 대한 대체 콘텐츠를 제공합니다. JavaScript를 사용하여 브라우저가 프레임을 지원하는지 판단하고 상황에 따라 콘텐츠를 표시하거나 숨기는 것을 권장합니다. | 비추천 |
<strike> | 텍스트에 취소선을 설정합니다. CSS를 사용하여 텍스트 스타일을 설정하는 것을 권장합니다. | 비추천 |
<tt> | 텍스트에 고정폭 글꼴을 설정합니다. CSS를 사용하여 텍스트 글꼴을 설정하는 것을 권장합니다. | 비추천 |