Canvas Element 는 HTML 5 에서 가장? 많이 주목받고 있는 새롭게 추가된 element 들 중 하나입니다.
요 녀석때문에 세간에 말이 많죠...
특히나 개발자들한테요...

실버라이트나 플래쉬는 이제 죽는거냐?
"Microsoft 는 이제 Silverlight 를 어떻게 할거냐?" (뭐 이런주제가 Canvas 때문만은 아니겠지만요... ㅋㅋ)
뭐... 우린 그런 거에 신경쓰지 말자고요... ^^

HTML 은 HTML 대로 SilverLight 은 SilverLight 대로의 맡은 역할이 있고 영역이 있는 것이니까요.

사용자들이 어떤 것을 선택할 것이냐가 답이지 않을까요? (헙!! 내 밥줄이 사용자들 손에 달려있다는? ㅋㅋ 걍 둘다 하셔요... 좀 무성의했나요? 죄송... ㅋㅋ)^^;


Canvas 는 할 수 있는 일이 너무도 많습니다.
일단 "Canvas" 라는 말 자체에서도 느낄 수 있듯이, 그림을 그릴 수 있을 것입니다. 이미지도 올릴 수 있습니다. 그렇다면 사진합성도 할 수 있겠죠? 그림을 그릴 수 있으니... 그래프도 그릴 수 있겠죠? 애니메이션도 만들 수 있고요, 게임까지도 "Canvas" 위에서 구현할 수 있습니다. 이 들에 대한 예제는 도처에 널부러져? 있습니다.

할 수 있는 것도 많으니 설명할 것들은 얼마나 많겠습니까? ^^;
많은 것을 한꺼번에 다루기에는... 그래서 꼭 알아야 할 것들만을 간단히 살펴보는 것으로 진행하려 합니다.

10-1. 사용법

<canvas id="vas" width="200" height="300"></canvas>

위 Markup 을 보면 width, height 속성을 부여하고 있습니다만, 만약 이들을 지정해주지 않는다면 기본적으로 background Color 는 "Transparent" 로 width 는 300 pixel, height 는 150 pixel 로 지정합니다.

그리고 사용하는 Web Browser 가 Canvas Element 를 지원하지 않는 경우 다음과 같이 대체해서 보여줄 수있는 이미지를 지정할 수 있습니다.
<canvas id="vas" width="200" height="300">
<img src="eximg.jpg" width="200" height="300" alt="대체이미지" />
</canvas>

그리고 다음과 같이 Javascript 를 이용해서 Canvas Element 에 접근할 수 있습니다.
var vas=document.getElementById('vas');

var cntxt = vas.getContext('2d') // 요로케하면 2d 그림을 그릴 수 있습니당... ^^

혹시나 Canvas Element 를 지원하지 않는 IE 를 사용하시는 분들을 위해서 아래 링크에 가셔서 Javascript 라이브러리를 다운받으셔서 사용해 보시기 바랍니다. (거 있잖아요.. 평면TV 엑스캔 헤벨레.. 하고 이름이 비슷하네효.. ㅋㅋ)



이제 슬슬 canvas 위에 그림을 그려볼까효? ^^

10-2. 2D 도형그리기

먼저 도형을 그려보지요...

<!DOCTYPE HTML>
<html lang="ko">
    <head>
         <meta charset="UTF-8">
        <title>HTML 5 Canvas 예제</title>
    </head>
    <body>
        <canvas id="woojjaCanvas" width="200" height="300"></canvas>
        <script type="text/javascript">
            var canvas=document.getElementById('woojjaCanvas');
            var cvas=canvas.getContext('2d');
            cvas.fillStyle='#FF0000';
            //cvas.fillStyle="rgba(255,0,0,0.3)";
            cvas.fillRect(10,10,80,100);
        </script>
    </body>
</html>


canvas_01.jpg

 

 


fillStyle 은 16진수로 적으셔도 되고요..
cvas.fillStyle="rgba(255,0,0,0.3)"; 와 같이 rgba 값을 이용해도 되는데
a 값은 alpha 값으로 투명도를 나타낸다는 것. 잘 아실테고 값은 0~1 사이값을 넣어주시면 됩니다.
아래 이미지는 rgba 값을 적용한 것입니다.

 

canvas_02.jpg

 


함수
fillRect 속을 채운 사각형을 그립니다.
strokeRect 사각형 테두리만 그립니다.
clearRect 지정한 사각영역을 투명하게 지웁니다.

<!DOCTYPE HTML>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>HTML 5 Canvas 예제</title>
         <style type="text/css">
              #woojjaCanvas { border:1px solid #000000;}
         </style>
    </head>
    <body>
        <canvas id="woojjaCanvas" width="300" height="200"></canvas>
        <script type="text/javascript">
            var canvas=document.getElementById('woojjaCanvas');
            var cvas=canvas.getContext('2d');
            cvas.fillStyle='#FF0000';
            //cvas.fillStyle="rgba(255,0,0,0.3)";
            cvas.fillRect(10,10,150,180);
            cvas.clearRect(20,20,70,90);
            cvas.strokeRect(30,30,200,100);
        </script>
    </body>
</html>


위 Markup 을 Web Browser 로 봤습니다

canvas_03.jpg

 

.

사각형만 살펴보았는데요.
arc 를 이용하여 원을 그릴 수 있습니다.
원그리기는 숙제? ㅋㅋㅋ 

10-3. 선긋기

이번엔 선 긋기를 해보려합니다.

<!DOCTYPE HTML>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>HTML 5 Canvas 예제</title>
     <style type="text/css">
      #woojjaCanvas { border:1px solid #000000;}
     </style>
    </head>
    <body>
        <canvas id="woojjaCanvas" width="300" height="200"></canvas>
        <script type="text/javascript">

            var canvas=document.getElementById('woojjaCanvas');
            var cvas=canvas.getContext('2d');

            cvas.beginPath();

            cvas.lineWidth=15;
            cvas.lineCap="round";

            cvas.lineTo(20, 50);
            cvas.lineTo(100, 150);
            cvas.stroke();

            cvas.lineTo(60, 50);
            cvas.lineTo(140, 150);
            cvas.stroke();

  
            cvas.moveTo(120, 20);
            cvas.lineTo(200, 180);
            cvas.stroke();

            cvas.moveTo(180, 40);
            cvas.lineTo(240, 150);
            cvas.stroke();

            cvas.clothPath();

        </script>
    </body>
</html>

 

canvas_04.jpg

 



직선말고도 quardratiCurve(2차 베지어곡선), bezierCurveTo(3차 베지어곡선) 등의 함수를 이용해서 곡선을 그릴 수 있습니다.


다음은 선긋기를 이용한 도형 그리기입니다.

 

<!DOCTYPE HTML>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>HTML 5 Canvas 예제</title>
         <style type="text/css">
          #woojjaCanvas { border:1px solid #000000;}
         </style>
    </head>
    <body>
        <canvas id="woojjaCanvas" width="300" height="200"></canvas>
        <script type="text/javascript">
            var canvas=document.getElementById('woojjaCanvas');
            var cvas=canvas.getContext('2d');
            cvas.beginPath();
            cvas.lineWidth=15;
            cvas.lineCap="round";
            cvas.lineTo(200, 50);
            cvas.lineTo(240, 100);
            cvas.lineTo(280, 70);
            cvas.lineTo(200, 50);
            cvas.clothPath();
            cvas.fill();
        </script>
    </body>
</html>


canvas_05.jpg

 

 

 
위와 같이 clothPath 함수를 이용하여 선긋기를 닫으면 속이 찬 도형을 그릴 수 있습니다.

10-4. 문자 넣기
문자 넣기 또한 그렇게 어렵지 않습니다.
한번 넣어 볼까요?
textAlign 을 여러가지로 바꿔서 넣어봤습니다. shadow 효과도 넣어봤구요.
<!DOCTYPE HTML>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>HTML 5 Canvas 예제</title>
         <style type="text/css">
          #woojjaCanvas { border:1px solid #000000;}
         </style>
    </head>
    <body>
        <canvas id="woojjaCanvas" width="500" height="300"></canvas>
        <script type="text/javascript">
            var canvas=document.getElementById('woojjaCanvas');
            var cvas=canvas.getContext('2d');

            cvas.font = "30px Gothic";
            cvas.fillStyle = "rgba(255,0,0,1)";

            cvas.shadowColor = "rgba(0,255,0,0.9)";
            cvas.shadowOffsetX="10";
            cvas.shadowOffsetY= "10";
            cvas.shadowBlur="15";

            cvas.textAlign = "start";
            cvas.fillText("SQLER 화이팅!!!", 150, 30);

            cvas.textAlign = "end";
            cvas.fillText("SQLER 화이팅!!!", 150, 70);

            cvas.textAlign = "left";
            cvas.fillText("SQLER 화이팅!!!", 150, 110);

            cvas.textAlign = "center";
            cvas.fillText("SQLER 화이팅!!!", 150, 150);  

            cvas.textAlign = "right";
            cvas.fillText("SQLER 화이팅!!!", 150, 190);

            cvas.textAlign = "center";
            cvas.strokeStyle = "#0000FF";
            cvas.strokeText("SQLER 화이팅!!!", 150, 240);

        </script>
    </body>
</html>


fillText 함수와 strokeText 함수에 따라서 Text 의 모양을 결정할 수 있습니다.
shadow 관련 함수에 따라서 아래와 같이 Text 에 음영을 적용할 수 있습니다.

canvas_text_01.jpg

 

위에 보시는 바와 같이 textAlign 값 변경에 따라서 배치가 달라지는 것을 보실 수 있습니다.^ ^


10-5. 이미지 삽입

그럼 이번엔 이미지를 넣어볼까요?

<!DOCTYPE HTML>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>HTML 5 Canvas 예제</title>
        <style type="text/css">
            #woojjaCanvas { border:1px solid #000000;}
        </style>
        <script type="text/javascript">
            function drawCanvas() {
                var canvas=document.getElementById('woojjaCanvas');
                var cvas=canvas.getContext('2d');
                var ballet = new Image();
                ballet.src='IMG_4687.jpg';
                cvas.drawImage(ballet, 10, 10);
            };
        </script>
    </head>
    <body onload="drawCanvas();">
        <canvas id="woojjaCanvas" width="420" height="286"></canvas>
    </body>
</html>

drawImage 함수를 사용하여 image 를 Canvas 에 그려넣습니다

canvas_image_01.jpg

 


훔...그런데... ie 에서는 이미지가 뜨질 않는군요... ㅡㅡ'

10-6. 그래프

그럼 이미지와 선들을 함께 그려서 그래프를 그려보도록 하겠습니다.

<!DOCTYPE HTML>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>HTML 5 Canvas 예제</title>
        <style type="text/css">
            #woojjaCanvas { border:1px solid #000000;}
        </style>
        <script type="text/javascript">
            function drawCanvas() {
                var canvas=document.getElementById('woojjaCanvas');
                var cvas=canvas.getContext('2d');
                var ballet = new Image();
                ballet.src='canvas_back.png;

                cvas.drawImage(ballet, 10, 10);
                cvas.beginPath();
                cvas.strokeStyle='#FF0000';

                cvas.lineTo(60,313);
                cvas.lineTo(120,166);
                cvas.lineTo(180,76);
                cvas.lineTo(240,250);
                cvas.lineTo(300,70);
                cvas.lineTo(360,200);
                cvas.lineTo(420,120);
                cvas.lineTo(480,70);

                cvas.stroke();

            };
        </script>
    </head>
    <body onload="drawCanvas();">
        <canvas id="woojjaCanvas" width="541" height="364"></canvas>
    </body>
</html>

canvas_graph_01.jpg

 


배경이미지를 그리고나서 그 위에 선을 긋는 방식으로 그래프를 완성 했습니다.
위 Markup 의 값과 그래프의 값이 맞지는 않지만...
이런방식으로 그린다는 것을 보여드리려고... ^^'

10-7. 여러 예제사이트
지금까지는 Canvas 를 단순하게 다루는 것을 설명했었지만, 캔버스는 정말 많은 것을 만들어 낼 수 있습니다.
그런 예가 될 수 있는 사이트는 정말 많은데요...
몇가지 예를 들어 보도록 하겠습니다.

1. Test Drive Site Map
http://ie.microsoft.com/testdrive/Views/SiteMap/Default.html
내의 Canvas 예제

2. Tron

canvas_comics.jpg

 


http://disneydigitalbooks.go.com/tron/

3. MugTug

canvas_mugtug_01.jpg

 



http://mygtug.com/sketchpad/

4. Pacman

canvas_pacman.jpg

 



http://html5games.net/game/google-pacman



지금까지 Canvas 에 대해서 한번 살펴 보았습니다.
살펴본 사항들 보다 살펴보지 못한 사항들이 더 많으니까요.
한번 직접 테스트를 해보시면서 살펴보지 못한 사항들을 체크해 보시기 바랍니다.

그럼...


HTML5 시리즈 강좌 리스트
[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API



HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API



행복한 고수되셔요..

[출처] SQLER.COM http://www.sqler.com/395287

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

 

 

http://www.jumptovb.net


Audio Element 도 HTML 5 에서 관심이 주목되고 있는 새롭게 추가된 element 들 중 하나죠.

Audio Element 도 video Element 와 그 사용법은 다르지 않습니다.
큰 차이점이라면... Poster 속성이 없다는 것!!! 입니다.

그럼 기본적인 사용방법을 살펴보겠습니다.

<audio src="http://www.w3schools.com/html5/horse.ogg"></audio>

그럼 여기에...
audio file 을 자동적으로 재생시키려면...

<audio src="http://www.w3schools.com/html5/horse.ogg" autoplay></audio>
또는
<audio src="http://www.w3schools.com/html5/horse.ogg" autoplay="autoplay"></audio>

이렇게 하면 되겠습니다.

Audio Element 도 Video Element 처럼 Web Browser 가 Audio Element 를 지원하느냐에 따라 실행여부를 알 수 있는데..
Web Browser 가 Audio Element 를 지원하지 않을 때 특정 문구를 표시할 수 있도록 지원 시킬수 있습니다.

<audio src="http://www.w3schools.com/html5/horse.ogg" autoplay>
<p>Your browser does not support audio tag</p>
</audio>

Audio Element 도 Vedio Element 와 같이 재생 control 을 표시할 수 있습니다.

<audio src="http://www.w3schools.com/html5/horse.ogg" controls></audio>
또는
<audio src="http://www.w3schools.com/html5/horse.ogg" controls="controls"></audio>

다음은 Audio Element 가 사용할 수 있는 속성들을 소개하겠습니다.

속성명 기능
src 파일 경로 Source
autoplay autoplay 페이지가 Load 되자마자 사운드를 재생할지를 지정합니다.
controls controls 플레이어를 표시합니다.
loop 재생횟수 audio 를 반복 재생할 횟수를 지정합니다.
preload none, auto, meta Page 가 열리면 audio 를 미리 Load 합니다.

음... 이번엔 audio Element 가 지원하는 Audio 코덱들을 살펴보도록 하겠습니다.
IE FireFox Opera Chrome Safari
Vorbis(oga, ogg) X O O O X
wav, wma O O O X O
mp3 O X X O O
AAC O X X O O


마지막으로 Control 의 모양을 한번 보도록 하죠...

<audio controls="controls" id="ado">
     <source src="
http://test2.momac.net/html5/demo_audio/youaremylife_instrumental.mp3"/>
     <source src="
http://test2.momac.net/html5/demo_audio/youaremylife_instrumental.ogg"/>
     <source src="
http://test2.momac.net/html5/demo_audio/youaremylife_instrumental.wav"/>
     <p>Your browser does not support the audio tag.</p>
</audio>


audio_sample.jpg

 

 


Video 의 Control 모양과 다르지 않죠? ^^


오늘은 간단히 audio Element 에 대해서 살펴보았습니다.

다음은 가장? 관심이 많으실 Canvas Element 에 대해서 알아보도록 하죠...



HTML5 시리즈 강좌 리스트
[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API



HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API


그럼 행복한 고수되셔요..

[출처] SQLER.COM http://www.sqler.com/390814

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

 

http://www.jumptovb.net


Video Element 는 HTML 5 에서 관심이 주목되고 있는 새롭게 추가된 element 들 중 하나입니다.
지금까지 웹페이지에 동영상을 삽입하고 싶을때는 object Element 나 Embed Element 를 사용하여 Flash, media player 와 같은 플러그인을 이용하여야 했습니다.
그러나, 이제 HTML 5 에서는 플러그인없이도 동영상을 웹페이지에 쉽게 삽입할 수 있습니다.
그리고, 다음과 같이 object, embed Element 와는 다른 점이 있습니다.

  • 재생, 일시중지 등 Web Browser 자체 Control 이 있습니다.
  • Source 에 파일을 여러개를 지정할 수 있어서 Web Browser 의 지원 Format 에 따라 표시 할 수 있습니다.

<!DOCTYPE HTML>
<html lang="ko">
   <head>
     <meta charset="UTF-8">
     <title>HTML 5 Video 예제</title>
   </head>
   <body>
     <video width="320" height="240" controls="controls">
       <source src="
http://www.w3schools.com/html5/movie.mp4" type="video/mp4" />
       <source src="
http://www.w3schools.com/html5/movie.webm" type="video/webm" />
       <source src="
http://www.w3schools.com/html5/movie.ogg" type="video/ogg" />
       <p>Your browser does not support the video tag.</p>
     </video>
   </body>
</html>

rowser 별 지원 비디오 코덱을 위 Markup 을 바탕으로 아래 표에 간략히 정리해 보았습니다.
IE 9 FireFox 3.6.17 Opera 11.11 Chrome 12.0.742 Safari 5.0.5
Ogg X O O O X
MPEG 4 O X X O O
WebM X O O X
(IE 10 beta 는 아직 설치를 안해봤으므로 설치하고 업데이트 하겠습니다. ㅡㅡ')

IE 9 에다가 WebM 란에는 "△" 표시를 했는데 이유는요...
기본적으루다가 지원을 하는 것이 아니고...
코난님께서도 소개해주신바 있는 글인데요..
http://blogs.msdn.com/b/ie/archive/2011/03/16/html5-video-update-webm-for-ie9.aspx
를 확인해 보시면 알 수 있듯이...

webM Componenent 를 설치하시고 Refresh 를 하셔야 보실 수 있을 겁니다.
^^
아래 이미지는 설치 과정입니다.

webM_01.jpg

그 해당싸이트는 위와같이 접근 할 수도 있습니다.
http://ie.microsoft.com/testdrive/

 

webM_02.jpg
위 이미지 버튼을 클릭하셔요

클릭해보면.. 아래 페이지로 이동합니다.webM_03.jpg

다시 다운 받을수 있는 곳으로 이동을 합니다.webM_04.jpg

확인하시고요...webM_05.jpg

설치가 다 끝났나 봅니다.webM_06.jpg


아... 인제 보이네요... ^^



그럼 이번에는 각 Web Browser 마다 제공하는 기본 Control 의 모양을 살펴보죠.


IE 의 모양입니다.

Video_Control_IE_01.jpg

 



FireFox 의 모양입니다.

Video_Control_FireFox_01.jpg

 



Safari 의 모양입니다.

Video_Control_Safari_01.jpg

 


 


각 Web Browser 마다 특색이 나타나는 것을 확인해 볼 수 있습니다.


이제 Video Element 를 사용하는 방법을 알아보도록 하겠습니다.

<video src="sqler.mp4" loop="loop">
<p>이 문장이 보인다면 video Tag 를 지원하지 않는 Web Browser 를 사용하고 계시는 겁니다.</p>
</video>

속성 설명
controls 재생 Control 표시를 제어합니다.
autoplay 동영상이 Loading 되면 곧바로 재생을 시작합니다.
autobuffer 이 속성을 사용하게 되면 사용하기 전부터 다운로드가 진행됩니다. 사용자가 재생할 때쯤이면 동영상이 어느 정도 다운로드가 된 상태일 것입니다.
poster 동영상이 Download 중이거나 Buffering 중에 나타낼 이미지를 지정합니다.
loop 동영상을 반복 재생합니다.
width 동영상의 너비를 지정합니다.
height 동영상의 높이를 지정합니다.

하지만, Web Browser 마다 지원하는 동영상이 다르므로 아래 Markup 처럼 둘 이상의 여러 포맷을 준비해 두어 Source Element 를 이용하여 모든 Web Browser 에서 재생가능하도록 해야할 것입니다.

<video controls=controls poster="image/poster/sqler.png">
<source src="media/video/sqler.ogg" type="video/ogg">
<source src="media/video/sqler.mp4" type="video/mp4">
<object data="media/video/sqler.mov">

<p>이 문장이 보인다면 HTML 5 의 video Tag 를 지원하지 않는 Web Browser 를 사용하고 계시는 겁니다.</p>
</object>
</video>


이런 Video Element 는 javascript 를 사용하여 자유롭게 동영상을 조작할 수 있습니다.
너무 간단하긴 하지만 아래와 같은 arkup 으로 Web Browser 가 제공하는 Control 이 아닌 사용자가 직접 제작할 수 있는 Control 을 제작해 보았습니다.
<video id="vdo" src="media/video/sqler.ogg" poster="image/poster/sqler.png">
<p>이 문장이 보인다면 HTML 5 의 video Tag 를 지원하지 않는 Web Browser 를 사용하고 계시는 겁니다.</p>
</video>
<p>
<button onclick="document.getElementById('vdo').pause()">Pause</button>
<button onclick="document.getElementById('vdo').play()">Play</button>
<button onclick="document.getElementById('vdo').currentTime = 0">|<</button>
<button onclick="document.getElementById('vdo').currentTime += 5">>></button>
</p>
<script>
var vdo = document.getElementById('vdo');
if(vdo != null && vdo.addEventListener)
{
vdo.addEventListener(
'ended',
function() {
alert('The video has ended.');
},
false);
}
</script>


아래와 같이 외부 Control 을 확인하실수 있습니다.

Video_Control_IE_02.jpg

 


이 상으로 간단하게 Video Element 를 사용하는 방법에 대해서 간단하게 살펴보았습니다.
동영상 조작을 위한 외부 Contorl 들을 제작하기에도 그리 어렵지 않을 것이라는 생각이 드네요...
그런 생각은 정작 만들면 사라질 수도 있겠지만 말입니다.

다음은 Audio Element 에 대해서 살펴보기로 하겠습니다.



HTML5 시리즈 강좌 리스트
[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API



HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API

행복한 고수되셔요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


PS) www.w3schools.com 사이트를 추가적으로 참조하였음을 말씀드립니다.

[출처] SQLER.COM http://www.sqler.com/390020
 

http://www.jumptovb.net


이번엔 사용자들이 쉽게 웹페이지를 편집할 수 있게하는 Editing API 에 대해서 살펴보도록 하겠습니다.

기존엔 웹페이지에 Editor 를 구현하기위해서 각 업체별로, 개발자별로 Javascript 를 사용하여 각자의 방법으로 개발하였습니다. 하지만, HTML 5 에서부터는 Rich Text 를 편집하기위한 API 가 표준으로 규정되어 있습니다. 그리고 추가적으로 DesignMode thrtjd과 Global 속성인 Contenteditable 속성이 포함되어 있습니다.

5-1. Contenteditable 과 designMode

contenteditable 속성과 designMode 속성은 모두 내용편집이 불가능한 요소를 편집가능하도록 하기위한 API 로, 차이점은
contenteditable 속성은 특정 Element 의 내용을, designMode 속성은 문서 전체를 편집할 수 있게 합니다.

<div id="editor" contenteditable="true"></div>
또는
<div id="editor" contenteditable></div> <!--true 값은 생략가능-->


contenteditable 속성의 값은 세가지를 가질 수 있습니다.
의미
true 편집가능
false 편집불가
inherit 부모요소로부터 상속

contenteditable 속성값이 true 인 요소의 자식 요소들은 기본적으로 true 값을 가집니다.
하지만 아래와 같이 명시적으로 contenteditable 값을 false 로 지정한다면 편집할 수 없습니다. (하지만 부모 div Element 의 contenteditable 의 속성이 true 이므로 그 자식element 인 두번째 div 를 삭제할 수는 있을 것입니다.)

<div id="editor" contenteditable="true">
<div>편집 가능</div>
<div contenteditable="false">편집불가</div>
</div>

(참고 : 웹혁명을 꿈꾸다 HTML 5 & API 입문)

contentEditable_01.jpg

 

 


위 이미지를 보면 상단 Web Browser 가 ie9 이고 아래는 Opera 인데요...
ie9 은 편집불가인 부분도 편집이 되는 문제가 있군요... opera 는 편집불가인 부분은 편집되지 않았습니다.

그리고 이렇게 지정한 contenteditable 의 속성값은 아래와 같이 javascirpt 를 이용하여 해당 Element 의 isContentEditable 속성에 접근할 수 있습니다.

var editor = document.getElementById("editor");
var isEditable = editor.isContentEditable


designMode 속성을 사용하면 문서 전체를 편집할 수 있습니다.
designMode 속성은 document 객체가 갖는 속성으로 "on", "off" 값을 갖습니다. 문서 뿐만이 아니라 iframe 의 contentDocument 속성에 사용하게되면 iframe 내의 내용 또한 편집할 수 있습니다.

<iframe src="about:blank" width="300" height="300" onload="this.contentDocument.designMode='on'"></iframe>


5-2. Rich Text Edit API
위에서 언급한 contenteditable 속성 이나 designMode 속성을 편집모드로 설정한 상태에서 editing API 를 사용하면 편집내용을 Rich Text 로 다룰 수 있습니다.
이때 사용하는 것이 execCommand API 입니다.

이제 execCommand 를 살펴보도록 하겠습니다.
document 객체에서 사용할 수있는 함수로 commandId, showUI, value 세가지의 Parameter를 갖습니다.
이 중 첫번째 Parameter 이외에는 생략할 수 있지만 Command Id 에 따라 값을 지정하여 호출합니다.

document . execCommand(commandId [, showUI [, value ] ] )

이 때, Command ID 로 사용되는 명령어들은 다음과 같은 것들이 있습니다. 이 들을 간단히 살펴보겠습니다.
CommandID 설명
bold 선택한 문자열을 굵은 글씨로 전환합니다.
createLink 선택한 문자열을 하이퍼링크로 전환합니다.
delete 선택한 문자열이나 커서 앞의 문자를 삭제합니다.
formatBlock 선택한 문자열을 지정한 Tag로 감쌉니다.
forwardDelete 선택한 문자열이나 커서 뒤의 문자를 삭제합니다.
insertImage 커서가 위치한 곳에 이미지를 삽입합니다.
insertHTML 문자를 커서가 위치한 곳에 HTML 형태로 삽입합니다.
insertLineBreak 커서의 위치에 줄바꿈을 삽입합니다.
insertOrderedList 커서의 위치에 순서있는 리스트(ol tag)를 삽입합니다.
insertUnorderedList 커서의 위치에 순서없는 리스트(ul tag)를 삽입합니다.
insertParagraph 커서의 위치에 Paragraph (p tag 나 div tag : Browser 마다 구현은 각각 다름) 를 삽입합니다.
insertText 커서의 위치에 문자를 삽입합니다.
italic 선택한 문자열을 italic 체로 전환합니다.
redo undo 를 재실행합니다.
selectAll 편집가능한 컨텐츠를 모두 선택합니다.
subscript 선택한 문자열을 아랫첨자로 전환합니다.
superscript 선택한 문자열을 윗첨자로 전환합니다.
undo 실행을 취소합니다.
unlink 선택한 문자열에 적용된 하이퍼링크를 제거합니다.
unselect 선택을 취소합니다.
VendorID-customCommandID Browser 제작사들 마다의 명령어를 지정하여 호출합니다.

execCommand함수 이외에도 다섯가지의 함수가 더 존재하는데 이 함수들을 이용하면 WYSIWYG Editor 를 만들 수 있을 것입니다.
그럼, execCommand 함수 이외의 다섯가지 함수에 대해서 살펴보도록 하겠습니다.

함수명 설명
document.queryCommandEnabled(commandId) 지정한 명령어(commandId)가 실행가능한지 여부를 반환합니다. 현재 커서의 위치에서 실행가능 여부를 알 수 있습니다.
document.queryCommandIndeterm(commandId) 지정한 명령어(commandId)의 효과가 일정한가 여부를 반환합니다.
document.queryCommandState(commandId) 지정한 명령어(commandId)의 상태를 반환합니다. 현재 커서의 위치에서 실행가능 여부를 알 수 있습니다.
document.queryCommandSupported(commandId) 지정한 명령어(commandId)가 지원되는지 여부를 반환합니다.
document.queryCommandValue(commandId) 지정한 명령어(commandId)의 현재값을 반환합니다.


위 함수들과 commandid 들을 사용하면 쉽게? Editor 를 구현할 수 있겠네요...
하지만 HTML 4와 다른 점이 무엇이 있을까요? HTML 4 에서는 구현하지 못했던 것들이었을까요?
여러분들도 아시겠지만 그렇지 않습니다.
지금까지 많은 Web 개발자들이 제작하고, 또 사용하고 있는 WYSIWYG Editor 들을 보면 알 수 있듯이 예전 부터 만들어 왔고, 계속 사용되어져 왔습니다.
하지만, HTML 5 로 넘어오면서 달라진 점이라고 한다면 표준화하여 API 를 작성하고 통일된 사양아래서 개발할 수 있도록 하였다는데 주목해야 할 것입니다.


Editor 를 제작하면 더 좋았을 듯 하지만 그 내용은 추후에 추가해 보도록 하겠습니다.
(제일 짧은 글이네요... 성의없어 보이는 것은... ㄷㄷㄷ ㅡㅡ'



HTML5 시리즈 강좌 리스트
[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API



HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API


행복한 고수되십시요.

[출처] SQLER.COM http://www.sqler.com/388601

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


http://www.jumptovb.net



1. input Element 의 새로운 Type
web form 은 10년이 넘도록 checkbox, radio, password, select, file, submit, text 와 같은 몇개의 입력타입만 가지고 있었습니다. 많은 이들이 그동안 javascript 와 씨름하느라 몸고생, 맘고생 많이들 하셨으리라... ^^

이젠 새롭게 몇가지?의 Type 이 추가되었습니다.

1-1. datetime, week, month, date, time
날짜 관련 Type 들입니다.
Web Browser 들마다 지원하는 Form 이 다른데요...
Opera 가 젤루다 좋은 것 같아요. 그래서 Browser 비교는 internet explore 9 과 opera 11 과 했습니다.
현재 PC 에 internet explore 10 을 설치할 수 없어서 image Capture 가... ^^;

Markup은 아래와 같이...
<input type="datetime">
<input type="week">
<input type="month">
<input type="date">
<input type="time">
<input type="datetime-local">


입력합니다.

datetime 부터 이미지로 확인해 보죠...

input_datetime_01.jpg

 



 

Opera 에서는 날짜 선택 Control 이 rendering 되네요... ^^

다음은 date Type 입니다.

input_date_01.jpg

 


똑같이 날짜 선택 Control 이 나타나죠?
month Type 은 date Type 과 동일하게 나타납니다.

다음은 Week Type 입니다.

input_week_01.jpg

 


날짜 선택 Control 좌측에 Week 가 표시되어 있는 것을 보실 수 있습니다.

다음은 time type.

input_time_01.jpg

 


시간을 선택할 수 있도록 Spin Control 을 rendering 합니다.



1-2. email
email 을 받아들이는 input type 입니다.
뭐 type 에 email type 을 부여한다고 해서 달라지는 것이 있을까?
email Type 을 지원하지 않는 Web Browser 는 text type 으로 인식을 할 것이고 Web Browser 에 따라서는 Validation Check 까지 할 수 있도록 지원해 줄 것입니다.

email_01.jpg

 

(참고 : naradesign.net)


또한, iphone 의 경우에는 input field 에 커서를 가져갔을 때 "@" 와 "." 이 포함된 Screen Keyboard 를 띄워 줄것입니다.

email_02.jpg

 

(참고 : naradesign.net)

<input type="email" />


1-3. url
이번엔 URL type 입니다.
Web Browser 에서는 text type 의 외관과 별 차이가 없으므로 iphone 에서 어떻게 보이는지만 확인하도록 하죠.

input_url.jpg

 

 

이미지 하단을 보시면 "/" 와 ".com" 버튼이 보이실 겁니다.
URL 에 맞게 Screen Keyboard 가 배치되어 있군요.

<input type="url" />


1-4. color
Color Type 은 여러분이 생각하시기에도 Color 를 선택할 수 있는 Control 이 나타나야 한다고 생각하지 않으십니까?

input_color_01.jpg

 


Opera 에서는 구현이 되어있군요.
먼저 단순한 Color 선택 Control 이 나타나고 "Other..." 버튼을 Click 하게 되면 Color 대화상자가 뜨는 군요...

<input type="color" />


1-5. search
Search Type 또한 외관은 Text Type 과 다르지 않습니다. 그래서 iphone 의 모양을 살펴보도록 하겠습니다.

input_search.jpg

 


보시는 바와 같이 이미지 하단 우측의 버튼이 "Search" 버튼으로 바뀌어 있는 것을 보실 수 있습니다.

<input type="search" />


1-6. number
이번엔 number Type 입니다.

input_number_01.jpg

 


일단 숫자를 마우스로도 입력할 수 있도록 Spin Control 로 rendering 하고 있고요.

input_number_iphone_01.jpg

 


iphone 에서는 Screen Key Board 의 상단에 숫자 Key 가 배열되어 있는 것을 보실 수 있습니다.

<input type="number" min="1" max="100" />


1-7. range
range Type 은 입력형태를 number Type 에서 제공할 수 있는 Spin Control 과는 다르게 Slide Control 로 rendering 합니다.

input_range_01.jpg

 


<input type="range" min="0" max="100" step="10" value="0" />



1-8. tel
tel Type 의 경우는 완전히 숫자만 입력하지요.
iphone 에서는 아래와같이 숫자 입력 Screen Keyboard 가 나타나는 군요... ^^

input_tel.jpg

 


<input type="tel" />

1-9. file
file Type 의 경우 예전에는 하나의 input Tag 에 하나의 파일만 선택할 수 있었습니다.
하지만 HTML 5 에서는 multiple 속성을 주어 여러 파일들을 선택할 수 있고
accept 속성을 사용하여 MIME type 을 선택하여 파일들을 filtering 할 수 있습니다.

<input type="file" accept="image/*" multiple />

위 Tag 를 Markup 하면 아래 이미지와 같은 파일 선택 대화상자가 나타나며 image 를 Filtering 할 수 있습니다.

input__multipleimages_01.jpg

 

 




2. input Element 의 새로운 Attribute

2-1. placeholder

PlaceHolder 가 뭐냐구요?

 

Placeholder_01.PNG

 

 

Placeholder_02.PNG

 


 위 이미지를 보시면 비어있는 TextBox 에 미리 Text을 넣어 두는 것인데요... 사용자가 Click 을 하거나 Control 에 Focus 가 가게되면 Placeholder Text 는 잽싸게 사라지죠.
이젠 이 기능을 javascript 의 도움없이도 사용할 수 있게 되었답니다.

<input name="w" placeholder="Email 을 적어주셔요.">

input_placeholder_01.PNG

 


이렇게 말이죠...

2-2. autofocus
기존의 페이지들은 Autofocus 기능을 Javascript 를 이용해서 구현을 했습니다. 하지만, 구현하는 것이 그리 만만하지는 않았죠. 구현보다도 구현후에 페이지 Loading 과 사용자의 엑션 사이에서 문제가 좀 있었습니다. Page Loading 중 사용자가 입력을 하고 있는 상황이라면 사용자가 원하지 않는 곳(Page Loading 후에 autofocus 가 위치한 곳) 에 입력을 하고 있을 수 있습니다.
사이트 로그인을 하겠다고 id 란에 id 를 입력하고 password 란에 password 를 입력하고 있는데... 그 순간 Focus 가 javascript 에 의해서 다른 입력 Field 에 가 버려서... 입력한 Password 가 훤히 다 보인다면? ㅋㅋㅋ
사용자는 쬐끔 퐝당하겠죠? 이런 경험 한번쯤 있으실지도...

이젠 javascript 를 사용하지 않아도 됩니다. autoscript 속성을 설정하면 page 가 Load 되자마자 Focus 가 설정된 곳으로 이동할 것입니다.
또 Script 가 아닌 Markup 으로 동작하는 것이기 때문에 모든 Web Browser 에서 똑같이 동작할 것이구요. (Web Browser 가 설정해 놓았다면요... 옵션으로 제공할 수도 있겠죠.)

그리고 autofocus 는 다음과 같이 설정하면 됩니다.

<input name="w" autofocus>


2-3. formaction
formaction 속성을 사용하면 Page Form 의 action 이 되는 대상 Page에 가기전에 input Element 단에서 대상 Page 를 바꾸어 버릴수 있습니다.

<form action="woolla.aspx" method="post">
<input type="submit" formaction="woojja.aspx" value="Submit" />
</form>
위 Markup 의 내용을 보면 "woolla.aspx" 페이지로 이동할 것이 "woojja.aspx" 페이지로 이동하게 되겠죠...


3. 새로 추가된 Element

3-1. Keygen Element
Keygen Element 는 form 을 전송할 때 키를 생성하는 Control 입니다. form 이 전송되면 비밀키와 공개 키를 생성하여 비밀키는 Client 측에 저장하고 공개키는 서버에 전송합니다. HTML 5 에서 규정하는 Key 의 Type 은 "RSA" 뿐이므로 keytype 속성에는 "rsa" 만을 사용할 수 있습니다. 지정하지 않아도 기본값으로 지정합니다.
이젠 Keygen 요소를 사용하여 기존 ActiveX 를 사용하던 방식을 떨쳐버릴수 있을 것입니다. 기다려보도록 하죠...

<keygen name="key" type="rsa">


3-2. Output Element
Output Element 는 무언가의 계산 결과를 나타냅니다.
range Element 와 output Element 를 함께 사용하는 예를 살펴보도록 하지요.

<input type="range" id="rng" value="0"><output onformchange="value=form.elements.rng.value" for="rng">0</output>

outputElement_01.jpg

 

 


output Element value 속성을 넣을 수 없으므로 주의하시길...

3-3. progress Element
Progress Element 는 작업의 진행정도를 나타냅니다.

<progress value="0.75" max="1">0</progress>

progressElement_01.jpg

 

 



3-4. meter
meter Element 는 한정된 범
meter Element 는 한정된 범위에서의 값을 나타내고 싶을때 사용하는 것으로 최솟값과 최댓값을 지정할 수 없는 곳에서는 meter Element 를 사용할 수 없습니다.

예를 한번 볼까요?

<meter value="25" min="0" low="30" high="70" max="100" optimum="100">25점</meter>


meterElement_01.jpg

 



지금까지 새로 추가된 Element 들 중 중요하다고 생각한 것들을 중심으로 간략하게 살펴보았습니다.

어떤가요? 지금까지 고생하던 것들이 조금은 사라질 것 같지 않습니까? ^^
저만 기분이 좋아진걸 까효? ^^;

마지막으로 페이지하나 소개하려합니다.
사용하는 Web Browser 를 이용하여 아래 Page 를 가셔서 input type 의 속성 지원여부를 확인할 수 있습니다.
http://miketaylr.com/code/input-type-attr.html

한번 방문해 보시기 바랍니다.

아 참...
위 내용들은 본인의 생각도 물론 많이? 포함되어 있지만


등을 참고했습니다.


HTML5 시리즈 강좌 리스트
[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API



HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API



행복한 고수되셔요.

[출처] SQLER.COM http://www.sqler.com/388439

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

http://www.jumptovb.net


2-3. article Element
article Element 는 블로그에 포스트된 글들, 뉴스사이트의 기사들의 묶음 같은 독립된 하나의 컨텐츠를 나타내며, 게시판 글이나 블로그 포스트의 댓글들, 위젯, 가젯영역 또한 article Element 의 영역이라 할 수 있겠다.
아래 그림을 참고하자.
각 포스트들은 Section 으로 나뉘고 Section 들을 하나의 article Element로 감싸고 있는 모습을 볼 수 있다.
단순히 페이지의 메인 컨텐츠라고 해서 전체를 article Element 로 감싸서는 안되므로 해당 컨텐츠가 영역의 성격에 적합한지 항상 다시한번 체크해 보아야 할 것이다.

Simentic.jpg

 
2-4. aside Element
aside Element 는 보충기사, 사이드바, 광고 와 같이 Main 컨텐츠와는 관련이 적어 분리될 수 있다고 생각되는 것에 사용한다.
또한 이전 글의 nav Element 에서 살펴봤듯이 nav Element 들을 Group 화 할때도 사용할 수 있다.
컨텐츠에 직접적으로 관련이 되어 있어서 만약 삭제되면 컨텐츠내용이 구성되지 않는 내용이 있다면 그 부분은 aside Element 를 사용하면 안된다.
위 이미지의 경우는 main Content 로서 내용을 설명하고 있으므로 aside Element 를 사용하면 안되겠지만. 위 그림의 aside 부분이나 아래 그림의 도서쇼핑몰의 추천 도서과 같은 내용은 Main Contents 와는 직접적인 관계는 없으므로 aside Element 를 사용하기에 적합하다고 할 수 있다.

Section_05.jpg

 


aside Element 의 경우 컨텐츠의 내용과 제작자의 의도에 따라서 다른 Element 로 사용할 수 있으므로 Outline 구성 Element 중에서 조심스럽게 사용해야하는 Element 중 하나다.

2-5. hgroup Element
hgroup Element 는 제목과 이에 따르는 소제목이나 부제, Catchphrase 를 그룹화하기 위해 사용하는데, h1~h6 Element 만 포함할 수 있다.

HTML 5 의 hgroup Element 를 사용하기 이전, HTML 4.01 에서 아래와 같은 index 를 가진 Page를 제작하기 위해서는

hgoup_01.jpg

뭐 간단히 만든다하면...
<h1>HTML 5</h1>
<h2>3. Semantics, structure, and APIs of HTML documents</h2>
<h3>3.2 Elements</h3>
<h4>3.2.5 Content models</h4>
<h5>3.2.5.1 Kinds of content</h5>
<h6>3.2.5.1.7 Interactive content</h6>
<p>
Interactive content is content that is specifically intended for user interaction.</br></br> aaudio (if the controls attribute is present)buttondetailsembediframeimg (if the usemap attribute is present)input (if the type attribute is not in the Hidden state)keygenlabelmenu (if the type attribute is in the toolbar state)object (if the usemap attribute is present) selecttextareavideo (if the controls attribute is present)
</p>

아래 같이 표현이 될 것이다.

hgoup_02.jpg

 

그런데, 만약에 한 Depth 더 내려가야한다면? ㅡㅡ'
어떻게 표현해야 할까?

HTML 4.01 까지는 한계가 있었다.
HTML 5 부터는 Outline 구성Element 에는 HeadLine Element Level의 높고 낮음에 따라 Outline 이 결정되며 H1 이나 H2와 같은 높은 Level 의 Headline Element 들도 이제는 각 Section 이나 Article 같은 Outline 구성Element 어디에서나 사용할 수 있게되었다. 

그럼, 이번엔 다음 이미지를 보자

hgoup_03.jpg

 

이 HTML 문서의 붉은 색 줄
Headline Tag 다음 P Tag 를 이용해서 Headline 을 설명해주고 있다.
겉으로 보기엔 차이가 나지 않는다.
하지만 아래 Mark UP 을 보면 둘의 차이를 알 수 있는데 hgroup 의 용도를 알 수있을 것이라 생각한다.

<!DOCTYPE HTML>
<html lang="ko">
<HEAD>
<meta charset="UTF-8">
 <title>HTML 5 예제</title>
</HTAD>
<body>
 <header>
  <h1>HTML 5</h1>
 </header>
 <section>
  <h1>3. Semantics, structure, and APIs of HTML documents</h1>
  <p>....</p>
  <section>
   <h1>3.2 Elements</h1>
   <p>....</p>
   <section>
     <h1>3.2.5 Content models</h1>
    <p>....</p>
    <section>
      <h1>3.2.5.1 Kinds of content</h1>
     <h2>3.2.5.1.6 Embedded content</h2>
     <p>
      Embedded content is content that imports another resource into the document, or content from another vocabulary that is inserted into the document.
     </p>
    </section>
    </section>
   </section>
   <section>
     <hgroup>
      <h1>4. The elements of HTML</h1>
      <h2>4.8 Embedded content</h2>
      <h3>4.8.1 The img element</h3>
      <h4>4.8.1.1 Requirements for providing text to act as an alternative for images</h4>
      <h5>4.8.1.1.1 General guidelines</h5>
     </hgroup>
     <p>
      Except where otherwise specified, the alt attribute must be specified and its value must not be empty; the value must be an appropriate replacement for the image. The specific requirements for the alt attribute depend on what the image is intended to represent, as described in the following sections.      </p>
    </section>
 </section>
 <footer>
  footer
 </footer>
</body>
</html>


위 파란색 Section 의 <P> Tag 는 H2 Headline 의 내용임을 나타낸다.
하지만 붉은색 Section 의 <P> Tag 는 Hgroup 에 해당되는 내용임을 나타낸다. 이와 같이 Headline 을 여러개로 묶을 필요성이 있을때 Hgroup Element  를 사용하게 된다.


아래 내용의 경우 위 Headline 을 Hgroup 으로 묶을 수 있을 것이다.

 

hgoup_04.jpg

 

2-6. Header, Footer Element
Header Element 는 Section 의 Header 를 나타낸다.
Header Element 에는 HeadLine Element 나 hgroup, nav Element 를 넣는다.
Footer Element 는 Section이나 Page 의 Footer 를 표현한다.
Section 의 저자정보나, 관련링크, 저작권표기등을 표현하는데 사용한다.
몇번을 사용가능하지만, 사용하는 위치에 따라서 각각의 의미가 달라진다.
page 의 Body Tag 내의 Footer 는 Page 의 Footer, 블로그 포스트등의 article 내의 Footer 는 블로그 포스트에 관한 Footer 정보가 된다.
Footer Element 는 주로 페이지나 Section 의 마지막에만 사용하는 것은 아니다.   

아래는 스타일시트가 적용되어 있지는 않아 썰렁하지만, Blog Site 의 Header 와 Footer 를 표현해 보았다.
<!DOCTYPE HTML>
<html lang="ko">
<HEAD>
<meta charset="UTF-8">
 <title>Jump To VB.NET</title>
</HTAD>
<body>
 <header>
  <hgroup>
    <h1>Jump To VB.NET</h1>
    <h2>Have a nice day~!</h2>
  <hgroup>
  <nav>
    <ul>
      <li><a href="...">home</a></li>
      <li><a href="...">tag</a></li>
      <li><a href="...">media</a></li>
      <li><a href="...">location</a></li>
      <li><a href="...">guest</a></li>
      <li><a href="...">admin</a></li>
      <li><a href="...">write</a></li>
    </ul>
  </nav>
 </header>
 <section>
 <p>...</p>
 </section>
 <footer>
  <nav>
    <ul>
      <li><a href="...">home</a></li>
      <li><a href="...">tag</a></li>
      <li><a href="...">media log</a></li>
      <li><a href="...">location log</a></li>
      <li><a href="...">guestbook</a></li>
      <li><a href="...">admin</a></li>
      <li><a href="...">write</a></li>
    </ul>
  </nav>
  <p><small>Copyright &#169;2007-2009 woojja All Rights Reserved</small></p>
 </footer>
</body>
</html>

hgoup_05.jpg

 

hgoup_06.jpg

 

hgoup_07.jpg

 


3. Text 의미 부여 Element
Text 의미 부여 Elemnet 에는 a, em, strong, small, cite, i, b, span 등 여러 Element들이 있다. 그 중 HTML 5 에 추가된 대표적인 mark, date Element 에 대해서 알아보도록 하겠다.

3-1. mark Element
mark Element 는 설명을 위해 특정키워드를 강조한다거나 인용문의 일부를 강조하기위해 또는 검색결과의 검색 키워드를 강조하는등의 시각적 주목효과를 Text 에 주려 한다는 것을 표현하기 위해 사용한다.

mark_01.jpg

 

보는 바와 같이 mark Element 를 사용하여도 외관상 Browser 에는 나타나지 않는다. 외관은 CSS 를 사용하여 표현을 해야할 것이다.

3-2. Time Element
Time Element 는 Browser 나 Robot 등이 시간을 정확히 이해할 수 있어야 한다는 것을 전제로 만든 Element 라고 한다. 그러므로 애매한 시점을 나타내는 표현에 이 Element를 사용하면 안된다.

<time>06:43:21</time>
<time>2011-05-31</time>
<time>2011-05-31T06:43</time>
<time>2011-05-31T06:43:21+09:00</time>

Time Element 표현하는 방법은 아래와 같다.
연월일 : 붙임표 ==> 2011-05-31
연월일 시각 구분:대문자 T ==> 2011-05-31T06:43
시분초 구분 : 콜론(:) ==> 2011-05-31T06:43:21
타임존 포맷 추가 : +,- 표시  ==> 2011-05-31T06:43:21+09:00

년도, 월, 월일, 일, 시, 분, 초 만을 나타낼 수는 없다.
Time Element 는 두가지 속성이 있다. datetime 과 pubdate 인데

datetime 속성의 경우 아래와 같이 사용하여
<time datetime="2011-05-31">05월 31일</time>
<time datetime="04:30">기상시간</time>
표현하려는 내용을 컴퓨터가 이해할 수 있는 날짜 형식으로 넣을 수 있다.

pubdate 는 말그대로 published date 다.
블로그 article 을 작성한 시간, 페이지를 작성한 시간등을 나타낼 때 사용한다.
당연히 각 Section 마다 단 한번만 사용할 수 있다.
아래와 같이 사용할 수 있을 것이다.

time_01.jpg




4. 상호작용 Element

4-1. Details Element
Details Element 는 사용자에게 추가적인 상세 정보를 제공할때 사용한다. 
Detail Element 에는 제일 처음에 Summary Element 를 넣어 추가정보의 요약이나 설명을 제공하고 Summary Element 다음에 상세한 정보를 입력하는데 그 순서를 반대로 해서는 안된다.
반듯이 Summary Element 를 제일 처음으로...

또 한가지 기억해야 할 것은 Details Element 를 보충설명이나 각주등의 용도로 사용해서는 안된다는 것이다.
<!DOCTYPE HTML>
<html lang="ko">
<HEAD>
<meta charset="UTF-8">
 <title>Jump To VB.NET</title>
</HTAD>
<body>
  <header>
    <hgroup>
      <h1>Jump To VB.NET</h1>
      <h2>Have a nice day~!</h2>
    <hgroup>   </header>   <section>
    <hgroup>
      <h1>사진촬영갑니다.</h1>
      <h2>석모도 낙조</h2>
    <hgroup>
 
    <details open="open">
      <summary>석모도 출사 정보</summary>
        <p>석모도 낙조 촬영정보 아래와 같습니다. 참고하세요.</p>
        <ul>
          <li>모델:woojja</li>
          <li>시간:<time datetime="2011-06-30T18:00:00+09:00">2011년 6월 30일 저녁 6시</time>입니다.</li>
          <li>장소:석모도 언저리</li>
        </ul>
    </details>

  </section></body>
</html>


details_01.jpg

 

Summary Element 는 Open 속성을 가지고 있는데 이 속성은 Details Element 의 상세정보를 기본적으로 보여줄지, 숨길지 여부를 나타낸다.

위 Markup 과 그림을 보면 알수 있 듯이 단순히 Text 를 표시하고 있는데... 내용을 표시하고 숨기는 기능은 javascript 를 사용하여 제어한다.

아래 Site 를 참고 해보면 어떨까?  ^^
http://remysharp.com/demo/details-with-js.html

 
4-2. Menu Element 와 Command Element
Command Element는 사용자가 호출할 수있는 명령을 나타낸다.
아래 그림과 같은 명령아이콘을 구성할 수 있을 것이다.

command_01.jpg

 

Menu Element 는 Form Control List 나 Command List 를 만들때 사용하는데 Command Element 는 Menu Element 내에 포함시켜 사용해야하며 Radio Button 이나 CheckBox, Button 을 이용하여 명령어 박스를 만들 수 있게 해준다.
Command Element 는 nav Element 와는 성격이 조금 달라서 URL 링크나 Form Action 을 처리하지 않는다.

아래는 Command Element 와 Menu Element 에 대한 Markup 예이다.

  <div>
    <menu type="toolbar">
      <command type="radio" radiogroup="alignment" checked="checked"
          label="Left" icon="icons/alL.png" onclick="setAlign('left')">
      <command type="radio" radiogroup="alignment"
          label="Center" icon="icons/alC.png" onclick="setAlign('center')">
      <command type="radio" radiogroup="alignment"
          label="Right" icon="icons/alR.png" onclick="setAlign('right')">
      <hr>
      <command type="command" disabled
          label="Publish" icon="icons/pub.png" onclick="publish()">
    </menu>
  </div>


  <div>
    <menu type="toolbar">
      <li>
        <menu label="File">
          <button type="button" onclick="fnew()">New...</button>
          <button type="button" onclick="fopen()">Open...</button>
          <button type="button" onclick="fsave()">Save</button>
          <button type="button" onclick="fsaveas()">Save as...</button>
        </menu>
      </li>
      <li>
        <menu label="Edit">
          <button type="button" onclick="ecopy()">Copy</button>
          <button type="button" onclick="ecut()">Cut</button>
          <button type="button" onclick="epaste()">Paste</button>
        </menu>
      </li>
      <li>
        <menu label="Help">
          <li><a href="help.html">Help</a></li>
          <li><a href="about.html">About</a></li>
        </menu>
      </li>
    </menu>
  </div>

(출처:http://www.w3.org/TR/html5/interactive-elements.html)

아래 이미지는 위 menu Element Makrup 을 표현한 화면이다.
 

sample-toolbar-1.jpg

(출처:http://www.w3.org/TR/html5/interactive-elements.html)



여기까지 Sementic Element 들에 대해서 간단히? 짚어 보았다.

글을 진행하면서 계속 느끼는 것이지만 조금더 간단히 쓸수 있지 않을까를 생각한다.
언제쯤 글이 간단명료해져서 내용이 확~! 줄어들수 있을까? ㅋㅋㅋ
오늘도 긴글 읽어 주신분들 수고하셨습니다.



HTML5 시리즈 강좌 리스트
[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API



HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API

행복한 고수되십시요.

[출처] SQLER.COM http://www.sqler.com/385760

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

http://www.jumptovb.net



이번 주제는 Sementic Element 이다.
HTML 4 vs HTML 5 (1), (2) 주제의Contents Model 과  Language  에서 언급되었던 이야기를 조금 더 자세히, 특히 아웃라인인과 과 관련된 엘리먼트를 좀 더 살펴보려고 한다.

아래 내용들은 본인의 생각도 물론 많이? 포함되어 있지만

등을 참고하고 재구성 했음을 미리 말씀드립니다.

<!DOCTYPE HTML>
<html lang="ko">
  <head>
    <
meta charset="UTF-8">
  <title>HTML 5 예제</title>
  </head>  <body>
    <!-- 아시다시피 여기서부터 Body Contents 가 들어가겠죠? -->
    <p>안녕하시렵니까? HTML 5?</p>
  </body>
</html>
위 예제가 생각나시는지 모르겠다.
^^
위 요소들을 몇가지 살펴보려한다.


1. 문서타입과 Root 요소

1-1. 문서타입.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


이 문서타입은 Microsoft 가 Mac 용 internet explorer 5 를  개발하면서 예전에 만든 HTML페이지들이 제대로 표시되지 않는 심각한 문제가 발생하여, 이를 해결하기 위해서 문서의 상단에 HTML DocType 을 추가하였다...
Mac 용 Internet explorer의 경우 이 DocType 을 확인하도록 하여 이 DocType 이 포함되지 않은 기존 HTML 페이지는 옛날방식으로 렌더링하도록 하였다.

그래서 새 명세를 적용하려면 HTML Element 앞에 적절한 Doc Type만 지정하면 됐다.

그런데 아이디어가 남용되면서 (^^;) 명세를 최대한 지키는 표준모드와 표준을 따르지 않는 비표준모드로 나뉘고, 또 몇몇 요소에서 표준을 따르지 않는 준 표준모드까지 나오게 되었다.

위 DocType 은 여러 표준 Doc type 중 하나다 나머지는 이곳(http://www.w3.org/QA/2002/04/valid-dtd-list.html) 에서 확인할수 있다.

여러분이 생각해도 정리를 해야할 것 같다는 생각이 들지 않는가?
그래서 확~! 줄여서 나온 DocType !!!

<!DOCTYPE HTML>

인 것이다.
머리나쁜 본인도 외운다. ㅋㅋㅋ
그리고 모든 브라우져가 표준모드로 작동할 것이다.
한가지 주의할 점은 있는데...
맨 첫줄에 써주어야 한다는 것이다. 빈줄이 있으면 안된다는 것.
그렇지 않으면 비표준모드로 랜할 수 있다는...

그리고 또 한가지...
기존에 HTML 4.01 이나 XHTML 1.0, 1.1 로 작성한 페이지를 HTML 5로 변환하는 작업의 시작!!! 이라는 것. ^^

1-2. Root Element
HTML 페이지의 루트 엘리먼트인 <HTML> 는 기존에 XHTML 에서 사용하는 namespace 가 포함되어있었는데 이제 HTML 5 에서는 Lang 속성만 있다.( manifast 속성은 추후에 다시 알아보기로 하자...)
그래서... 
<html lang="ko"> 만 적으시면 된다.

1-3. <head> Element
head Element 는 변화 요소가 거의 없는데 문서의 Metadata 를 담는 Element 이며
Title Element 가 필수로 들어가고 Meta Element, Link Element, Script Element 가 들어간다는 것은 기본적인 사항이라 모두들 알고 있을 것이다.

1-4. Meta Element
Meta Element 는 Content 속성을 사용해서 나타내는데 이번에 새로 Charset 속성을 사용하여 문자 Encoding 을 나타낼 수 있게되었습니다.
HTTP Header 에 문자 Encoding 이 포함되어 있다면 Meta Element 의 문자 Encoding 보다 우선한다는 것도 알아두시길...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
위와 같이 적긴하지만 다른 요소들은 생략하시더라도 아래와 같이 charset을 포함한 Meta Element 를 포함하기 바란다.
<meta charset="utf-8">


2. 아웃라인 구성 Element들
이번엔 이번에 추가된 아웃라인을 구성하는 Element 들을 살펴보려한다.
이전 글에서 소개했듯이 HTML 5 에 문서의 구조화와 관련된 요소들이 많이 추가되었다.

아래와 그림과 같이 간단히 나타낼 수 있는데 하나하나 중요하게 생각해야하는 사항들만 짚어 보도록 하자.

Simentic.jpg



2-1. Section Element

Outline 을 구성하는 Element 들을 설명하기 위해서는 먼저 Section Element 를 알아봐야 할 것이라 생각한다.
Section Element 는 일반적인 Section을 나타낸다.
그런데 의미 자체로만 보게되면 기존에 사용하던 Div Element 와 사용하기에 혼동하기 쉽다.
Section Element 는 장이나 절 단위를 나타낸다고 생각하면 된다. 스타일을 적용하기위해서 Section Element 를 사용해서는 안되며 그런 용도라면 Div Element 를 사용하도록 해야한다.
Section Element 는 장이나 절을 나타내므로 제목과 본문을 하나로 묶을 때 사용합니다.
만약에 아래와 같이 제목과 본문에 스타일을 적용하고 싶다거나 구분을 지으려 한다면 Div Element 를 사용해야 할 것이다.



 

<section class="title">
<h1>제목</h1>
<section class="content">
<p>본문</p>
</section>
</section>


위와 같이 Element 를 구성하게되면 제목과 본문을 다른 Section 으로 해석하게 될 것이다.
본문의 Level 이 하나 더 내려가게 되겠지?

그래서 위그림과 같은 구조에서는 아래와 같이 Mark up해야 할 것이다.
<section class="title">
<h1>제목</h1>
<div class="content">
<p>본문</p>
</div>
</section>

또한 아래와 같은 구성에서도
각각을 모두 Section Element 로 나누는 것이 아닌 HTML 5 의 OutLine 구성 Element 들을 적절히 사용하여 구성해야 할 것이다.


<body>
<header>제목</header>
<div class="left">
<nav>...
</nav>
</div>
<div>
<article>...
</article>
</div>
<div>
<aside>....
</aside>
</div>
<footer>....</footer>
</body>


이와 같이 말이다...
아직 언급하지 않은 Element 가 있지만 후에 알아볼테니 그런것이 있구나 식으로 생각하시면 되겠다. ^^'

2-2. nav Element
nav Element 는 Navigation Section 을 나타냅니다. 페이지상의 Header 나 좌측, 우측에 표현하는 Link 모음이고 간혹 Footer 에도 표현하기도 하지요.
모든 Link 에 nav Element 를 사용하면 안되겠고, 다시한번 이야기 하지만 스타일을 적용하기 위해서 nav Element 를 사용하면 안될 것이다.
또 한가지!! Site Map Page 를 nav Element 로 표현해서도 안될 것이다. Site Map 의 Link 는 nav 특성보다는 Main Contents 이기 때문에...

주로 nav Element 내에 ul Element 를 사용하여 목록으로 Navigation Link 를 Markup 한다.

이번엔 nav Element를 그룹화하는 방법을 몇가지 알아보죠.


 


위 이미지는 제 블로그의 우측에 있는 링크들이다.
붉은 부분만 떼어놓고 본다면 아래와 같이 Markup 할 수 있을 것이다.
<nav>
<h3>카테고리</h3>
<ul>
<li><a href="...">분류전체보기</a></li>
<li><a href="...">VB.NET</a></li>
...
</ul>
</nav>
<nav>
<h3>글보관함</h3>
<ul>
<li><a href=">2011/05(8)</a></li>
<li><a href=">2011/04(4)</a></li>
...
</ul>
</nav>

한가지 더 생각해 보자면
위 그림상에 있는 컨텐츠의 내용은 aside element 에 속하는 것으로
아래와 같이 nav Element 들을 aside Element 내에 포함시킬 수 있을 것이다.
<aside>
<nav>
<h3>카테고리</h3>
<ul>
<li><a href="...">분류전체보기</a></li>
<li><a href="...">VB.NET</a></li>
...
</ul>
</nav>
<nav>
<h3>글보관함</h3>
<ul>
<li><a href=">2011/05(8)</a></li>
<li><a href=">2011/04(4)</a></li>
...
</ul>
</nav>
</aside>


이렇게 말이다.

글이 너무 길어진듯하여 나누어야 겠다.
다음 글에서는 article Element 부터 진행하도록 하겠다.



HTML5 시리즈 강좌 리스트
[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API



HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API

행복한 고수되십시요...

[출처] SQLER.COM http://www.sqler.com/384917

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

 

http://www.jumptovb.net


HTML4 vs HTML5

마치 K1 에서 둘이 싸워야할 듯... ^^;


이번엔 두 버전 간의 차이점을 살펴보려 한다.
W3C 친절하게도? 두 버전간의 차이점에 대한 문서를 오픈해 놓았다.
http://www.w3.org/TR/2010/WD-html5-diff-20100304/
인데...
"친절하게도" 라고 쓴 이유는 HTML 4 인 경우 HTML 에 대한 GuideLine  아주 간단히 제공했었다고 한다.

솔직히 이 문서만 봐도 HTML 4 와 HTML 5 의 차이는 바로 알 수 있을듯? ^^;
한번 꼭 살펴보시길 (말도 안되는 나의 영어 실력에... 이 아티클의 오류를 위 문서로 채우시길... ㅡㅡ')

소개할 내용은 위 링크를 통해 살펴보게될 내용을 바탕으로 진행을 하도록 하겠다.

위 문서는 두 버전간의 차이점을 크게 세가지로 구분해 놓았다.

1. Syntax (구문)
2. Language (언어)
3. API

이 세가지는 다시 여러 항목으로 나뉘는 데 그 사항들은 후에 다시 자세히? 다룰 예정이니
이 글에서는 간단히 살펴보고 넘어가려한다.


1. Syntax

먼저 간단한 HTML 5 예제를 보자.
<!DOCTYPE HTML><html>
  <head>
    <meta charset="UTF-8">
    <title>HTML 5 예제</title>
  </head>  <body>
    <!-- 아시다시피 여기서부터 Body Contents 가 들어가겠죠? -->
    <p>안녕하시렵니까? HTML 5?</p>
  </body>
</html>


위에서 부터 한번 쭈욱 훑어보면 알 수 있으리라...

 

1-1. DOCTYPE

먼저 DOCTYPE 을 볼 수 있다.
너무도? 간결하지 않은가?
HTML 5 문서라면 최상단에(Enter-개행문자 도 들어가면 안된다.) 반드시 넣어줘야한다. ^^
DOCTYPE 은 "HTML" 과 "XHTML" 두가지가 있다.
HTML 5 문서를 작성할 때 HTML 로 작성할지, XHTML 로 작성할지 첫부분에 선언해 준다는 것으로 HTML 문법을 따르도록 할 것인가? 아니면 XML 문법을 따르게 할 것인가 를 결정하는 것이라고 보면 되겠다.
참고로 HTML 5 가 따르는 HTML 문법을 "HTML5", HTML 5 가 따르는 XML문법을 "XHTML5" 라 부른다.

위 문서는 "탁" 보면 "착" 알수 있듯이.
HTML5 문법을 따르도록 작성할 것이라는 것을 알 수 있다.

1-2. Encoding

그 다음 보이는 것이 Charset. 바로 Encoding  에 대한 사항이다.
기존 HTML 문서에서 볼 수 있는
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
와는 다르게
<meta charset="UTF-8">

무척이나 간단해진 것을 알 수 있을 것이다.

1-3.  SVG, MathML
그리고 아래 글상자와 같이 HTML 문서안에 SVG 나 MathML 을 사용할 수 있다.

<!doctype html>
<title>SVG in text/html</title>
<p>
 A green circle:
 <svg> <circle r="50" cx="50" cy="50" fill="green"/> </svg>
</p>

흠... 그리고...
Tag 이름은 XHTML Type으로 작성하든 HTML Type 으로 작성하던간에 대소문자를 가리지 않는다는 점...

이 정도면... 될 것 같은데... 또 필요한 사항이 있으면 추후에... ^^; 

2. Language

오호~~ 이제 본격적으로 HTML 4 와 HTML 5 간의 특징들을 살펴보겠다.
새로 만들어진 Element와 Attribute, 변경된 Element 와 Attribute, 없어져 버린 Element 와 Attribute 등으로 나눠서 알아보자.

2-1. 새롭게 추가된 Element
이번에 추가된 Element 에는 특히나 Sementic 요소들이 많이 추가가 되었다.
아래 표는 이번에 추가된 Sementic Element 들이다.
Element
설명
 Header  문서의 Header 를 나타낼 때 사용한다.
 Footer  문서의 Footer 를 나타낼 때 사용한다.
 Nav  문서내에 Navigation 요소가 있을 때 사용한다.
 Section  문서의 영역을 구성하며, 문서 구조를 구성하는 H1~H6 와 함께 사용한다.  
 Article  뉴스기사나 블로그 article 과 같은 독립된 Contents 를 표시할 때 사용한다.
 Aside  주요 컨텐츠 이외의 참고가 될 수 있는 컨텐츠를 구성할때 사용한다.
 Hgroup  각 Section 의 Header 를 나타낼때 사용한다.
 Figure  그림, 비디오와 같은 포함된 컨텐츠의 Caption 을 표시할때 사용한다.
 Figcaption  캡션에 사용한다.

음... 새로운 엘리먼트는 어떻게 사용할까?
간단히 그림을 그려봤다...

Simentic.jpg


이러한 새로운 Sementic Element 들로 인해서 기존의 Div Tag 들로 나뉘어 졌단 막연하고 무의미했던 Contents 들이 한층더 유용한 정보들로 탈바꿈하게 되었다.
또 이런 변화는 우리들에게 Contents 구성에 대한 커다란 숙제를 안겨주고 있다.

이 밖에 몇가지 Element 가 추가되었다.
Element
설명
 Audio, Video HTML 5 Element 중 관심이 집중되는 Element  중 하나다.
멀티미디어 컨텐츠를 표시하는 데 사용한다.
 Embed Plugin 컨텐츠를 표시할 때 사용한다.
 Mark 별도로 표시한 문자를 표시하는데 사용한다.
 Progress 작업 진행상황을 나타낼 때 사용한다.
 Meter 측정값을 표시할 때 사용한다.
 Time 날짜, 시간을 표시할 때 사용한다. 
 Ruby, rt, rp Ruby 언어를 나타낼 때 사용한다.
 Canvas Bitmap Graphic을 표시할 때 사용한다.
 Command 사용자가 호출할 수 있는 명령어를 표시하는데 사용한다.
 details 사용자 요청에 따라 얻은 콘트롤이나 추가적인 정보를 표시하는데 사용한다.
 Datalist List Attribute 와 함께 사용하여 ComboBox 를 만들때 사용한다.
 Keygen 키쌍(Key pair)을 생성할 때 사용한다.
 Output 스크립트 계산 결과 같은 실행결과를 표시하는데 사용한다.


2-2. 새롭게 추가된 Attribute
새로 추가된 속성들 중에 몇가지만 소개하려 한다.
Attribute
설명
contenteditable 편집가능한 Area 임을 나타낸다.
contextmenu 작성자가 제작한 Context Menu 지정하는데 사용할 수 있다.
data-* 접두사 "data-" 를 가진 속성으로 추후 HTML  버전 충돌없이 사용자 태그로 이용하거나 추후 브라우져가 지원하게 되었을때 사용할 수 있다. 
draggable 새로운 Drag & Drop API 에서 사용할 수 있다. 
hidden element 가 아직 없거나 없을 때 사용한다.
role, aria-* 보조기능에 가리키는데 사용할 수 있다.
spellcheck 맞춤범 검사기능을 제공할지 여부를 지정한다.

2-3. 변경된 Element
Element
설명
 a href 속성이 없이 사용하면 "placeholder link" 를 나타낸다.
 address sectioning 의 새로운 개념으로 범위를 나타낸다. 어떤 Contents 부분관 관련된 연락처 정보인지 알 수 있다.
 b 문자열 강조 뿐만이 아니라 제품소개 중 제품명 키워드 같이 특별히 중요하지는 않으나 일반적으로 강조하기 위해 사용한다.
 hr 단락 수준의 주제 바꿈에 사용한다.
 i 기존 기능처럼 문자의 기울임 뿐만이 아니라 음성, 분위기, 분류명, 기술용어, 다른언어의 숙어구, 생각, 선박명 등을 표현할 때 사용한다.
 label 기본 플랫폼 User interface 표준이 아닐 경우  Label 에서 Control로 Focus 를 이동시키면 안된다.
 menu 툴바와 Context Menu 용으로 사용한다.
 small 세부 주석과 법적 인쇄물 같은 작은 인쇄를 나타낼때 사용한다.
 strong 기존 Strong 의 기능보다 더 중요한 것을 표시할때 사용한다. 

2-4 변경된 Attribute
아래 속성은 사용하지 않기를 권장하며 꼭 필요한 곳에서만 사용하도록 한다.
Attribute
설명
img 의 border border 값은 0 일때만 사용하고 CSS 를 사용할 수 있다.
a 의 name name 속성을 id 속성으로 바꾸어 쓸 수있다.
table 의 summary 다른 대안을 정의하고 있다.
script 의 language language 값은 JavaScript 에만 사용하고 type 속성과 함께 쓰지 않고 생략할 수있다.

2-5. 제거된 Element

없어진 이유를 보면 크게 세가지로 나뉜다.

1. CSS 로 처리할 수 있는 Element
2. Frame 관련 Element
3. 거의 사용되지 않는 Element



2-5-1. CSS로 처리할 수 있는 Element
다음 Element 는 순전히 보여지는 것에만 사용되는 Element 들이다.
basefont, big, center, font, s, strike, tt, u

2-5-2. Frame 관련 Element
다음 Element 는 Frame 과 관련된 Element로 이들 Element 의 사용은 사용성과 접근성에 부정적인 영향을 끼치 때문이다.
frame, frameset, noframes

2-5-3. 거의 사용되지 않는 Element
다음 Element 는 자주 사용되지 않고, 혼란스럽게하거나 다른 Element 로 기능을 대체할 수 있기 때문이다.
acronym, applet, isindex, dir


2-6. 제거된 Attribute

나열하기에 많아서 좀 애매하다...
http://www.w3.org/TR/2010/WD-html5-diff-20100304/#absent-attributes
문서에서 3.6 Absent Attributes 를 참고 하시길...


3. API
이젠 새로 사용할 수 있게된 API 들을 설명하려 한다.

Video/Audio API : Video, Audio Element 와 함께 Video, Audio 를 재생하는데 사용수 있다.
Offline Web Application : 말 그대로 Offline 을 지원하는 API 이다.
Web Application 이 특정 프로토콜 또는 Media Type 을 등록할 수 있는 API
새로운 Grobal Attribute 인 "Contenteditable" Attribute 와 함께 사용하는 편집 API
"draggable" Attribute 와 함께 사용하는 Drag & Drop API
 Navigation 시 사용하는 History 정보를 노출하는 API

그리고 그 사항들은 아래와 같은 사항들을 확장하였다..
3-1 HTMLDocumnet 확장사항들
DOM Level2 HTML 의 HTMLDocument interface 를 확장했다.
getElementsByClassName() : Class Name 으로 Element 를 선택할 수 있다.
innerHTML : HTML 또는 XML 문서를 분석하고 직렬화하는 쉬운 방법이다.
activeElement, hasFocus : Element 가 현재 Focus 되어 있는지, "Document" 가 Focus 되어있는지 여부를 확인한다.
getSelection() : 현재 선택되어있는 Object 를 반환한다.

3-2 HTMLElenemt 확장사항들
HTML 5 의 HTMLElement interface 는 몇가지 확장사항들이 있다.
getElementsByClassName()
innerHTML
:
classList 는 ClassName 에 편리하게 접근할 수 있는 접근자다. Element 의 Class 들을 조작하기 위해서 has(), add(), remove(), toggle() 과 같은 함수를 노출한다.
a, area, link Element 는 relList 라는 유사한 Attribute 를 가지고 있으며 rel Attribute에 같은 기능을 제공한다.


훔... HTML 4와 HTML 5 간의 차이점에 대한 어느정도 필요한 정보들을 간단히 나열해 보았다.





4. HTML 5  작성 Tip

4-1. 이전 Browser 에서 새로운 요소들 사용.

HTML 5 에서 사용하는 Tag 들은 이전 버전의 브라우져에서는 지원하지 않는다.
하지만 이전 Browser 에게 약간의 편법을 쓰면 HTML 5 Tag 들을 지원하는 것처럼 하게 할 수 있다.
아래 Javascript 를 추가해보자.
 
<script type="text/javascript">
document.createElement('address');
document.createElement('article');
document.createElement('aside');
document.createElement('figure');
document.createElement('footer');
document.createElement('header');
document.createElement('hgroup');
document.createElement('menu);
document.createElement('nav');
document.createElement('section ');
</script>

그리고 아래 구문을 CSS 에 추가에 추가한다.
이로써 아래 Tag 들에 대해서 Block 요소로 인식하게 해준다.
address, article, aside, figure, footer, header, hgroup, menu, nav, section { display:block;}

4-2. 사용하는 Browser 의 HTML 5 기능 지원여부 확인
현재 사용하는 Browser 에 HTML 5 기능이 적용되어 있는지 알아보기 위해서 다음 페이지를 통해서 확인 하기 바란다.
http://a.deveria.com/caniuse/

현재 브라우져가 특정 기능을 지원하는지 Code 상에서 확인하기위해 필요한 Script 라이브러리가 있다.
그 것은 Modernizr (http://www.modernizr.com) 이다.

아래내용은 간단히 GeoLocation  기능을 지원하는 지를 확인하는 JavaScript 코드이다.

if (Modernizr.geolocation){
  navigator.geolocation.getCurrentPosition(function(position) {
    // pass the lat and long values to an application
    // e.g. a setUserLatandLong() function may find the closest bodega

    setUserLatandLong(position.coords.latitude,position.coords.longitude);
  }); 

이와 같이 HTML 5 JavaScript API 기능의 지원 여부를 손쉽게 확인할 수 있도록 도와준다.


4-3. 구문 검증

다음은 우리가 작성한 HTML 문서를 검증하기 위한 Site 를 소개한다.
http://validator.w3.org 
http://html5.validator.nu
http://gsnedders.html5.org/outliner/ (이 Site는 Contents Model 에 기반을 두어 작성한 HTML 5문서의 Outline 을 검증합니다. )


음... 두편의 Article 을 통해 이전 버전의 HTML과 HTML 5 와의 차이점과 변경된 사항들을 간단히 살펴보았다.
지금까지 나열된 사항들은 추후 이어질 아티클에서 다시 조금더 자세한? 내용들로 언급이 될 것이다. (훔... 왠지 모르게 서둘러 마무리하는 것 같은 생각이 드네... 추가할 사항들이 생기면 계속 업데이트하겠다. 느낌 희안허네... 그림이 없어서그런가? 역시 그림이 없으니 건조해... ㅡㅡ')


HTML5 시리즈 강좌 리스트
[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API



HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API

행복한 고수되셔요...

  [출처] SQLER.COM http://www.sqler.com/379909

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 

HTML 4 Vs HTML 5

둘의 차이점을 알기위해서 반드시 먼저 짚고 넘어가야할 주제가 있다.

그것은...

바로 Contents Model 이다.

HTML 5 이전의 HTML 문서는 <div>, <p>, <h1>, <h2>... Tag 와 같은 Block Level Element 와 <img>, <input>, <i>, <b> Tag 와 같은 Inline Element 로 구분되어지는 Tag 들로 구성되어 두 종류의 Tag 들을 적절히 사용하여 표현하였다.
그리고 이러한 Tag 들은 Tree 형태의 계층구조를 이루어 문서의 OutLine 을 구성하고 그 구조를 따라 Contents 에 접근할 수 있다.(JavaScript 나 CSS 에서 특정 Element 에 접근하는 방식을 떠올린다면 이해가 쉬우리라...)

HTML 5 문서 또한 다르지 않다.
하지만 HTML 5 는 "Contents Model" 이라는 새로운 개념을 추가하여 문서의 Outline 을 잡고 Contents 를 구성하게 된다.
HTML 5 는 기존의 Tag 에
한마디로 HTML 5 는 구성에 중점을 둔 구조라고 할 수 있겠다.
따라서 기존 DOM Tree 계층구조에서의 Contents 접근이 아닌 구성에 따라서 접근이 가능하게 되었다.(<Header>, <Footer>, <article> Tag 를 떠올려 보라. DOM Tree 를 따라갈 필요없이 곧바로 Contents 에 접근이 가능하다.-<Header>, <Footer>, <article> 과 같은 Tag 를 아직 모르시는 분께 죄송... 하지만 곧바로 다음에서 다루겠다. 일단은 그런게 있구나 식으로만이라도...>)
이런 이유로 HTML 5 의 Element들은 추가되었고, 기존의 HTML 보다 훨씬 더 Sementic 한 Web을 구성 할 수 있게 되었다는데에 집중해야 할 것이다.

따라서, 이제 우리는 HTML 5 의 각 Tag(Element)가 갖는 역할과 의미를 확실히 이해하여 Content Model 에 적합한 HTML 문서를 작성할 수 있도록 한층 더 많은 생각을 해야할 것이다.

HTML 5 에서는 아래 그림과 같이 Contents 의 종류에 따라 Element 들을 분류하고 있다.

content-venn.png

Contents 는 다음과 같이 분류한다.
1. Metadata Contents
2. Flow Contents
3. Sectioning Contents
4. Heading Contents
5. Phrasing Contents
6. Embedded Contents
7. Interactive Contents


다음은 위 분류에 대해 간단히 설명해 보았다.
Category
설명
Tag
Metadata Content 나머지 Contents 의 Presentation 이나 behavior를 설정하거나 현재문서와 다른 문서와의 관계를 설정. 또는, 기타 "Out Of Band"정보를 전달한다. base, command, link, meta, noscript, script, style, title
Flow Content 문서와 Application 의 Body 에서 사용되는 대부분의 Element들은 Flow Content 로 분류된다. a, abbr, address, area (map 요소의 자손인 경우) , article, aside, audio, b, bdi, bdo, blockquote, br, button, canvas, cite, code, command, datalist, del, details, dfn, div, dl, em, embed, fieldset, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, i, iframe, img, input, ins, kbd, keygen, label, map, mark, math, menu, meter, nav, noscript, object, ol, output, p, pre, progress, q, ruby, s, samp, script, section, select, small, span, strong, style (scoped 속성이 있으면) , sub, sup, svg, table, textarea, time, ul, var, video, wbr, Text
Sectioning Content Headings 와 Footers 의 범위를 정의한다. article, aside, nav, section
Heading Content Section 의 Header 를 정의한다. h1, h2, h3, h4, h5, h6, hgroup
Phrasing Content 문서의 Text 이다. 또한 그 Text 를 intra-paragraph Level 로 Markup 하는 Element 이다. a (구문 컨텐츠만을 포함하는 경우) , abbr, area (map 요소의 자손인 경우) , audio, b, bdi, bdo, br, button, canvas, cite, code, command, datalist, del (구문 컨텐츠만을 포함하는 경우) , dfn, em, embed, i, iframe, img, input, ins (구문 컨텐츠만을 포함하는 경우) , kbd, keygen, label, map (구문 컨텐츠만을 포함하는 경우) , mark, math, meter, noscript, object, output, progress, q, ruby, s, samp, script, select, small, span, strong, sub, sup, svg, textarea, time, var, video, wbr, Text
Embedded Content 문서에 다른 Resource 를 삽입하는 Content 이다. audio, canvas, embed, iframe, img, math, object, svg, video
Interactive Content 사용자의 상호작용을 위해 특별하게 의도된 Content 이다. a, audio (controls 속성이 있으면) , button, details, embed, iframe, img (usemap 속성이 있으면) , input (type 속성이 Hidden 상태가 “아니면”) , keygen, label, menu (type 속성이 toolbar 상태면) , object (usemap 속성이 있으면), select, textarea, video (controls 속성이 있으면)

자세한 내용은 http://www.whatwg.org/specs/web-apps/current-work/multipage/content-models.html 를 참고하시길...


다음은 위 내용을 바탕으로 변화된 HTML 5 의 모습을 살펴보기로 하겠다.



<참고>
앞서가는 디자이너와 퍼블리셔를 위한 HTML5 & CSS
철저분석 HTML 5
http://www.whatwg.org/specs/web-apps/current-work/multipage/index.html#contents
http://www.clearboth.org/html5/


HTML5 시리즈 강좌 리스트

[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API


HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API



행복한 고수되십시요...

[출처] SQLER.COM http://www.sqler.com/378506

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

html5-topper.png



 
"HTML 5 is really the second coming of this Web stuff — of the Web"

 
- Dion Almaer                          
(co-founder of the Ajaxian Web site and co-director of developer tools at Mozilla)




오늘부터 HTML 5 에 관해서 이야기를 해보려한다.
요즘 HTML 5 에 대한 관심은 지금까지 IT 에 관련된 어느 사건, 어느 주제에도 견줄 수 없을 정도의 관심이라 생각한다.

넷스케이프의 등장으로 인한 인터넷혁명(나는 학교의 한 실험실, Windows 3.1 에 설치된 PC 에서 Netscape 2.0 을 처음 실행할 때의 상황을 아직도 잊지 못한다. 그 많은 선후배, 친구들을 제치고 마우스 한번 잡아보겠다고... ㅋㅋㅋ 지금 생각하면 너무도 심플한 화면이 뜨는 걸 보고 있는... 신기해 하기만 했던...),
Windows95 가 세상에 나타났을 때 PC 산업의 발전,
아이폰으로 시작된 스마트폰 혁명.
(또 다른 사건이 있을까요? 제가 지식이...^^;
.NET 등장과 ie 6 릴리즈 등도 꼽는 분도 계시긴 한 것 같은데... 위 사건보다는 소소하다 생각이 들어서... ^^;)

이러한 사건들을 이어 "HTML 5" 의 등장?은 이제 Web 2.0 을 넘어 다음 세대의 환경에서 없어서는 안될 화두로, 아직 표준이 확정되지 않은 상황에서 시기 상조라는 조심스런 우려속에서도 많은 개발자를 비롯한 웹기획자, 웹디자이너들, 웹컨텐츠 제작자들뿐만아니라 웹소비자 에게도 반드시 필요한 지식으로 웹의 새로운 혁명의 주체가 될 것이라는 의견에는 그 누구도 반문하지 않는다. (학학학... 너무 장황하게 긴 호흡의 글을 쓰자니... 너무 힘들다... ㅡㅡ')

이렇게 많은 이들이 관심을 가지고 있는 주제에 관해 이야기를 한다는 것이 아주 많이, 너무도 많이, 아니아니 완전 부담스럽긴하다.
그리고 많은 이들이 원하는 "HTML 5" 라는 주제가 현재 아직 표준이 확정되지도 않은데다가
"HTML 5 로 무엇을 할 수 있을까?" 라고 생각하고 접근하는 분들을 만족시키기 위한 HTML 5 의 내용은
HTML 5 자체의 내용뿐만아니라 CSS 3.0, JavaScript 모두를 의미하고 있기때문에 다루어야 할 세부주제를 잡는 것 까지도 그리 만만치 않은 작업이었다.

이번에 잡은 "HTML 5" 의 주제는 많은 분들이 실망을 하실지는 모르지만
순수한... "HTML 5" 에 대한 내용만으로 채울 생각이다.

먼저, 고심? 끝에 정한 세부 주제를 먼저 살펴보면...

1. HTML5 개요
2. HTML4 vs HTML5 (1)
3. HTML4 vs HTML5 (2)
4. Sementic Element (1)
5. Sementic Element (2)
6. Strong Web Form
7. Rich Text Edit API
8. Video
9. Audio
10. Canvas
11. Drag & Drop
12. Offline Web Application
13. Communication API
14. Web Storage
15. Web SQL Database
16. Web Worker
17. Web Socket
18. GeoLocation API
19. SVG
20. File API


이런 순서로 진행하려고 합니다. 어떨까요? ^^

 

 

그럼 시작합니당... ㅋㅋ

#################################################################################

 

HTML 의 역사

 

HTML 5 을 정리하면서, HTML 역사에 대해서도 살펴보려한다.
아~ 이 생각을 하는 순간, 내가 가지고 있는 HTML 책자가 떠올랐다...

후다닥, 책장에 달려가 보았다. 하하하 있다...

완전 古書 ㅋㅋㅋ 사진에서 찾아보시라...

IMG_3723.jpg

 


위 사진은 아직도 나의 집 책꽂이에 꾲혀있는 HTML4 & CSS2.
발행일자를 보니... 헙... 1998년 4월 27일... 세월이 느껴진다...
발행일자가 1998년 이라도 그 당시 여느 책들처럼 CD 부록도 함께 꽂혀있다.
(완전 역사 지 말입니다. ^^)

IMG_3727.jpg

 



 1991년에 시작해서 현재까지의 HTML.

timeline.jpg 


1991년부터 1997년까지 HTML은 빠르게 발전했다. CSS가 포함이 되었고, JavaScript 가 추가되었다.
HTML 4.0 이후에도 W3C 에 의해서 HTML 은 HTML 4.01, XHTML 1.0, 1.1, 2.0 등으로 진화시키기 위해서 많은 노력을 해왔다(위 이미지를 보면 역사에 대해서는 간단히 아시겠죠? 더 자세한 내용은 웹을 통해서 찾아보시면 더 많은 내용을 얻으시리라...)

그 과정에서 W3C 는 HTML 의 Version Up 을 중단하고 XHTML 로 개발의 방향을 변경하였다. XHTML 2.0 은 하위호환성을 고려하진 않는 새로운 언어로 디자인하기 시작했다.

그런 XHTML 2.0 은 W3C 의 이상과 현실의 차이로 인해서 XHTML 은 브라우저들에게서 외면당해졌고,
W3C 와는 생각이 다른, 몇개의 브라우져회사가 모여 WHATWG 라는 Working Group을 설립하여, 웹 개발현실을 반영하면서도 하위버젼의 HTML 과도 호환되는 발전된 HTML 을 정의하기 시작했다.

WHATWG 를 인정하지 않던 단호한 W3C 도 XHTML 2.0을 포기하고 2009년 10월, WHATWG 를 인정하였으며, 그들과 방향성을 공유하기 시작했다.
그리고, "HTML 5" 라는 이름을 가지고 새로운 HTML 을 디자인하기 시작했다.

HTML 의 한계
HTML, 참... 오랜 기간동안 사용된 언어임에 틀림없다.

그리고 HTML 4 에 대한 그때의 지식으로 오늘날까지도 HTML 을 읽고 있는 것을 보면 변화 없이 멈추어버린 언어라고 생각이 될 수도 있겠지만 HTML 의 버전업이 없다고 웹이 발전하지 않았다는 말은 아닐 것이다.
본래 HTML 이 처음 만들어졌을 때의 목적은 인터넷을 통해 문서를 보기 위함이었다.
자신이 가지고 있는 문서들을 웹을 통해서 볼 수 있도록 문서 형태로 표현할 수 있는 그 수단? Language가 필요했다.

Dos 의 640K 메모리 장벽이 그러했고, Y2K 밀레니엄 버그가 그러했듯이, HTML 또한 그 당시에는 지금의 웹을 상상도 할 수 없었으리라 생각된다.
단순히 인터넷을 통해 문서를 보기 원했던 것을 뛰어 넘어, 화려하고 인터랙티브한 화면 흐름과 멀티미디어, 예측할 수 없는 사용자들의 요구사항들을 충족시키기 위해 우리들은 HTML 에 갖가지 기술들을 만들어 내고, 포함시키고, 또 그러한 기능들을 사용할 수 있도록 하기위해 사용자들에게 "OK" 버튼을 눌러야만 사용할 수 있다는 협박으로 클릭을 강요하고, 언제, 어떻게 일어날지도 모르는 재앙에 따르는 책임을 사용자들에게 전가시켜왔다.

웹은 그렇게 HTML 버전의 발전은 없었지만 HTML 의 한계를 벗어나기위한 방향으로 발전?되어 왔다.
하지만 그렇게 한계를 벗어나기 위한 발전이 반복되면서 한계의 극복은 더욱 불완전한 웹환경으로 몰아가기 시작했다.(너무 장황한거 아녀? ㅡㅡ' 어여 영웅이 나타나야 할 것 같은...)

세상은 이런 불완전함을 깨뜨리고 순수하고 완전한 존재를 원하게 되었다.

그래서 나타난 것.
"HTML 5" 다.


HTML 5 의 등장

그렇게 HTML 은 모든 불완전함을 "순수"라는 이름으로 깨뜨리기 위해 탄생하게 되었다.
HTML 의 역사를 살펴봐서 알수 있듯이 기존의 HTML 은 단순 Markup Language 로서 한계가 명확했으며,
그런 HTML 의 한계는 HTML 5 의 등장으로 기존에 가졌던 HTML 의 기능적 한계를 커버할 수 있다.
발전된 CSS3, JavaScript API 를 통한 기능의 확장과 결합을 통해서 기존의 Markup language 이상의 의미를 가지게 되었다.
HTML 의 한계로 인해서 유행처럼 번졌던 플러그인과 엑티브엑스 컨트롤의 문제들로 인해 웹은 순수한 HTML만으로는 표현이 불가능한, 너무도 많은? 외부기술에 의존하게 되었다.
이로 인해 웹의 접근성은 현저하게 떨어지는 상황이 되었고 HTML 5 의 등장은 플러그인과 엑티브엑스기술에서 웹을 해방?시키고 웹의 접근성과 상호운영성 또한 높이게 하는 결과를 가져오게 될 것이다.
JavaScript API 를 이용한 HTML 의 확장은 서버의 부하를 줄이고 그 부하를 클라이언트와 나눔과 함께 Application으로써의 웹의활용도를 극대화 시킬것이다.

그 결과, HTML 5 는 웹에서 플래쉬, 실버라이트와 같은 플러그인들의 사용을 줄일 것이다.(플러그인의 사용을 아예 없애지는 못할것이라 생각한다. 사용량을 0 - Zero로 만들려 하지도 않을 것이고. 그러한 플러그인은 플러그인이 반드시 필요한 영역에서 활발히 활동할 것이라 생각한다.)
플러그인과 엑티브엑스의 설치로 인한 취약해진 보안도 걱정하지 않아도 될 것이다.
순수한 웹환경은 현재의 Device 는 물론이고 아직 세상에 있지도 않는, 미래에 나오게될 Device 들의 플랫폼이 될 것이다.
마이크로소프트, 구글을 위시한 기업들이 각 사의 브라우져를 Web OS 로서의 기반 플랫폼으로 구성하고 있고, 각 사들의 서비스들을 HTML 5로 제작하여 차세대 Web 환경에서의 주도권을 갖기위해 노력하고 있다.
현재 HTML 5 의 표준이 확정되지도 않은 상황인데도 말이다...


어떤가?
HTML 5 를 시작해야하는 이유가 이 정도면 충분한가? (저한테 자문하는 거예요... ^^')



HTML 5 의 디자인 원칙


다음은 HTML 5 은 이러한 디자인 원칙을 가지고 만들어지고 있다고 한다.
  • 호환성
  • 컨텐츠의 호환성
  • 이전 브라우저와의 호환성
  • 기능의 재사용
  • 이용 방법의 호환성
  • 혁신보다는 발전을 우선함
  • 실용성
  • 상호 운영성
  • 보편적 접근성

(참고: http://www.jopenbusiness.com/mediawiki/index.php/HTML5#HTML5_.ED.91.9C.EC.A4.80.ED.99.94_.EC.9D.BC.EC.A0.95)


위 내용들을 간략하게 살펴보면 아래와 같다.

컨텐츠의 호환성 : HTML 5 이전 버전으로 제작한 컨텐츠가 완벽히 정상 작동하리라고는 생각하진 않지만 문제없이 이용가능해야한다.
이전 브라우저와의 호환성 : 말 그대로 HTML 5 가 지원되지 않는 이전 버전의 브라우저에서도 이용가능해야 한다.
기능의 재사용 : 이전까지는 각 브라우저 사들이 각자 브라우져에 구현해 놓은 서로다른 기능들을 HTML 5 라는 이름아래 공통된 사양으로 책정하여 브라우저들간의 호환성을 가지게 한다.
이용방법의 호환성 : 기존에 사용하던 HTML Tag 의 사용법을 그대로 사용할 수 있게 한다.
혁신보다는 발전을 우선함 : HTML 5 이라는 Version UP 이 새로운 MarkUP Language 를 구현하는 것이 아닌 기존에 존재하던 HTML 을 개량한다.

실용성 : W3C 가 진행하던 이상적인 MarkUp Language 인 XHTML 2.0 와 같은 HTML 을 제작하는 것이 아닌 웹현장에서 필요로 하는 것들을 중점적으로 진행해야한다.
상호운영성 : HTML 5 를 적용한 브라우저라면 동일하게 동작해야한다.
보편적 접근성 : 컨텐츠의 소비자가 기계(Device, Search Engine) 와 모든 사람들(장애자를 포함한) 이 접근할 수 있도록 한다.

http://html5test.com/index.html


HTML5 표준화 일정


다음은 HTML 5 표준화 일정이다.

  • 2006.06 : 웹 하이퍼텍스트 워킹그룹(WHATWG) 출범
  • Web Form 2.0, Web Applications 1.0
  • 2007.03 : 새로운 HTML 워킹 그룹 생성
  • 2009.10 : W3C에서 XHTML 전환 실패를 인정함
  • 2011.05 : HTML5 최종 초안 (Last Call Working Draft)
  • 2012.Q2 : HTML5 후보 표준안 (Candidate Recommendation) - 2개 이상의 브라우저에서 테스트 완료
  • 2014.Q1 : HTML5 제안 표준안 (Proposed Recommendation) - 브라우저 업체의 피드백 반영
  • 2014.Q2 : HTML5 최종 표준안 (Recommendation)

(참고: http://www.jopenbusiness.com/mediawiki/index.php/HTML5#HTML5_.ED.91.9C.EC.A4.80.ED.99.94_.EC.9D.BC.EC.A0.95)


(기분좋게하는 소식인지는 몰라도... 최종초안 결정이... 이번달이네... ^^
일정은 지연될것이다 라고 말들 하는데... 그래도 기대해 보자... ^^)




아... 참 두서없이 길게도 적었다... (제 글의 특징입니다. ㅡㅡ')
HTML 5 에 참고할 만한 사이트 들은 차츰차츰
이 페이지에 추가하도록 해야겠다.
그래야... 나 자신이 또 들어와 볼테니... ^^;


있을실지 모를 제 글을 보시는 분들...
두서없는 긴글 보시느라 수고하셨습니다.

다음
HTML 4 Vs HTML 5 에서 뵙겠습니다.



HTML5 시리즈 강좌 리스트
[HTML5강좌] 1. HTML5 개요
[HTML5강좌] 2. HTML4 vs HTML5 (1)
[HTML5강좌] 3. HTML4 vs HTML5 (2)
[HTML5강좌] 4. Sementic Element (1)
[HTML5강좌] 5. Sementic Element (2)
[HTML5강좌] 6. Strong Web Form
[HTML5강좌] 7. Rich Text Edit API
[HTML5강좌] 8. Video Element
[HTML5강좌] 9. Audio Element
[HTML5강좌] 10. Canvas Element
[HTML5강좌] 11. Drag & Drop API
[HTML5강좌] 12. Offline Web Application
[HTML5강좌] 13. Communication API
[HTML5강좌] 14. Web Storage
[HTML5강좌] 15. Web SQL Database
[HTML5강좌] 16. Web Worker
[HTML5강좌] 17. Web Socket
[HTML5강좌] 18. Geolocation API
[HTML5강좌] 19. SVG
[HTML5강좌] 20. File API



HTML5 동영상 강좌 리스트
[HTML5 동영상 강좌] 1. HTML 5 개요
[HTML5 동영상 강좌] 2. HTML4 vs HTML5 (1)
[HTML5 동영상 강좌] 3. HTML4 vs HTML5 (2)
[HTML5 동영상 강좌] 4. Sementic Element (1)
[HTML5 동영상 강좌] 5. Sementic Element (2)
[HTML5 동영상 강좌] 6. Strong Web Form
[HTML5 동영상 강좌] 7. Rich Text Edit API
[HTML5 동영상 강좌] 8. Video Element
[HTML5 동영상 강좌] 9. Audio Element
[HTML5 동영상 강좌] 10. Canvas Element
[HTML5 동영상 강좌] 11. Drag & Drop API
[HTML5 동영상 강좌] 12. Offline Web Application
[HTML5 동영상 강좌] 13. Communication API
[HTML5 동영상 강좌] 14. Web Storage
[HTML5 동영상 강좌] 15. Web SQL Database
[HTML5 동영상 강좌] 16. Web Worker
[HTML5 동영상 강좌] 17. Web Socket
[HTML5 동영상 강좌] 18. Geolocation API
[HTML5 동영상 강좌] 19. SVG
[HTML5 동영상 강좌] 20. File API



행복한 고수되십시요...

[출처] SQLER.COM http://www.sqler.com/374157

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\