Html5-quick-guide

提供:Dev Guides
移動先:案内検索

HTML5-概要

HTML5は、HTML 4.01、XHTML 1.0、およびXHTML 1.1に取って代わるHTML標準の次の主要な改訂版です。 HTML5は、World Wide Webでコンテンツを構造化して表示するための標準です。

HTML5は、World Wide Web Consortium(W3C)とWeb Hypertext Application Technology Working Group(WHATWG)の協力です。

新しい標準には、以前はAdobe Flash、Microsoft Silverlight、Google Gearsなどのサードパーティのブラウザープラグインに依存していたビデオ再生やドラッグアンドドロップなどの機能が組み込まれています。

ブラウザのサポート

Apple Safari、Google Chrome、Mozilla Firefox、Operaの最新バージョンはすべて多くのHTML5機能をサポートしており、Internet Explorer 9.0は一部のHTML5機能もサポートします。

iPhone、iPad、およびAndroidスマートフォンにプリインストールされているモバイルWebブラウザーはすべて、HTML5を強力にサポートしています。

新機能

HTML5には、最新のWebサイトの構築に役立つ多くの新しい要素と属性が導入されています。 以下は、HTML5で導入された最も顕著な機能の一部です。

  • 新しいセマンティック要素-これらは、<header>、<footer>、および<section>のようなものです。
  • *フォーム2.0 *-<input>タグに新しい属性が導入されたHTML Webフォームの改善。
  • Persistent Local Storage -サードパーティのプラグインに頼らずに達成するため。
  • WebSocket -Webアプリケーション用の次世代双方向通信技術。
  • サーバー送信イベント-HTML5は、WebサーバーからWebブラウザーに流れるイベントを導入し、サーバー送信イベント(SSE)と呼ばれます。
  • キャンバス-これは、JavaScriptでプログラムできる2次元の描画面をサポートします。
  • オーディオとビデオ-サードパーティのプラグインを使用せずに、Webページにオーディオまたはビデオを埋め込むことができます。
  • ジオロケーション-訪問者は、Webアプリケーションと物理的な位置を共有することを選択できるようになりました。
  • Microdata -これにより、HTML5を超える独自の語彙を作成し、カスタムセマンティクスでWebページを拡張できます。
  • ドラッグアンドドロップ-アイテムを同じWebページのある場所から別の場所にドラッグアンドドロップします。

下位互換性

HTML5は、可能な限り、既存のWebブラウザーとの下位互換性を保つように設計されています。 新しい機能は既存の機能に基づいて構築されており、古いブラウザにフォールバックコンテンツを提供できます。

数行のJavaScriptを使用して、個々のHTML5機能のサポートを検出することをお勧めします。

HTMLの以前のバージョンに慣れていない場合は、HTML5の機能を調べる前に、* HTMLチュートリアル*を読むことをお勧めします。

HTML5-構文

HTML 5言語には、Webで公開されているHTML 4およびXHTML1ドキュメントと互換性のある「カスタム」HTML構文がありますが、HTML 4のより難解なSGML機能とは互換性がありません。

HTML 5には、小文字のタグ名が必要なXHTMLと同じ構文規則がありません。属性を引用し、属性に値を設定し、空の要素をすべて閉じる必要がありました。

HTML5には多くの柔軟性があり、次の機能をサポートしています-

  • 大文字のタグ名。
  • 属性の引用符はオプションです。
  • 属性値はオプションです。
  • 空の要素を閉じることはオプションです。

DOCTYPE

HTML言語はSGMLベースであり、したがってDTDへの参照が必要だったため、古いバージョンのHTMLのDOCTYPEは長くなりました。

HTML 5の作成者は、次のように単純な構文を使用してDOCTYPEを指定します-

<!DOCTYPE html>

上記の構文は大文字と小文字を区別しません。

文字コード

HTML 5の作成者は、次のように単純な構文を使用して文字エンコードを指定できます-

<meta charset = "UTF-8">

上記の構文は大文字と小文字を区別しません。

<script>タグ

次のように、「text/javascript」の値を持つタイプ属性をスクリプト要素に追加するのが一般的な方法です-

<script type = "text/javascript" src = "scriptfile.js"></script>

HTML 5は必要な余分な情報を削除し、単に次の構文を使用することができます-

<script src = "scriptfile.js"></script>

<link>タグ

これまでは、次のように<link>を書いていました-

<link rel = "stylesheet" type = "text/css" href = "stylefile.css">

HTML 5は必要な追加情報を削除し、次の構文を使用することができます-

<link rel = "stylesheet" href = "stylefile.css">

HTML5要素

HTML5要素は、開始タグと終了タグを使用してマークアップされます。 タグは、タグ名を間に挟んで山括弧を使用して区切られます。

開始タグと終了タグの違いは、終了タグではタグ名の前にスラッシュが含まれることです。

以下は、HTML5要素の例です-

<p>...</p>

HTML5タグ名は大文字と小文字が区別されず、すべて大文字または大文字と小文字が混在する場合がありますが、最も一般的な規則は小文字を使用することです。

ほとんどの要素には、<p> …​ </p>に段落が含まれるなどのコンテンツが含まれています。 ただし、一部の要素はコンテンツを一切含むことを禁じられており、これらはvoid要素として知られています。 たとえば、 br、hr、link、meta など。

link:/html5/html5_tags [HTML5要素]の完全なリストを次に示します。

HTML5属性

要素には、要素のさまざまなプロパティを設定するために使用される属性が含まれる場合があります。

一部の属性はグローバルに定義され、任意の要素で使用できますが、他の属性は特定の要素に対してのみ定義されます。 すべての属性には名前と値があり、以下の例のようになります。

以下は、「example」の値を使用してclassという名前の属性でdiv要素をマークアップする方法を示すHTML5属性の例です-

<div class = "example">...</div>

属性は開始タグ内でのみ指定でき、終了タグでは使用しないでください。

HTML5属性は大文字と小文字を区別せず、すべて大文字または大文字と小文字を混在させて記述できますが、最も一般的な規則は小文字を使用することです。

link:/html5/html5_attributes [HTML5属性]の完全なリストを次に示します。

HTML5ドキュメント

次のタグは、より良い構造のために導入されています-

  • section -このタグは、一般的なドキュメントまたはアプリケーションセクションを表します。 ドキュメント構造を示すためにh1-h6と一緒に使用できます。
  • article -このタグは、ブログエントリや新聞記事など、ドキュメントのコンテンツの独立した部分を表します。
  • aside -このタグは、ページの残りの部分にわずかに関連するコンテンツを表します。
  • header -このタグはセクションのヘッダーを表します。
  • footer -このタグはセクションのフッターを表し、著者に関する情報、著作権情報などを含めることができます。
  • nav -このタグは、ナビゲーションを目的としたドキュメントのセクションを表します。
  • dialog -このタグは、会話をマークアップするために使用できます。
  • -このタグは、グラフィックやビデオなどの埋め込みコンテンツにキャプションを関連付けるために使用できます。

HTML 5ドキュメントのマークアップは次のようになります-

<!DOCTYPE html>

<html>
   <head>
      <meta charset = "utf-8">
      <title>...</title>
   </head>

   <body>
      <header>...</header>
      <nav>...</nav>

      <article>
         <section>
            ...
         </section>
      </article>
      <aside>...</aside>

      <footer>...</footer>
   </body>
</html>
<!DOCTYPE html>

<html>
   <head>
      <meta charset = "utf-8">
      <title>...</title>
   </head>

   <body>
      <header role = "banner">
         <h1>HTML5 Document Structure Example</h1>
         <p>This page should be tried in safari, chrome or Mozila.</p>
      </header>

      <nav>
         <ul>
            <li><a href = "https://www.finddevguides.com/html">HTML Tutorial</a></li>
            <li><a href = "https://www.finddevguides.com/css">CSS Tutorial</a></li>
            <li><a href = "https://www.finddevguides.com/javascript">
            JavaScript Tutorial</a></li>
         </ul>
      </nav>

      <article>
         <section>
            <p>Once article can have multiple sections</p>
         </section>
      </article>

      <aside>
         <p>This is  aside part of the web page</p>
      </aside>

      <footer>
         <p>Created by <a href = "https://finddevguides.com/">Tutorials Point</a></p>
      </footer>

   </body>
</html>

それは次の結果を生成します-

HTML5-属性

前の章で説明したように、要素には、要素のさまざまなプロパティを設定するために使用される属性が含まれる場合があります。

一部の属性はグローバルに定義され、任意の要素で使用できますが、他の属性は特定の要素に対してのみ定義されます。 すべての属性には名前と値があり、以下の例のようになります。

以下は、「example」の値を使用してclassという名前の属性でdiv要素をマークアップする方法を示すHTML5属性の例です-

<div class = "example">...</div>

属性は*開始タグ*内でのみ指定でき、*終了タグ*で使用することはできません。

HTML5属性は大文字と小文字を区別せず、すべて大文字または大文字と小文字を混在させて記述できますが、最も一般的な規則は小文字を使用することです。

標準属性

以下にリストされている属性は、ほぼすべてのHTML 5タグでサポートされています。

Attribute Options Function
accesskey User Defined Specifies a keyboard shortcut to access an element.
align right, left, center Horizontally aligns tags
background URL Places an background image behind an element
bgcolor numeric, hexidecimal, RGB values Places a background color behind an element
class User Defined Classifies an element for use with Cascading Style Sheets.
contenteditable true, false Specifies if the user can edit the element’s content or not.
contextmenu Menu id Specifies the context menu for an element.
data-XXXX User Defined Custom attributes. Authors of a HTML document can define their own attributes. Must start with "data-".
draggable true,false, auto Specifies whether or not a user is allowed to drag an element.
height Numeric Value Specifies the height of tables, images, or table cells.
hidden hidden Specifies whether element should be visible or not.
id User Defined Names an element for use with Cascading Style Sheets.
item List of elements Used to group elements.
itemprop List of items Used to group items.
spellcheck true, false Specifies if the element must have it’s spelling or grammar checked.
style CSS Style sheet Specifies an inline style for an element.
subject User define id Specifies the element’s corresponding item.
tabindex Tab number Specifies the tab order of an element.
title User Defined "Pop-up" title for your elements.
valign top, middle, bottom Vertically aligns tags within an HTML element.
width Numeric Value Specifies the width of tables, images, or table cells.

HTML5タグと関連する属性の完全なリストについては、リンク:/html5/html5_tags [HTML5タグ]への参照を確認してください。

カスタム属性

HTML 5で導入された新しい機能は、カスタムデータ属性の追加です。

カスタムデータ属性は data- で始まり、要件に基づいて名前が付けられます。 これは簡単な例です-

<div class = "example" data-subject = "physics" data-level = "complex">
   ...
</div>

上記のコードは、_datasubject_および_data-level_と呼ばれる2つのカスタム属性を持つ完全に有効なHTML5です。 標準の属性の場合と同様の方法で、JavaScript APIまたはCSSを使用してこれらの属性の値を取得できます。

HTML5-イベント

ユーザーがWebサイトにアクセスすると、テキストや画像、リンクをクリックする、定義済みの要素にカーソルを合わせるなど、さまざまなアクティビティを実行します。 これらは、JavaScriptが*イベント*と呼ぶものの例です。

イベントハンドラをJavascriptまたはVBscriptで記述し、これらのイベントハンドラをイベントタグ属性の値として指定できます。 HTML5仕様では、以下にリストするようにさまざまなイベント属性を定義しています-

HTML5要素に対してイベントが発生した場合、次の属性セットを使用して、値として指定された javascript または vbscript コードをトリガーできます。

後続の章でこれらの要素について詳しく説明しながら、要素固有のイベントについて説明します。

Attribute Value Description
offline script Triggers when the document goes offline
onabort script Triggers on an abort event
onafterprint script Triggers after the document is printed
onbeforeonload script Triggers before the document loads
onbeforeprint script Triggers before the document is printed
onblur script Triggers when the window loses focus
oncanplay script Triggers when media can start play, but might has to stop for buffering
oncanplaythrough script Triggers when media can be played to the end, without stopping for buffering
onchange script Triggers when an element changes
onclick script Triggers on a mouse click
oncontextmenu script Triggers when a context menu is triggered
ondblclick script Triggers on a mouse double-click
ondrag script Triggers when an element is dragged
ondragend script Triggers at the end of a drag operation
ondragenter script Triggers when an element has been dragged to a valid drop target
ondragleave script Triggers when an element leaves a valid drop target
ondragover script Triggers when an element is being dragged over a valid drop target
ondragstart script Triggers at the start of a drag operation
ondrop script Triggers when dragged element is being dropped
ondurationchange script Triggers when the length of the media is changed
onemptied script Triggers when a media resource element suddenly becomes empty.
onended script Triggers when media has reach the end
onerror script Triggers when an error occur
onfocus script Triggers when the window gets focus
onformchange script Triggers when a form changes
onforminput script Triggers when a form gets user input
onhaschange script Triggers when the document has change
oninput script Triggers when an element gets user input
oninvalid script Triggers when an element is invalid
onkeydown script Triggers when a key is pressed
onkeypress script Triggers when a key is pressed and released
onkeyup script Triggers when a key is released
onload script Triggers when the document loads
onloadeddata script Triggers when media data is loaded
onloadedmetadata script Triggers when the duration and other media data of a media element is loaded
onloadstart script Triggers when the browser starts to load the media data
onmessage script Triggers when the message is triggered
onmousedown script Triggers when a mouse button is pressed
onmousemove script Triggers when the mouse pointer moves
onmouseout script Triggers when the mouse pointer moves out of an element
onmouseover script Triggers when the mouse pointer moves over an element
onmouseup script Triggers when a mouse button is released
onmousewheel script Triggers when the mouse wheel is being rotated
onoffline script Triggers when the document goes offline
online script Triggers when the document comes online
ononline script Triggers when the document comes online
onpagehide script Triggers when the window is hidden
onpageshow script Triggers when the window becomes visible
onpause script Triggers when media data is paused
onplay script Triggers when media data is going to start playing
onplaying script Triggers when media data has start playing
onpopstate script Triggers when the window’s history changes
onprogress script Triggers when the browser is fetching the media data
onratechange script Triggers when the media data’s playing rate has changed
onreadystatechange script Triggers when the ready-state changes
onredo script Triggers when the document performs a redo
onresize script Triggers when the window is resized
onscroll script Triggers when an element’s scrollbar is being scrolled
onseeked script Triggers when a media element’s seeking attribute is no longer true, and the seeking has ended
onseeking script Triggers when a media element’s seeking attribute is true, and the seeking has begun
onselect script Triggers when an element is selected
onstalled script Triggers when there is an error in fetching media data
onstorage script Triggers when a document loads
onsubmit script Triggers when a form is submitted
onsuspend script Triggers when the browser has been fetching media data, but stopped before the entire media file was fetched
ontimeupdate script Triggers when media changes its playing position
onundo script Triggers when a document performs an undo
onunload script Triggers when the user leaves the document
onvolumechange script Triggers when media changes the volume, also when volume is set to "mute"
onwaiting script Triggers when media has stopped playing, but is expected to resume

HTML5-Webフォーム2.0

Web Forms 2.0は、HTML4にあるフォーム機能の拡張機能です。 HTML5のフォーム要素と属性は、HTML4よりも高度なセマンティックマークアップを提供し、HTML4で必要だった面倒なスクリプトやスタイル設定から解放されます。

HTML4の<input>要素

HTML4入力要素は、 type 属性を使用してデータタイプを指定します。HTML4は次のタイプを提供します-

Sr.No. Type & Description
1

text

名目上改行のない自由形式のテキストフィールド。

2

password

機密情報用の自由形式のテキストフィールド。名目上は改行はありません。

3

checkbox

事前定義リストからのゼロ以上の値のセット。

4

radio

列挙値。

5

submit

ボタンのフリーフォームはフォームの送信を開始します。

6

file

MIMEタイプとオプションでファイル名を持つ任意のファイル。

7

image

特定の画像のサイズに関連する座標で、最後に選択された値でなければならず、フォームの送信を開始するという追加のセマンティクスを持ちます。

8

hidden

通常はユーザーに表示されない任意の文字列。

9

select

ラジオタイプによく似た列挙値。

10

textarea

名目上改行の制限のない自由形式のテキストフィールド。

11

button

ボタンに関連するイベントを開始できるボタンの自由形式。

以下は、ラベル、ラジオボタン、および送信ボタンを使用する簡単な例です-

...
<form action = "http://example.com/cgiscript.pl" method = "post">
   <p>
      <label for = "firstname">first name: </label>
      <input type = "text" id = "firstname"><br/>

      <label for = "lastname">last name: </label>
      <input type = "text" id = "lastname"><br/>

      <label for = "email">email: </label>
      <input type = "text" id = "email"><br>

      <input type = "radio" name = "sex" value = "male"> Male<br>
      <input type = "radio" name = "sex" value = "female"> Female<br>
      <input type = "submit" value = "send"> <input type = "reset">
   </p>
</form>
 ...

HTML5の<input>要素

上記の属性とは別に、HTML5 input要素は type 属性にいくつかの新しい値を導入しました。 これらは以下にリストされています。

- Opera ブラウザの最新バージョンを使用して、次のすべての例を試してください。

Sr.No. Type & Description
1

datetime

タイムゾーンをUTCに設定してISO 8601に従ってエンコードされた日付と時刻(年、月、日、時間、分、秒、秒の小数部)。

2

datetime-local

タイムゾーン情報なしでISO 8601に従ってエンコードされた日付と時刻(年、月、日、時間、分、秒、秒の小数部)。

3

date

ISO 8601に従ってエンコードされた日付(年、月、日)。

4

month

ISO 8601に従ってエンコードされた年と月で構成される日付。

5

week

ISO 8601に従ってエンコードされた年と週の番号で構成される日付。

6

time

ISO 8601に従ってエンコードされた時間(時、分、秒、小数秒)。

7

number

数値のみを受け入れます。 step属性は精度を指定し、デフォルトは1です。

8

range

範囲タイプは、数値の範囲の値を含む必要がある入力フィールドに使用されます。

9

email

電子メールの値のみを受け入れます。 このタイプは、電子メールアドレスを含む必要がある入力フィールドに使用されます。 単純なテキストを送信しようとすると、email @ example.com形式のメールアドレスのみが入力されます。

10

url

URL値のみを受け入れます。 このタイプは、URLアドレスを含む必要がある入力フィールドに使用されます。 単純なテキストを送信しようとすると、http://www.example.com形式またはhttp://example.com形式のURLアドレスのみを入力するように強制されます。

<output>要素

HTML5では、スクリプトによって記述された出力など、さまざまなタイプの出力の結果を表すために使用される新しい要素<output>が導入されました。

*for* 属性を使用して、出力要素と、計算に影響を与えたドキュメント内の他の要素との関係を指定できます(たとえば、入力またはパラメーターとして)。 for属性の値は、スペースで区切られた他の要素のIDのリストです。
<!DOCTYPE HTML>

<html>
   <head>
      <script type = "text/javascript">

         function showResult() {
            x = document.forms["myform"]["newinput"].value;
            document.forms["myform"]["result"].value = x;
         }
      </script>
   </head>

   <body>

      <form action = "/cgi-bin/html5.cgi" method = "get" name = "myform">
         Enter a value : <input type = "text" name = "newinput"/>
         <input type = "button" value = "Result"  onclick = "showResult();"/>
         <output name = "result"></output>
      </form>

   </body>
</html>

それは次の結果を生成します-

プレースホルダー属性

HTML5では、 placeholder という新しい属性が導入されました。 <input>および<textarea>要素のこの属性は、フィールドに入力できる内容のヒントをユーザーに提供します。 プレースホルダーテキストには、キャリッジリターンまたはラインフィードを含めることはできません。

ここにプレースホルダー属性の簡単な構文があります-

<input type = "text" name = "search" placeholder = "search the web"/>

この属性は、Mozilla、Safari、およびCromeブラウザーの最新バージョンでのみサポートされています。

<!DOCTYPE HTML>

<html>
   <body>

      <form action = "/cgi-bin/html5.cgi" method = "get">
         Enter email : <input type = "email" name = "newinput"
            placeholder = "[email protected]"/>
         <input type = "submit" value = "submit"/>
      </form>

   </body>
</html>

これは、次の結果を生成します-

オートフォーカス属性

これは、ドキュメントの読み込み時にJavaScriptで簡単にプログラムできる単純な1ステップのパターンであり、特定のフォームフィールドに自動的にフォーカスします。

HTML5は、次のように使用される autofocus と呼ばれる新しい属性を導入しました-

<input type = "text" name = "search" autofocus/>

この属性は、Mozilla、Safari、Chromeブラウザの最新バージョンでのみサポートされています。

<!DOCTYPE HTML>

<html>
   <body>

      <form action = "/cgi-bin/html5.cgi" method = "get">
         Enter email : <input type = "text" name = "newinput" autofocus/>
         <p>Try to submit using Submit button</p>
         <input type = "submit" value = "submit"/>
      </form>

   </body>
</html>

必須属性

これで、HTML5が required と呼ばれる新しい属性を導入したため、空のテキストボックスが送信されないなど、クライアント側の検証にJavaScriptを使用する必要がなくなります。

<input type = "text" name = "search" required/>

この属性は、Mozilla、Safari、Chromeブラウザの最新バージョンでのみサポートされています。

<!DOCTYPE HTML>

<html>
   <body>

      <form action = "/cgi-bin/html5.cgi" method = "get">
         Enter email : <input type = "text" name = "newinput" required/>
         <p>Try to submit using Submit button</p>
         <input type = "submit" value = "submit"/>
      </form>

   </body>
</html>

それは次の結果を生成します-

HTML5-SVG

SVGは* S calable V ector G * raphicsの略で、2DグラフィックスとグラフィカルアプリケーションをXMLで記述するための言語であり、XMLはSVGビューアーによってレンダリングされます。

SVGは主に、円グラフ、X、Y座標系の2次元グラフなどのベクトルタイプの図に役立ちます。

SVGはW3C勧告14になりました。 2003年1月。SVG仕様の最新バージョンはhttps://www.w3.org/TR/SVG/[SVG Specification]で確認できます。

SVGファイルの表示

ほとんどのWebブラウザーは、PNG、GIF、およびJPGを表示できるように、SVGを表示できます。 Internet Explorerユーザーは、ブラウザでSVGを表示できるようにhttps://www.adobe.com/svg/viewer/install/[Adobe SVG Viewer]をインストールする必要がある場合があります。

HTML5にSVGを埋め込む

HTML5では、次の単純な構文を持つ <svg> …​ </svg> タグを使用してSVGを直接埋め込むことができます-

<svg xmlns = "http://www.w3.org/2000/svg">
   ...
</svg>

Firefox 3.7は、次の手順を使用してHTML5を有効にできる構成オプション( "about:config")も導入しました-

  • Firefoxのアドレスバーに「 about:config 」と入力します。
  • 「注意してください、約束します!」をクリックします。表示される警告メッセージのボタンを押してください(そして、それに必ず従ってください!)。
  • html5.enable をページ上部のフィルターバーに入力します。
  • 現在は無効になっているため、クリックして値をtrueに切り替えます。

これで、Firefox HTML5パーサーが有効になり、次の例を試すことができます。

HTML5-SVGサークル

以下は、<circle>タグを使用して円を描くSVGの例のHTML5バージョンです-

<!DOCTYPE html>

<html>
   <head>

      <style>
         #svgelem {
            position: relative;
            left: 50%;
            -webkit-transform: translateX(-20%);
            -ms-transform: translateX(-20%);
            transform: translateX(-20%);
         }
      </style>
      <title>SVG</title>
      <meta charset = "utf-8"/>
   </head>

   <body>
      <h2 align = "center">HTML5 SVG Circle</h2>

      <svg id = "svgelem" height = "200" xmlns = "http://www.w3.org/2000/svg">
         <circle id = "redcircle" cx = "50" cy = "50" r = "50" fill = "red"/>
      </svg>
   </body>
</html>

これにより、HTML5対応の最新バージョンのFirefoxで次の結果が生成されます。

HTML5-SVG長方形

以下は、<rect>タグを使用して長方形を描くSVGの例のHTML5バージョンです-

<!DOCTYPE html>

<html>
   <head>

      <style>
         #svgelem {
            position: relative;
            left: 50%;
            -webkit-transform: translateX(-50%);
            -ms-transform: translateX(-50%);
            transform: translateX(-50%);
         }
      </style>
      <title>SVG</title>
      <meta charset = "utf-8"/>
   </head>

   <body>
      <h2 align = "center">HTML5 SVG Rectangle</h2>

      <svg id = "svgelem" height = "200" xmlns = "http://www.w3.org/2000/svg">
         <rect id = "redrect" width = "300" height = "100" fill = "red"/>
      </svg>
   </body>
</html>

これにより、HTML5対応の最新バージョンのFirefoxで次の結果が生成されます。

HTML5-SVGライン

以下は、<line>タグを使用して線を描くSVGの例のHTML5バージョンです-

<!DOCTYPE html>

<html>
   <head>

      <style>
         #svgelem {
            position: relative;
            left: 50%;
            -webkit-transform: translateX(-50%);
            -ms-transform: translateX(-50%);
            transform: translateX(-50%);
         }
      </style>
      <title>SVG</title>
      <meta charset = "utf-8"/>
   </head>

   <body>
      <h2 align = "center">HTML5 SVG Line</h2>

      <svg id = "svgelem" height = "200" xmlns = "http://www.w3.org/2000/svg">
         <line x1 = "0" y1 = "0" x2 = "200" y2 = "100"
            style = "stroke:red;stroke-width:2"/>
      </svg>
   </body>
</html>
*style* 属性を使用すると、ストロークと塗りつぶしの色、ストロークの幅などの追加のスタイル情報を設定できます。

これにより、HTML5対応の最新バージョンのFirefoxで次の結果が生成されます。

HTML5-SVG楕円

以下は、<ellipse>タグを使用して楕円を描くSVGの例のHTML5バージョンです-

<!DOCTYPE html>

<html>
   <head>

      <style>
         #svgelem {
            position: relative;
            left: 50%;
            -webkit-transform: translateX(-40%);
            -ms-transform: translateX(-40%);
            transform: translateX(-40%);
         }
      </style>
      <title>SVG</title>
      <meta charset = "utf-8"/>
   </head>

   <body>
      <h2 align = "center">HTML5 SVG Ellipse</h2>

      <svg id = "svgelem" height = "200" xmlns = "http://www.w3.org/2000/svg">
         <ellipse cx = "100" cy = "50" rx = "100" ry = "50" fill = "red"/>
      </svg>

   </body>
</html>

これにより、HTML5対応の最新バージョンのFirefoxで次の結果が生成されます。

HTML5-SVGポリゴン

以下は、<polygon>タグを使用してポリゴンを描くSVGの例のHTML5バージョンです-

<!DOCTYPE html>

<html>
   <head>

      <style>
         #svgelem {
            position: relative;
            left: 50%;
            -webkit-transform: translateX(-50%);
            -ms-transform: translateX(-50%);
            transform: translateX(-50%);
         }
      </style>
      <title>SVG</title>
      <meta charset = "utf-8"/>
   </head>

   <body>
      <h2 align = "center">HTML5 SVG Polygon</h2>

      <svg id = "svgelem" height = "200" xmlns = "http://www.w3.org/2000/svg">
         <polygon  points = "20,10 300,20, 170,50" fill = "red"/>
      </svg>
   </body>
</html>

これにより、HTML5対応の最新バージョンのFirefoxで次の結果が生成されます。

HTML5-SVGポリライン

以下は、<polyline>タグを使用してポリラインを描くSVGの例のHTML5バージョンです-

<!DOCTYPE html>

<html>
   <head>

      <style>
         #svgelem {
            position: relative;
            left: 50%;
            -webkit-transform: translateX(-20%);
            -ms-transform: translateX(-20%);
            transform: translateX(-20%);
         }
      </style>
      <title>SVG</title>
      <meta charset = "utf-8"/>
   </head>

   <body>
      <h2 align = "center">HTML5 SVG Polyline</h2>
      <svg id = "svgelem" height = "200" xmlns = "http://www.w3.org/2000/svg">
         <polyline points = "0,0 0,20 20,20 20,40 40,40 40,60" fill = "red"/>
      </svg>
   </body>
</html>

これにより、HTML5対応の最新バージョンのFirefoxで次の結果が生成されます。

HTML5-SVGグラデーション

以下は、<ellipse>タグを使用して楕円を描画し、<radialGradient>タグを使用してSVG放射状グラデーションを定義するSVGサンプルのHTML5バージョンです。

同様に、<linearGradient>タグを使用してSVG線形グラデーションを作成できます。

<!DOCTYPE html>

<html>
   <head>

      <style>
         #svgelem {
            position: relative;
            left: 50%;
            -webkit-transform: translateX(-40%);
            -ms-transform: translateX(-40%);
            transform: translateX(-40%);
         }
      </style>
      <title>SVG</title>
      <meta charset = "utf-8"/>
   </head>

   <body>
      <h2 align = "center">HTML5 SVG Gradient Ellipse</h2>

      <svg id = "svgelem" height = "200" xmlns = "http://www.w3.org/2000/svg">
         <defs>
            <radialGradient id="gradient" cx = "50%" cy = "50%" r = "50%" fx = "50%"
               fy = "50%">
               <stop offset = "0%" style = "stop-color:rgb(200,200,200); stop-opacity:0"/>
               <stop offset = "100%" style = "stop-color:rgb(0,0,255); stop-opacity:1"/>
            </radialGradient>
         </defs>
         <ellipse cx = "100" cy = "50" rx = "100" ry = "50"
            style = "fill:url(#gradient)"/>
      </svg>

   </body>
</html>

これにより、HTML5対応の最新バージョンのFirefoxで次の結果が生成されます。

HTML5 − SVGスター

以下は、<polygon>タグを使用して星を描くSVGの例のHTML5バージョンです。

<html>
   <head>

      <style>
         #svgelem {
            position: relative;
            left: 50%;
            -webkit-transform: translateX(-40%);
            -ms-transform: translateX(-40%);
            transform: translateX(-40%);
         }
      </style>
      <title>SVG</title>
      <meta charset = "utf-8"/>
   </head>

   <body>
      <h2 align = "center">HTML5 SVG Star</h2>

      <svg id = "svgelem" height = "200" xmlns = "http://www.w3.org/2000/svg">
         <polygon points = "100,10 40,180 190,60 10,60 160,180" fill = "red"/>
      </svg>
    </body>
</html>

これにより、HTML5対応の最新バージョンのFirefoxで次の結果が生成されます。

HTML5-MathML

HTML5のHTML構文では、<math> …​ </math>タグを使用して、MathML要素をドキュメント内で使用できます。

ほとんどのWebブラウザーはMathMLタグを表示できます。 ブラウザがMathMLをサポートしていない場合は、Firefoxの最新バージョンを使用することをお勧めします。

MathMLの例

以下は、MathMLを使用した有効なHTML5ドキュメントです-

<!doctype html>

<html>
   <head>
      <meta charset = "UTF-8">
      <title>Pythagorean theorem</title>
   </head>

   <body>
      <math xmlns = "http://www.w3.org/1998/Math/MathML">

         <mrow>
            <msup><mi>a</mi><mn>2</mn></msup>
            <mo>+</mo>

            <msup><mi>b</mi><mn>2</mn></msup>
            <mo> = </mo>

            <msup><mi>c</mi><mn>2</mn></msup>
         </mrow>

      </math>
   </body>
</html>

これは、次の結果を生成します-

MathML文字の使用

以下は、文字&InvisibleTimes;を使用するマークアップです。 −

<!doctype html>

<html>
   <head>
      <meta charset = "UTF-8">
      <title>MathML Examples</title>
   </head>

   <body>
      <math xmlns = "http://www.w3.org/1998/Math/MathML">

         <mrow>
            <mrow>

               <msup>
                  <mi>x</mi>
                  <mn>2</mn>
               </msup>

               <mo>+</mo>

               <mrow>
                  <mn>4</mn>
                  <mo>&InvisibleTimes;</mo>
                  <mi>x</mi>
               </mrow>

               <mo>+</mo>
               <mn>4</mn>

            </mrow>

            <mo>=</mo>
            <mn>0</mn>

         </mrow>
      </math>
   </body>
</html>

これにより、次の結果が生成されます。 x ^ 2 ^ + 4x + 4 = 0のような適切な結果が表示されない場合は、Firefox 3.5以降のバージョンを使用してください。

これは、次の結果を生成します-

マトリックス表示の例

単純な2x2行列を表すために使用される次の例を検討してください-

<!doctype html>

<html>
   <head>
      <meta charset = "UTF-8">
      <title>MathML Examples</title>
   </head>

   <body>
      <math xmlns = "http://www.w3.org/1998/Math/MathML">

         <mrow>
            <mi>A</mi>
            <mo>=</mo>

            <mfenced open = "[" close="]">

               <mtable>
                  <mtr>
                     <mtd><mi>x</mi></mtd>
                     <mtd><mi>y</mi></mtd>
                  </mtr>

                  <mtr>
                     <mtd><mi>z</mi></mtd>
                     <mtd><mi>w</mi></mtd>
                  </mtr>
               </mtable>

            </mfenced>
         </mrow>
      </math>

   </body>
</html>

これは、次の結果を生成します-

これにより、次の結果が生成されます。 適切な結果が表示されない場合は、Firefox 3.5以降のバージョンを使用してください。

MathML

HTML5-Webストレージ

HTML5では、HTTPセッションCookieと同様に、クライアント側に構造化データを保存し、次の欠点を克服するための2つのメカニズムを導入しています。

  • CookieはすべてのHTTP要求に含まれているため、同じデータを送信することでWebアプリケーションの速度が低下します。
  • CookieはすべてのHTTP要求に含まれているため、暗号化されていないデータをインターネット経由で送信します。
  • Cookieは約4 KBのデータに制限されています。 必要なデータを保存するには不十分です。

2つのストレージは、*セッションストレージ*および*ローカルストレージ*であり、異なる状況を処理するために使用されます。

ほとんどすべてのブラウザーの最新バージョンは、Internet Explorerを含むHTML5ストレージをサポートしています。

セッションストレージ

_Session Storage_は、ユーザーが単一のトランザクションを実行するシナリオ用に設計されていますが、異なるウィンドウで複数のトランザクションを同時に実行できます。

たとえば、ユーザーが同じサイトを使用して2つの異なるウィンドウで飛行機のチケットを購入する場合。 サイトがCookieを使用してユーザーが購入しているチケットを追跡している場合、ユーザーが両方のウィンドウでページからページにクリックすると、現在購入中のチケットが一方のウィンドウから他方に「漏れ」、ユーザーが潜在的に気づかずに同じフライトのチケットを2枚購入する。

HTML5は、セッションストレージにデータを追加するためにサイトで使用される_sessionStorage_属性を導入し、そのウィンドウで開かれた同じサイトの任意のページ、つまり session およびウィンドウを閉じるとすぐにアクセスできるようになります、セッションは失われます。

以下は、セッション変数を設定し、その変数にアクセスするコードです-

<!DOCTYPE HTML>

<html>
   <body>
      <script type = "text/javascript">

         if( sessionStorage.hits ) {
            sessionStorage.hits = Number(sessionStorage.hits) +1;
         } else {
            sessionStorage.hits = 1;
         }
         document.write("Total Hits :" + sessionStorage.hits );
      </script>

      <p>Refresh the page to increase number of hits.</p>
      <p>Close the window and open it again and check the result.</p>

   </body>
</html>

これは、次の結果を生成します-

ローカルストレージ

_Local Storage_は、複数のウィンドウにまたがるストレージ用に設計されており、現在のセッションを超えて持続します。 特に、Webアプリケーションでは、パフォーマンス上の理由から、ユーザーが作成したドキュメント全体やユーザーのメールボックスなど、メガバイト単位のユーザーデータをクライアント側に保存したい場合があります。

この場合も、Cookieはすべてのリクエストで送信されるため、このケースをうまく処理しません。

HTML5は_localStorage_属性を導入します。これは、時間制限なしでページのローカルストレージエリアにアクセスするために使用され、このローカルストレージは、そのページを使用するときにいつでも使用できます。

以下は、ローカルストレージ変数を設定し、このページにアクセスするたびに、次回もウィンドウを開いたときにその変数にアクセスするコードです-

<!DOCTYPE HTML>

<html>
   <body>
      <script type = "text/javascript">

         if( localStorage.hits ) {
            localStorage.hits = Number(localStorage.hits) +1;
         } else {
            localStorage.hits = 1;
         }
         document.write("Total Hits :" + localStorage.hits );
      </script>

      <p>Refresh the page to increase number of hits.</p>
      <p>Close the window and open it again and check the result.</p>

   </body>
</html>

これは、次の結果を生成します-

Webストレージを削除する

ローカルマシンに機密データを保存することは危険であり、セキュリティホールを残す可能性があります。

_Session Storage Data_は、セッションが終了した直後にブラウザーによって削除されます。

ローカルストレージ設定をクリアするには、* localStorage.remove( 'key')を呼び出す必要があります。ここで、「キー」は、削除する値のキーです。 すべての設定をクリアする場合は、 localStorage.clear()*メソッドを呼び出す必要があります。

以下は、完全なローカルストレージをクリアするコードです-

<!DOCTYPE HTML>

<html>
   <body>

      <script type = "text/javascript">
         localStorage.clear();

        //Reset number of hits.
         if( localStorage.hits ) {
            localStorage.hits = Number(localStorage.hits) +1;
         } else {
            localStorage.hits = 1;
         }
         document.write("Total Hits :" + localStorage.hits );

      </script>

      <p>Refreshing the page would not to increase hit counter.</p>
      <p>Close the window and open it again and check the result.</p>

   </body>
</html>

これにより、次の結果が生成されます–

HTML5-Web SQLデータベース

Web SQL Database APIは実際にはHTML5仕様の一部ではありませんが、SQLを使用してクライアント側のデータベースを操作するためのAPIセットを導入する別個の仕様です。

私はあなたが素晴らしいWeb開発者であると仮定しています。もしそうなら、間違いなくSQLとRDBMSの概念をよく知っているでしょう。 それでもSQLとのセッションが必要な場合は、リンク:/sql/index [SQLチュートリアル]にアクセスできます。

Web SQL Databaseは、Safari、Chrome、およびOperaの最新バージョンで動作します。

コアメソッド

このチュートリアルで説明する仕様で定義されている次の3つのコアメソッドがあります-

  • openDatabase -このメソッドは、既存のデータベースを使用するか、新しいデータベースを作成して、データベースオブジェクトを作成します。
  • transaction -このメソッドにより、トランザクションを制御し、状況に応じてコミットまたはロールバックを実行できます。
  • executeSql -このメソッドは、実際のSQLクエリを実行するために使用されます。

データベースを開く

_openDatabase_メソッドは、データベースが既に存在する場合はそれを開き、既に存在しない場合は作成します。

データベースを作成して開くには、次のコードを使用します-

var db = openDatabase('mydb', '1.0', 'Test DB', 2 *1024* 1024);

上記の方法は、次の5つのパラメータを取りました-

  • データベース名
  • バージョンナンバー
  • テキストの説明
  • データベースのサイズ *作成コールバック

データベースが作成されている場合、最後の5番目の引数である作成コールバックが呼び出されます。 ただし、この機能がないと、データベースはオンザフライで作成され、正しくバージョン管理されます。

クエリの実行

クエリを実行するには、database.transaction()関数を使用します。 この関数は、次のように実際にクエリを実行するのを担当する関数である単一の引数が必要です-

var db = openDatabase('mydb', '1.0', 'Test DB', 2* 1024 *1024);

db.transaction(function (tx) {
   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
});

上記のクエリは、 'mydb’データベースにLOGSというテーブルを作成します。

INSERT操作

テーブルにエントリを作成するには、次のように上記の例で単純なSQLクエリを追加します-

var db = openDatabase('mydb', '1.0', 'Test DB', 2* 1024 *1024);

db.transaction(function (tx) {
   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');
   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
});

次のように入力を作成しながら、動的な値を渡すことができます-

var db = openDatabase('mydb', '1.0', 'Test DB', 2* 1024 * 1024);

db.transaction(function (tx) {
   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
   tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?, ?'), [e_id, e_log];
});

ここで、 e_id および e_log は外部変数であり、executeSqlは配列引数の各項目を「?」にマップします。

読み取り操作

既存のレコードを読み取るには、コールバックを使用して次のように結果をキャプチャします-

var db = openDatabase('mydb', '1.0', 'Test DB', 2 *1024* 1024);

db.transaction(function (tx) {
   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');
   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
});

db.transaction(function (tx) {
   tx.executeSql('SELECT *FROM LOGS', [], function (tx, results) {
      var len = results.rows.length, i;
      msg = "<p>Found rows: " + len + "</p>";
      document.querySelector('#status').innerHTML +=  msg;

      for (i = 0; i < len; i++) {
         alert(results.rows.item(i).log );
      }

   }, null);
});

最後の例

最後に、この例を次のように本格的なHTML5ドキュメントに保存し、Safariブラウザで実行してみます。

<!DOCTYPE HTML>

<html>
   <head>

      <script type = "text/javascript">
         var db = openDatabase('mydb', '1.0', 'Test DB', 2* 1024 *1024);
         var msg;

         db.transaction(function (tx) {
            tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
            msg = '<p>Log message created and row inserted.</p>';
            document.querySelector('#status').innerHTML =  msg;
         })

         db.transaction(function (tx) {
            tx.executeSql('SELECT* FROM LOGS', [], function (tx, results) {
               var len = results.rows.length, i;
               msg = "<p>Found rows: " + len + "</p>";
               document.querySelector('#status').innerHTML +=  msg;

               for (i = 0; i < len; i++) {
                  msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
                  document.querySelector('#status').innerHTML +=  msg;
               }
            }, null);
         });
      </script>
   </head>

   <body>
      <div id = "status" name = "status">Status Message</div>
   </body>
</html>

これは、次の結果を生成します-

HTML5-サーバー送信イベント

サーバー送信イベント

サーバーから更新を取得し、Webブラウザーで結果を表示します。サーバーから更新を取得する前に、ブラウザーはWebサーバーで利用可能な更新があるかどうかを確認する必要があります。

HTML5コードは次のようになります

<html>
   <body>

      <h1> Server updates</h1>
      <div id="result"></div>

      <script>
         if(typeof(EventSource) !== "undefined") {
            var source = new EventSource("demo_sse.php");

            source.onmessage = function(event) {
               document.getElementById("result").innerHTML += event.data + "<br>";
            };
         }

         else {
            document.getElementById("result").innerHTML = "Sorry, your browser does not support ";
         }
      </script>
   </body>
</html>

demo_sse.php

サーバーコードはPHPである必要があり、次のようになります

<?php
   header('Content-Type: text/event-stream');
   header('Cache-Control: no-cache');

   $time = date('r');
   echo "data: The server time is: {$time}\n\n";
   flush();
?>

サーバー送信イベントのデモを入手できますlink:/html5/src/sse/sse.zip [こちら]

HTML5-WebSockets

WebSocketsは、単一のソケット上で動作し、HTML 5準拠のブラウザーのJavaScriptインターフェースを介して公開される、Webアプリケーション用の次世代双方向通信テクノロジーです。

WebサーバーとのWebソケット接続を取得したら、* send()メソッドを呼び出してブラウザーからサーバーにデータを送信し、 *onmessage イベントハンドラーでサーバーからブラウザーにデータを受信できます。

以下は、新しいWebSocketオブジェクトを作成するAPIです。

var Socket = new WebSocket(url, [protocal] );

ここで、最初の引数urlは、接続するURLを指定します。 2番目の属性protocolはオプションであり、存在する場合、接続が成功するためにサーバーがサポートする必要があるサブプロトコルを指定します。

WebSocketの属性

WebSocketオブジェクトの属性は次のとおりです。 上記のようにSocketオブジェクトを作成したと仮定します-

Sr.No. Attribute & Description
1

Socket.readyState

readonly属性readyStateは、接続の状態を表します。 それは次の値を持つことができます-

  • 値0は、接続がまだ確立されていないことを示します。
  • 値1は、接続が確立され、通信が可能であることを示します。
  • 値2は、接続が終了ハンドシェイクを通過していることを示します。 *3の値は、接続が閉じられたか、開くことができなかったことを示します。
2
  • Socket.bufferedAmount*

readonly属性bufferedAmountは、send()メソッドを使用してキューに入れられたUTF-8テキストのバイト数を表します。

WebSocketイベント

以下は、WebSocketオブジェクトに関連付けられたイベントです。 上記のようにSocketオブジェクトを作成したと仮定します-

Event Event Handler Description
open Socket.onopen This event occurs when socket connection is established.
message Socket.onmessage This event occurs when client receives data from server.
error Socket.onerror This event occurs when there is any error in communication.
close Socket.onclose This event occurs when connection is closed.

WebSocketメソッド

以下は、WebSocketオブジェクトに関連付けられたメソッドです。 上記のようにSocketオブジェクトを作成したと仮定します-

Sr.No. Method & Description
1

Socket.send()

send(data)メソッドは、接続を使用してデータを送信します。

2

Socket.close()

close()メソッドは、既存の接続を終了するために使用されます。

WebSocketの例

WebSocketは、クライアントとサーバー間の標準的な双方向TCPソケットです。 ソケットはHTTP接続として開始され、HTTPハンドシェイク後にTCPソケットに「アップグレード」されます。 ハンドシェイク後、どちらの側もデータを送信できます。

クライアント側のHTMLおよびJavaScriptコード

このチュートリアルを書いている時点では、WebSocket()インターフェースをサポートしているWebブラウザーはわずかです。 Chrome、Mozilla、Opera、Safariの最新バージョンで次の例を試すことができます。

<!DOCTYPE HTML>

<html>
   <head>

      <script type = "text/javascript">
         function WebSocketTest() {

            if ("WebSocket" in window) {
               alert("WebSocket is supported by your Browser!");

              //Let us open a web socket
               var ws = new WebSocket("ws://localhost:9998/echo");

               ws.onopen = function() {

                 //Web Socket is connected, send data using send()
                  ws.send("Message to send");
                  alert("Message is sent...");
               };

               ws.onmessage = function (evt) {
                  var received_msg = evt.data;
                  alert("Message is received...");
               };

               ws.onclose = function() {

                 //websocket is closed.
                  alert("Connection is closed...");
               };
            } else {

              //The browser doesn't support WebSocket
               alert("WebSocket NOT supported by your Browser!");
            }
         }
      </script>

   </head>

   <body>
      <div id = "sse">
         <a href = "javascript:WebSocketTest()">Run WebSocket</a>
      </div>

   </body>
</html>

pywebsocketをインストールする

上記のクライアントプログラムをテストする前に、WebSocketをサポートするサーバーが必要です。 Apache HTTPサーバー用のWebソケット拡張機能を提供することを目的としたhttps://code.google.com/p/pywebsocket/[pywebsocket]からmod_pywebsocket-x.x.x.tar.gzをダウンロードし、次の手順に従ってインストールします。

  • ダウンロードしたファイルを解凍して解凍します。
  • pywebsocket-x.x.x/src/ ディレクトリ内に移動します。
  • $ python setup.py build
  • $ sudo python setup.py install
  • 次に、文書を読みます-
  • $ pydoc mod_pywebsocket

これにより、Python環境にインストールされます。

サーバーを起動する

*pywebsocket-x.x.x/src/mod_pywebsocket* フォルダーに移動し、次のコマンドを実行します-
$sudo python standalone.py -p 9998 -w ../example/

これにより、ポート9998でリッスンしているサーバーが起動し、echo_wsh.pyが存在する-wオプションで指定された handlers ディレクトリが使用されます。

Chromeブラウザーを使用して、最初に作成したhtmlファイルを開きます。 ブラウザーがWebSocket()をサポートしている場合、ブラウザーがWebSocketをサポートしていることを示すアラートが表示され、最後に「WebSocketを実行」をクリックすると、サーバースクリプトからGoodbyeメッセージが送信されます。

HTML5-キャンバス

HTML5要素<canvas>を使用すると、JavaScriptを使用してグラフィックスを簡単かつ強力に描画できます。 グラフの描画、写真の合成、または単純な(それほど単純ではない)アニメーションの作成に使用できます。

これは、2つの特定の属性 width および height に加えて、id、name、classなどのすべてのコアHTML5属性を含む単純な<canvas>要素です。

<canvas id = "mycanvas" width = "100" height = "100"></canvas>

次のように_getElementById()_メソッドを使用して、DOMで<canvas>要素を簡単に見つけることができます-

var canvas = document.getElementById("mycanvas");

HTML5ドキュメントで<canvas>要素を使用する簡単な例を見てみましょう。

<!DOCTYPE HTML>

<html>
   <head>

      <style>
         #mycanvas{border:1px solid red;}
      </style>
   </head>

   <body>
      <canvas id = "mycanvas" width = "100" height = "100"></canvas>
   </body>
</html>

これは、次の結果を生成します-

レンダリングコンテキスト

<canvas>は最初は空白です。何かを表示するには、スクリプトが最初にレンダリングコンテキストにアクセスして描画する必要があります。

canvas要素には getContext というDOMメソッドがあり、レンダリングコンテキストとその描画関数を取得するために使用されます。 この関数は、コンテキストのタイプ* 2d *という1つのパラメータを取ります。

以下は、ブラウザが<canvas>要素をサポートしているかどうかのチェックとともに、必要なコンテキストを取得するコードです-

var canvas  = document.getElementById("mycanvas");

if (canvas.getContext) {
   var ctx = canvas.getContext('2d');
  //drawing code here
} else {

  //canvas-unsupported code here
}

ブラウザのサポート

Firefox、Safari、Chrome、およびOperaの最新バージョンはすべてHTML5 Canvasをサポートしていますが、IE8はキャンバスをネイティブにサポートしていません。

ExplorerCanvasを使用して、Internet Explorerでキャンバスをサポートできます。 次のようにこのJavaScriptを含めるだけです-

<!--[if IE]><script src = "excanvas.js"></script><![endif]-->

HTML5 Canvasの例

このチュートリアルでは、HTML5 <canvas>要素に関連する次の例を取り上げます。

Sr.No. Examples & Description
1

Drawing Rectangles

HTML5 <canvas>要素を使用して長方形を描画する方法を学ぶ

2

Drawing Paths

HTML5 <canvas>要素のパスを使用して図形を作成する方法を学ぶ

3

Drawing Lines

HTML5 <canvas>要素を使用して線を描く方法を学ぶ

4

Drawing Bezier

HTML5 <canvas>要素を使用してベジェ曲線を描く方法を学ぶ

5

Drawing Quadratic

HTML5 <canvas>要素を使用して2次曲線を描く方法を学ぶ

6

Using Images

HTML5 <canvas>要素で画像を使用する方法を学ぶ

7

Create Gradients

HTML5 <canvas>要素を使用してグラデーションを作成する方法を学ぶ

8

Styles and Colors

HTML5 <canvas>要素を使用してスタイルと色を適用する方法を学ぶ

9

Text and Fonts

さまざまなフォントとサイズを使用して素晴らしいテキストを描画する方法を学びます。

10

Pattern and Shadow

さまざまなパターンを描き、影を落とす方法を学びます。

11

Canvas States

キャンバスで複雑な描画をしながら、キャンバスの状態を保存および復元する方法を学びます。

12

Canvas Translation

このメソッドは、キャンバスとその原点をグリッド内の別のポイントに移動するために使用されます。

13

Canvas Rotation

このメソッドは、現在の原点を中心にキャンバスを回転させるために使用されます。

14

Canvas Scaling

このメソッドは、キャンバスグリッドの単位を増減するために使用されます。

15

Canvas Transform

これらのメソッドにより、変換マトリックスを直接変更できます。

16

Canvas Composition

このメソッドは、特定の領域をマスクするか、キャンバスからセクションをクリアするために使用されます。

17

Canvas Animation

HTML5キャンバスとJavaScriptを使用して基本的なアニメーションを作成する方法を学びます。

HTML5-オーディオとビデオ

HTML5機能には、Flashを必要としないネイティブのオーディオおよびビデオのサポートが含まれます。

HTML5 <audio>および<video>タグを使用すると、Webサイトにメディアを簡単に追加できます。 src 属性を設定してメディアソースを識別し、ユーザーがメディアを再生および一時停止できるようにcontrols属性を含める必要があります。

ビデオを埋め込む

ここにあなたのウェブページにビデオファイルを埋め込む最も簡単な形式があります-

<video src = "foo.mp4"  width = "300" height = "200" controls>
   Your browser does not support the <video> element.
</video>

現在のHTML5ドラフト仕様では、ブラウザがビデオタグでサポートするビデオ形式を指定していません。 しかし、最も一般的に使用されるビデオ形式は-

  • Ogg -ThedoraビデオコーデックおよびVorbisオーディオコーデックを含むOggファイル。
  • mpeg4 -H.264ビデオコーデックおよびAACオーディオコーデックを含むMPEG4ファイル。

<source>タグを使用して、メディアタイプおよびその他の多くの属性とともにメディアを指定できます。 ビデオ要素は複数のソース要素を許可し、ブラウザは最初に認識された形式を使用します-

<!DOCTYPE HTML>

<html>
   <body>

      <video  width = "300" height = "200" controls autoplay>
         <source src = "/html5/foo.ogg" type ="video/ogg"/>
         <source src = "/html5/foo.mp4" type = "video/mp4"/>
         Your browser does not support the <video> element.
      </video>

   </body>
</html>

これは、次の結果を生成します-

ビデオ属性の仕様

HTML5ビデオタグには、コントロールのルックアンドフィールとさまざまな機能を制御するための多くの属性があります-

Sr.No. Attribute & Description
1

autoplay

このブール属性を指定すると、データの読み込みを終了せずに、できる限り早くビデオの再生が自動的に開始されます。

2

autobuffer

このブール属性を指定すると、ビデオは自動的に再生するように設定されていなくても、自動的にバッファリングを開始します。

3

controls

この属性が存在する場合、ユーザーはボリューム、シーク、一時停止/再開を含むビデオの再生を制御できます。

4

height

この属性は、ビデオの表示領域の高さをCSSピクセルで指定します。

5

loop

このブール属性を指定すると、ビデオは最後に到達した後、自動的に最初に戻ることができます。

6

preload

この属性は、ビデオがページのロード時にロードされ、実行準備が整うことを指定します。 自動再生が存在する場合は無視されます。

7

poster

これは、ユーザーが再生またはシークするまで表示する画像のURLです。

8

src

埋め込む動画のURL。 これはオプションです。代わりに、ビデオブロック内で<source>要素を使用して、埋め込むビデオを指定できます。

9

width

この属性は、ビデオの表示領域の幅をCSSピクセルで指定します。

オーディオを埋め込む

HTML5は、次のようにHTMLまたはXHTMLドキュメントにサウンドコンテンツを埋め込むために使用される<audio>タグをサポートします。

<audio src = "foo.wav" controls autoplay>
   Your browser does not support the <audio> element.
</audio>

現在のHTML5ドラフト仕様では、ブラウザがオーディオタグでサポートするオーディオ形式を指定していません。 しかし、最も一般的に使用されるオーディオ形式は、 ogg、mp3wav です。

<source&ggt;を使用できます。メディアタイプおよびその他の多くの属性とともにメディアを指定するタグ。 オーディオ要素は、複数のソース要素を許可し、ブラウザは最初に認識された形式を使用します-

<!DOCTYPE HTML>

<html>
   <body>

      <audio controls autoplay>
         <source src = "/html5/audio.ogg" type = "audio/ogg"/>
         <source src = "/html5/audio.wav" type = "audio/wav"/>
         Your browser does not support the <audio> element.
      </audio>

   </body>
</html>

これは、次の結果を生成します-

オーディオ属性の仕様

HTML5オーディオタグには、コントロールのルックアンドフィールとさまざまな機能を制御するための多くの属性があります-

Sr.No. Attribute & Description
1

autoplay

このブール属性を指定した場合、オーディオの再生は、データのロードを終了することなく停止することなく、できる限り早く自動的に開始されます。

2

autobuffer

このブール属性を指定すると、オーディオは自動的に再生するように設定されていなくても、自動的にバッファリングを開始します。

3

controls

この属性が存在する場合、ユーザーは音量、シーク、一時停止/再開を含むオーディオ再生を制御できます。

4

loop

このブール属性が指定されている場合、オーディオは最後に到達した後、自動的に最初に戻ることを許可します。

5

preload

この属性は、ページのロード時にオーディオがロードされ、実行準備が整うことを指定します。 自動再生が存在する場合は無視されます。

6

src

埋め込むオーディオのURL。 これはオプションです。代わりに、ビデオブロック内で<source>要素を使用して、埋め込むビデオを指定できます。

メディアイベントの処理

HTML5オーディオおよびビデオタグには、JavaScriptを使用してコントロールのさまざまな機能を制御するための多くの属性があります-

S.No. Event & Description
1

abort

このイベントは、再生が中止されると生成されます。

2

canplay

このイベントは、メディアを再生できる十分なデータが利用可能なときに生成されます。

3

ended

このイベントは、再生が完了すると生成されます。

4

error

このイベントは、エラーが発生したときに生成されます。

5

loadeddata

このイベントは、メディアの最初のフレームのロードが完了すると生成されます。

6

loadstart

このイベントは、メディアのロードが開始されると生成されます。

7

pause

このイベントは、再生が一時停止したときに生成されます。

8

play

このイベントは、再生の開始時または再開時に生成されます。

9

progress

このイベントは、メディアのダウンロードの進行状況を通知するために定期的に生成されます。

10

ratechange

このイベントは、再生速度が変化したときに生成されます。

11

seeked

このイベントは、シーク操作が完了すると生成されます。

12

seeking

このイベントは、シーク操作が開始されると生成されます。

13

suspend

このイベントは、メディアのロードが中断されたときに生成されます。

14

volumechange

このイベントは、音量が変化したときに生成されます。

15

waiting

このイベントは、要求された操作(再生など)が別の操作(シークなど)の完了まで保留されると生成されます。

以下は、指定されたビデオを再生できるようにする例です-

<!DOCTYPE HTML>

<html>
   <head>

      <script type = "text/javascript">
         function PlayVideo() {
            var v = document.getElementsByTagName("video")[0];
            v.play();
         }
      </script>
   </head>

   <body>

      <form>
         <video width = "300" height = "200" src = "/html5/foo.mp4">
         Your browser does not support the video element.
         </video>
         <br/>
         <input type = "button" onclick = "PlayVideo();" value = "Play"/>
      </form>

   </body>
</html>

これは、次の結果を生成します-

メディアタイプ用のサーバーの構成

ほとんどのサーバーは、デフォルトで正しいMIMEタイプのOggまたはmp4メディアを提供しないため、このために適切な構成を追加する必要があります。

AddType audio/ogg .oga
AddType audio/wav .wav
AddType video/ogg .ogv .ogg
AddType video/mp4 .mp4

HTML5-ジオロケーション

HTML5 Geolocation APIを使用すると、お気に入りのWebサイトと現在地を共有できます。 JavaScriptは、緯度と経度をキャプチャし、バックエンドWebサーバーに送信して、ローカルビジネスの検索や地図上での場所の表示など、場所を意識した高度な処理を実行できます。

現在、ほとんどのブラウザとモバイルデバイスはGeolocation APIをサポートしています。 ジオロケーションAPIは、グローバルナビゲーターオブジェクトの新しいプロパティで動作します。 次のように作成できる位置情報オブジェクト-

var geolocation = navigator.geolocation;

位置情報オブジェクトは、ウィジェットがデバイスの地理的位置に関する情報を取得できるようにするサービスオブジェクトです。

ジオロケーション方法

ジオロケーションオブジェクトは、次のメソッドを提供します-

Sr.No. Method & Description
1

getCurrentPosition()

このメソッドは、ユーザーの現在の地理的位置を取得します。

2

watchPosition()

このメソッドは、デバイスの現在の地理的位置に関する定期的な更新を取得します。

3

clearWatch()

このメソッドは、進行中のwatchPosition呼び出しをキャンセルします。

上記の方法のいずれかを使用するサンプルコードは次のとおりです-

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler);
}

ここで、showLocationとerrorHandlerは、次のセクションで説明するように実際の位置を取得し、エラーがあればそれを処理するために使用されるコールバックメソッドです。

ロケーションのプロパティ

位置情報メソッドgetCurrentPosition()およびgetPositionUsingMethodName()は、位置情報を取得するコールバックメソッドを指定します。 これらのメソッドは、完全な位置情報を保存するオブジェクト Position を使用して非同期的に呼び出されます。

*Position* オブジェクトは、デバイスの現在の地理的位置を指定します。 場所は、方位と速度に関する情報とともに地理座標のセットとして表されます。

次の表に、Positionオブジェクトのプロパティを示します。 オプションのプロパティの場合、システムが値を提供できない場合、プロパティの値はnullに設定されます。

Property Type Description
coords objects Specifies the geographic location of the device. The location is expressed as a set of geographic coordinates together with information about heading and speed.
coords.latitude Number Specifies the latitude estimate in decimal degrees. The value range is [-90.00, +90.00].
coords.longitude Number Specifies the longitude estimate in decimal degrees. The value range is [-180.00, +180.00].
coords.altitude Number [Optional] Specifies the altitude estimate in meters above the WGS 84 ellipsoid.
coords.accuracy Number [Optional] Specifies the accuracy of the latitude and longitude estimates in meters.
coords.altitudeAccuracy Number [Optional] Specifies the accuracy of the altitude estimate in meters.
coords.heading Number [Optional] Specifies the device’s current direction of movement in degrees counting clockwise relative to true north.
coords.speed Number [Optional] Specifies the device’s current ground speed in meters per second.
timestamp date Specifies the time when the location information was retrieved and the Position object created.

以下は、Positionオブジェクトを利用するサンプルコードです。 ここでshowLocationメソッドはコールバックメソッドです-

function showLocation( position ) {
   var latitude = position.coords.latitude;
   var longitude = position.coords.longitude;
   ...
}

エラー処理

ジオロケーションは複雑であり、エラーをキャッチして適切に処理することが非常に必要です。

位置情報メソッドgetCurrentPosition()およびwatchPosition()は、 PositionError オブジェクトを提供するエラーハンドラコールバックメソッドを利用します。 このオブジェクトには、次の2つのプロパティがあります-

Property Type Description
code Number Contains a numeric code for the error.
message String Contains a human-readable description of the error.

次の表に、PositionErrorオブジェクトで返される可能性のあるエラーコードを示します。

Code Constant Description
0 UNKNOWN_ERROR The method failed to retrieve the location of the device due to an unknown error.
1 PERMISSION_DENIED The method failed to retrieve the location of the device because the application does not have permission to use the Location Service.
2 POSITION_UNAVAILABLE The location of the device could not be determined.
3 TIMEOUT The method was unable to retrieve the location information within the specified maximum timeout interval.

以下は、PositionErrorオブジェクトを利用するサンプルコードです。 ここでerrorHandlerメソッドはコールバックメソッドです-

function errorHandler( err ) {

   if (err.code == 1) {

     //access is denied
   }
   ...
}

位置オプション

以下は、getCurrentPosition()メソッドの実際の構文です-

getCurrentPosition(callback, ErrorCallback, options)

ここで、3番目の引数は、デバイスの地理的位置を取得するためのオプションのセットを指定する PositionOptions オブジェクトです。

以下は、3番目の引数として指定できるオプションです-

Property Type Description
enableHighAccuracy Boolean Specifies whether the widget wants to receive the most accurate location estimate possible. By default this is false.
timeout Number The timeout property is the number of milliseconds your web application is willing to wait for a position.
maximumAge Number Specifies the expiry time in milliseconds for cached location information.

以下は、上記の方法を使用する方法を示すサンプルコードです-

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler, {maximumAge: 75000});
}

HTML5-Microdata

Microdataは、Webページに追加のセマンティクスを提供する標準化された方法です。

Microdataを使用すると、独自のカスタマイズされた要素を定義して、Webページにカスタムプロパティの埋め込みを開始できます。 高レベルでは、microdataは名前と値のペアのグループで構成されます。

グループは items と呼ばれ、各名前と値のペアは property です。 アイテムとプロパティは通常の要素で表されます。

  • アイテムを作成するには、 itemscope 属性が使用されます。
  • プロパティをアイテムに追加するには、アイテムの子孫の1つで itemprop 属性を使用します。

ここには2つのアイテムがあり、それぞれにプロパティ「名前」があります-

<html>
   <body>

      <div itemscope>
         <p>My name is <span itemprop = "name">Zara</span>.</p>
      </div>

      <div itemscope>
         <p>My name is <span itemprop = "name">Nuha</span>.</p>
      </div>

   </body>
</html>

それは次の結果を生成します-

プロパティは一般に文字列である値を持っていますが、次のデータ型を持つことができます-

グローバル属性

Microdataでは、5つのグローバル属性を導入しています。これらの属性は、使用するすべての要素で使用でき、データに関するマシンのコンテキストを提供します。

Sr.No. Attribute & Description
1

itemscope

これはアイテムを作成するために使用されます。 itemscope属性は、このページにMicrodataが存在することを示すブール属性であり、ここから開始します。

2

itemtype

この属性は、アイテムを定義し、プロパティのコンテキストを提供する有効なURLです。

3

itemid

この属性は、アイテムのグローバル識別子です。

4

itemprop

この属性は、アイテムのプロパティを定義します。

5

itemref

この属性は、アイテムの名前と値のペアを見つけるためにクロールする追加要素のリストを提供します。

プロパティのデータ型

通常、プロパティには、上記の例で説明した文字列の値が含まれますが、URLの値も含まれます。 次の例には、1つのプロパティ「image」があり、その値はURLです-

<div itemscope>
   <img itemprop = "image" src = "tp-logo.gif" alt = "finddevguides">
</div>

プロパティは、日付、時刻、または日付と時刻の値を持つこともできます。 これは、 time 要素とその datetime 属性を使用して実現されます。

<html>
   <body>

      <div itemscope>
         My birthday is:
         <time itemprop = "birthday" datetime = "1971-05-08">
            Aug 5th 1971
         </time>
      </div>

   </body>
</html>

それは次の結果を生成します-

また、プロパティを宣言する要素にitemscope属性を設定することにより、プロパティ自体を名前と値のペアのグループにすることができます。

Microdata APIサポート

ブラウザがHTML5 microdata APIをサポートしている場合、グローバルドキュメントオブジェクトにgetItems()関数があります。 ブラウザがmicrodataをサポートしていない場合、getItems()関数は未定義になります。

function supports_microdata_api() {
   return !!document.getItems;
}

Modernizrはまだmicrodata APIのチェックをサポートしていないため、上記のような関数を使用する必要があります。

HTML5 microdata標準には、HTMLマークアップ(主に検索エンジン用)と一連のDOM関数(主にブラウザー用)の両方が含まれています。

Webページにmicrodataマークアップを含めることができ、microdata属性を理解していない検索エンジンはそれらを無視します。 ただし、DOMを介してmicrodataにアクセスまたは操作する必要がある場合は、ブラウザーがmicrodata DOM APIをサポートしているかどうかを確認する必要があります。

Microdataボキャブラリーの定義

microdataボキャブラリーを定義するには、動作中のWebページを指す名前空間URLが必要です。 たとえば、https://data-vocabulary.org/Personは、次の名前付きプロパティを持つ個人のマイクロデータボキャブラリの名前空間として使用できます-

  • name -単純な文字列としての個人名
  • 写真-その人の写真のURL。
  • URL -その人に属するウェブサイト。

約プロパティを使用して、人のマイクロデータは次のようになります-

<html>
   <body>

      <div itemscope>
         <section itemscope itemtype = "http://data-vocabulary.org/Person">
            <h1 itemprop = "name">Gopal K Varma</h1>

            <p>
               <img itemprop = "photo"
                  src = "http://www.finddevguides.com/green/images/logo.png">
            </p>

            <a itemprop = "url" href = "#">Site</a>
         </section>
      </div>

   </body>
</html>

それは次の結果を生成します-

Googleは、Rich Snippetsプログラムの一部としてmicrodataをサポートしています。 GoogleのWebクローラーがページを解析し、http://datavocabulary.org/Personボキャブラリに適合するmicrodataプロパティを見つけると、それらのプロパティを解析し、残りのページデータと共に保存します。

上記の例は、https://search.google.com/structured-data/testing-tool [Rich Snippets Testing]ツールを使用してhttp://www.finddevguides.com/html5/microdataを使用してテストできます。

Microdataのさらなる開発については、https://www.w3.org/TR/html5/microdatal [HTML5 Microdata]をいつでも参照できます。

HTML5-ドラッグアンドドロップ

ドラッグアンドドロップ(DnD)は強力なユーザーインターフェイスの概念であり、マウスクリックの助けを借りて、アイテムのコピー、並べ替え、削除を簡単に行うことができます。 これにより、ユーザーは要素の上でマウスボタンをクリックして押したまま、別の場所にドラッグし、マウスボタンを放して要素をドロップできます。

従来のHTML4でドラッグアンドドロップ機能を実現するには、開発者は複雑なJavaScriptプログラミングまたはjQueryなどの他のJavaScriptフレームワークを使用する必要があります。

HTML 5は、ブラウザにネイティブDnDサポートを提供するドラッグアンドドロップ(DnD)APIを考案し、コーディングをはるかに容易にしました。

HTML 5 DnDは、Chrome、Firefox 3.5、Safari 4などのすべての主要ブラウザでサポートされています。

ドラッグアンドドロップイベント

ドラッグアンドドロップ操作のさまざまな段階で発生するイベントがいくつかあります。 これらのイベントは以下のとおりです-

Sr.No. Events & Description
1

dragstart

ユーザーがオブジェクトのドラッグを開始すると発生します。

2

dragenter

ドラッグ中にマウスが最初にターゲット要素上に移動したときに発生します。 このイベントのリスナーは、この場所でのドロップが許可されているかどうかを示す必要があります。 リスナーがない場合、またはリスナーが操作を実行しない場合、デフォルトではドロップは許可されません。

3

dragover

このイベントは、ドラッグが発生しているときにマウスが要素上を移動すると発生します。 ほとんどの場合、リスナー中に発生する操作はdragenterイベントと同じです。

4

dragleave

このイベントは、ドラッグ中にマウスが要素を離れると発生します。 リスナーは、ドロップフィードバックに使用される強調表示または挿入マーカーを削除する必要があります。

5

drag

オブジェクトのドラッグ中にマウスが移動するたびに発生します。

6

drop

ドロップイベントは、ドラッグ操作の終了時にドロップが発生した要素で発生します。 リスナーは、ドラッグされているデータを取得し、ドロップ位置に挿入する責任があります。

7

dragend

ユーザーがオブジェクトのドラッグ中にマウスボタンを離したときに発生します。

-ドラッグイベントのみが発生することに注意してください。 _mousemove_などのマウスイベントは、ドラッグ操作中に発生しません。

DataTransferオブジェクト

すべてのドラッグアンドドロップイベントのイベントリスナーメソッドは、 dataTransfer と呼ばれる読み取り専用属性を持つ Event オブジェクトを受け入れます。

*event.dataTransfer* は、次のようにイベントに関連付けられた *DataTransfer* オブジェクトを返します-
function EnterHandler(event) {
   DataTransfer dt = event.dataTransfer;
   .............
}

_DataTransfer_オブジェクトは、ドラッグアンドドロップ操作に関するデータを保持します。 このデータは、以下で説明するように、DataTransferオブジェクトに関連付けられたさまざまな属性に関して取得および設定できます-

Sr.No. DataTransfer attributes and their description
1

dataTransfer.dropEffect [ = value ]

  • 現在選択されている操作の種類を返します。
  • この属性を設定して、選択した操作を変更できます。 *可能な値は、なし、コピー、リンク、および移動です。
2
  • dataTransfer.effectAllowed [ = value ]*
  • 許可される操作の種類を返します。
  • この属性を設定して、許可される操作を変更できます。
  • 可能な値は、 none、copy、copyLink、copyMove、link、linkMove、move、all 、および uninitialized です。
3

dataTransfer.types

dragstartイベントで設定された形式をリストするDOMStringListを返します。 さらに、ファイルがドラッグされている場合、タイプの1つは文字列「Files」になります。

4

dataTransfer.clearData ( [ format ] )

指定された形式のデータを削除します。 引数が省略された場合、すべてのデータを削除します。

5

dataTransfer.setData(format, data)

指定されたデータを追加します。

6

data = dataTransfer.getData(format)

指定されたデータを返します。 そのようなデータがない場合は、空の文字列を返します。

7

dataTransfer.files

ドラッグされているファイルのFileListを返します(存在する場合)。

8

dataTransfer.setDragImage(element, x, y)

指定された要素を使用してドラッグフィードバックを更新し、以前に指定されたフィードバックを置き換えます。

9

dataTransfer.addElement(element)

ドラッグフィードバックのレンダリングに使用される要素のリストに、指定された要素を追加します。

ドラッグアンドドロッププロセス

以下は、ドラッグアンドドロップ操作を実装するために実行する手順です-

手順1-オブジェクトをドラッグ可能にする

ここに取るべき手順があります-

  • 要素をドラッグする場合は、その要素の draggable 属性を true に設定する必要があります。
  • ドラッグされるデータを保存する dragstart のイベントリスナーを設定します。
  • イベントリスナー dragstart は、許可される効果(コピー、移動、リンク、またはいくつかの組み合わせ)を設定します。

以下は、オブジェクトをドラッグ可能にする例です-

<!DOCTYPE HTML>

<html>
   <head>

      <style type = "text/css">

         #boxA, #boxB {
            float:left;padding:10px;margin:10px; -moz-user-select:none;
         }
         #boxA { background-color: #6633FF; width:75px; height:75px;  }
         #boxB { background-color: #FF6699; width:150px; height:150px; }
      </style>

      <script type = "text/javascript">

         function dragStart(ev) {
            ev.dataTransfer.effectAllowed = 'move';
            ev.dataTransfer.setData("Text", ev.target.getAttribute('id'));
            ev.dataTransfer.setDragImage(ev.target,0,0);

            return true;
         }
      </script>

   </head>
   <body>

      <center>
         <h2>Drag and drop HTML5 demo</h2>
         <div>Try to drag the purple box around.</div>

         <div id = "boxA" draggable = "true"
            ondragstart = "return dragStart(ev)">
            <p>Drag Me</p>
         </div>

         <div id = "boxB">Dustbin</div>
      </center>

   </body>
</html>

これは、次の結果を生成します-

ステップ2-オブジェクトのドロップ

ドロップを受け入れるには、ドロップターゲットが少なくとも3つのイベントをリッスンする必要があります。

  • dragenter イベント。ドロップターゲットがドロップを受け入れるかどうかを決定するために使用されます。 ドロップを受け入れる場合は、このイベントをキャンセルする必要があります。
  • dragover イベント。ユーザーに表示するフィードバックを決定するために使用されます。 イベントがキャンセルされると、dropEffect属性の値に基づいてフィードバック(通常はカーソル)が更新されます。
  • 最後に、実際のドロップを実行できる drop イベント。

以下は、オブジェクトを別のオブジェクトにドロップする例です-

<html>
   <head>
      <style type="text/css">
         #boxA, #boxB {
            float:left;padding:10px;margin:10px;-moz-user-select:none;
         }
         #boxA { background-color: #6633FF; width:75px; height:75px;  }
         #boxB { background-color: #FF6699; width:150px; height:150px; }
      </style>
      <script type="text/javascript">
         function dragStart(ev) {
            ev.dataTransfer.effectAllowed='move';
            ev.dataTransfer.setData("Text", ev.target.getAttribute('id'));
            ev.dataTransfer.setDragImage(ev.target,0,0);
            return true;
         }
         function dragEnter(ev) {
            event.preventDefault();
            return true;
         }
         function dragOver(ev) {
            return false;
         }
         function dragDrop(ev) {
            var src = ev.dataTransfer.getData("Text");
            ev.target.appendChild(document.getElementById(src));
            ev.stopPropagation();
            return false;
         }
      </script>
   </head>
   <body>
      <center>
         <h2>Drag and drop HTML5 demo</h2>
         <div>Try to move the purple box into the pink box.</div>
         <div id="boxA" draggable="true" ondragstart="return dragStart(event)">
            <p>Drag Me</p>
         </div>
         <div id="boxB" ondragenter="return dragEnter(event)" ondrop="return dragDrop(event)" ondragover="return dragOver(event)">Dustbin</div>
      </center>
   </body>
</html>

これは、次の結果を生成します-

HTML5-Web Workers

JavaScriptはシングルスレッド環境で実行するように設計されています。つまり、複数のスクリプトを同時に実行することはできません。 UIイベントを処理し、大量のAPIデータを照会および処理し、DOMを操作する必要がある状況を考えてください。

JavaScriptは、CPU使用率が高い状況でブラウザーをハングさせます。 JavaScriptが大きなループを通過する簡単な例を見てみましょう-

<!DOCTYPE HTML>

<html>
   <head>
      <title>Big for loop</title>

      <script>
         function bigLoop() {

            for (var i = 0; i <= 10000; i += 1) {
               var j = i;
            }
            alert("Completed " + j + "iterations" );
         }

         function sayHello(){
            alert("Hello sir...." );
         }
      </script>

   </head>

   <body>
      <input type = "button" onclick = "bigLoop();" value = "Big Loop"/>
      <input type = "button" onclick = "sayHello();" value = "Say Hello"/>
   </body>
</html>

それは次の結果を生成します-

Big Loopボタンをクリックすると、Firefoxで次の結果が表示されます-

ビッグループ

Web Workersとは何ですか?

上記で説明した状況は、ユーザーインターフェイスを中断せずに、通常は別々のスレッドで実行される、計算負荷の高いタスクをすべて実行する Web Workers を使用して処理できます。

Web Workersは、クリックやその他のユーザーインタラクションに応答するスクリプトによって中断されない長時間実行スクリプトを許可し、ページの応答性を維持することなく、長いタスクを実行できます。

Web Workersはバックグラウンドスクリプトであり、比較的重いため、大量に使用することを意図していません。 たとえば、4メガピクセルの画像の各ピクセルに対して1つのワーカーを起動することは不適切です。

スクリプトがWebワーカー内で実行されている場合、Webページのウィンドウオブジェクト(window.document)にアクセスできません。つまり、WebワーカーはWebページおよびDOM APIに直接アクセスできません。 Web WorkersはブラウザーUIをブロックできませんが、それでもCPUサイクルを消費し、システムの応答性を低下させる可能性があります。

Web Workersの仕組み

Web Workersは、ワーカーが実行するコードを含むJavaScriptファイルのURLで初期化されます。 このコードはイベントリスナーを設定し、メインページからイベントリスナーを生成したスクリプトと通信します。 以下は、単純な構文です-

var worker = new Worker('bigLoop.js');

指定されたjavascriptファイルが存在する場合、ブラウザは非同期にダウンロードされる新しいワーカースレッドを生成します。 ワーカーへのパスが404エラーを返す場合、ワーカーはサイレントに失敗します。

アプリケーションに複数のサポートJavaScriptファイルがある場合は、次のようにコンマで区切られた引数としてファイル名を取る* importScripts()*メソッドをインポートできます-

importScripts("helper.js", "anotherHelper.js");

Web Workerが生成されると、* postMessage()*メソッドを使用してWeb Workerとその親ページ間の通信が行われます。 ブラウザ/バージョンに応じて、postMessage()は単一の引数として文字列またはJSONオブジェクトを受け入れることができます。

Web Workerから渡されたメッセージは、メインページの onmessage イベントを使用してアクセスされます。 次に、Web Workerを使用してbigLoopの例を作成しましょう。 以下は、ループを実行して変数の最終値を返すWebワーカーを生成するメインページ(hello)です* j *-

<!DOCTYPE HTML>

<html>
   <head>
      <title>Big for loop</title>

      <script>
         var worker = new Worker('bigLoop.js');

         worker.onmessage = function (event) {
            alert("Completed " + event.data + "iterations" );
         };

         function sayHello() {
            alert("Hello sir...." );
         }
      </script>
   </head>

   <body>
      <input type = "button" onclick = "sayHello();" value = "Say Hello"/>
   </body>
</html>

以下は、bigLoop.jsファイルの内容です。 これは、* postMessage()* APIを使用して通信をメインページに戻します-

for (var i = 0; i <= 1000000000; i += 1) {
   var j = i;
}
postMessage(j);

これは、次の結果を生成します-

Web Workersを停止する

Web Workersはそれ自体では停止しませんが、それらを開始したページは* terminate()*メソッドを呼び出すことで停止できます。

worker.terminate();

終了したWeb Workerは、メッセージに応答したり、追加の計算を実行したりしなくなります。 ワーカーを再起動することはできません。代わりに、同じURLを使用して新しいワーカーを作成できます。

エラー処理

以下は、エラーをコンソールに記録するWeb Worker JavaScriptファイルのエラー処理関数の例を示しています。 エラー処理コードでは、上記の例は次のようになります-

<!DOCTYPE HTML>

<html>
   <head>
      <title>Big for loop</title>

      <script>
         var worker = new Worker('bigLoop.js');

         worker.onmessage = function (event) {
            alert("Completed " + event.data + "iterations" );
         };

         worker.onerror = function (event) {
            console.log(event.message, event);
         };

         function sayHello() {
            alert("Hello sir...." );
         }
      </script>
   </head>

   <body>
      <input type = "button" onclick = "sayHello();" value = "Say Hello"/>
   </body>
</html>

ブラウザサポートの確認

以下は、ブラウザで利用可能なWeb Worker機能のサポートを検出するための構文です-

<!DOCTYPE HTML>

<html>
   <head>
      <title>Big for loop</title>
      <script src = "/js/modernizr-1.5.min.js"></script>

      <script>
      function myFunction() {

         if (Modernizr.webworkers) {
            alert("Congratulation!! you have web workers support." );
         } else {
            alert("Sorry!! you do not have web workers support." );
         }
      }
      </script>
   </head>

   <body>
      <button onclick = "myFunction()">Click me</button>
   </body>
</html>

これは、次の結果を生成します-

HTML5-IndexedDB

indexeddbは、ユーザーのブラウザ内にデータを保存するための新しいHTML5コンセプトです。 indexeddbはローカルストレージよりも強力で、大量のデータを保存する必要があるアプリケーションに役立ちます。 これらのアプリケーションは、より効率的に実行し、より高速にロードできます。

indexeddbを使用する理由

W3Cは、Web SQLデータベースは非推奨のローカルストレージ仕様であるため、Web開発者はこの技術を使用すべきではないと発表しました。 indexeddbは、Web SQLデータベースの代替手段であり、古いテクノロジーよりも効果的です。

特徴

  • キーペア値を保存します
  • リレーショナルデータベースではありません
  • IndexedDB APIはほとんど非同期です
  • 構造化照会言語ではありません
  • 同じドメインからのデータへのアクセスをサポートしています

IndexedDB

indexeddbに入る前に、以下に示すように実装のプレフィックスを追加する必要があります

window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB ||
window.msIndexedDB;

window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction ||
window.msIDBTransaction;
window.IDBKeyRange = window.IDBKeyRange ||
window.webkitIDBKeyRange || window.msIDBKeyRange

if (!window.indexedDB) {
   window.alert("Your browser doesn't support a stable version of IndexedDB.")
}

IndexedDBデータベースを開く

データベースを作成する前に、データベースのいくつかのデータを準備する必要があります。会社の従業員の詳細から始めましょう。

const employeeData = [
   { id: "01", name: "Gopal K Varma", age: 35, email: "[email protected]" },
   { id: "02", name: "Prasad", age: 24, email: "[email protected]" }
];

データを追加する

以下に示すように、データに手動でいくつかのデータを追加します-

function add() {
   var request = db.transaction(["employee"], "readwrite")
   .objectStore("employee")
   .add({ id: "01", name: "prasad", age: 24, email: "[email protected]" });

   request.onsuccess = function(event) {
      alert("Prasad has been added to your database.");
   };

   request.onerror = function(event) {
      alert("Unable to add data\r\nPrasad is already exist in your database! ");
   }
}

データの取得

get()を使用してデータベースからデータを取得できます

function read() {
   var transaction = db.transaction(["employee"]);
   var objectStore = transaction.objectStore("employee");
   var request = objectStore.get("00-03");

   request.onerror = function(event) {
      alert("Unable to retrieve daa from database!");
   };

   request.onsuccess = function(event) {

      if(request.result) {
         alert("Name: " + request.result.name + ", Age:
            " + request.result.age + ", Email: " + request.result.email);
      } else {
         alert("Kenny couldn't be found in your database!");
      }
   };
}

get()を使用して、カーソルにデータを保存する代わりにオブジェクトにデータを保存し、カーソルからデータを取得できます。

function readAll() {
   var objectStore = db.transaction("employee").objectStore("employee");

   objectStore.openCursor().onsuccess = function(event) {
      var cursor = event.target.result;

      if (cursor) {
         alert("Name for id " + cursor.key + " is " + cursor.value.name + ",
            Age: " + cursor.value.age + ", Email: " + cursor.value.email);
         cursor.continue();
      } else {
         alert("No more entries!");
      }
   };
}

データを削除する

remove()を使用してIndexedDBからデータを削除できます。コードは次のようになります。

function remove() {
   var request = db.transaction(["employee"], "readwrite")
   .objectStore("employee")
   .delete("02");

   request.onsuccess = function(event) {
      alert("prasad entry has been removed from your database.");
   };
}

HTMLコード

すべてのデータを表示するには、コードの下に示すようにonClickイベントを使用する必要があります-

<!DOCTYPE html>

<html>
   <head>
      <meta http-equiv = "Content-Type" content = "text/html; charset = utf-8"/>
      <title>IndexedDb Demo | onlyWebPro.com</title>
   </head>

   <body>
      <button onclick = "read()">Read </button>
      <button onclick = "readAll()"></button>
      <button onclick = "add()"></button>
      <button onclick = "remove()">Delete </button>
   </body>
</html>

最終的なコードは次のようになります-

<!DOCTYPE html>

<html>
   <head>
      <meta http-equiv = "Content-Type" content = "text/html; charset = utf-8"/>
      <script type = "text/javascript">

        //prefixes of implementation that we want to test
         window.indexedDB = window.indexedDB || window.mozIndexedDB ||
         window.webkitIndexedDB || window.msIndexedDB;

        //prefixes of window.IDB objects
         window.IDBTransaction = window.IDBTransaction ||
         window.webkitIDBTransaction || window.msIDBTransaction;
         window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange ||
         window.msIDBKeyRange

         if (!window.indexedDB) {
            window.alert("Your browser doesn't support a stable version of IndexedDB.")
         }

         const employeeData = [
            { id: "00-01", name: "gopal", age: 35, email: "[email protected]" },
            { id: "00-02", name: "prasad", age: 32, email: "[email protected]" }
         ];
         var db;
         var request = window.indexedDB.open("newDatabase", 1);

         request.onerror = function(event) {
            console.log("error: ");
         };

         request.onsuccess = function(event) {
            db = request.result;
            console.log("success: "+ db);
         };

         request.onupgradeneeded = function(event) {
            var db = event.target.result;
            var objectStore = db.createObjectStore("employee", {keyPath: "id"});

            for (var i in employeeData) {
               objectStore.add(employeeData[i]);
            }
         }

         function read() {
            var transaction = db.transaction(["employee"]);
            var objectStore = transaction.objectStore("employee");
            var request = objectStore.get("00-03");

            request.onerror = function(event) {
               alert("Unable to retrieve daa from database!");
            };

            request.onsuccess = function(event) {
              //Do something with the request.result!
               if(request.result) {
                  alert("Name: " + request.result.name + ",
                     Age: " + request.result.age + ", Email: " + request.result.email);
               } else {
                  alert("Kenny couldn't be found in your database!");
               }
            };
         }

         function readAll() {
            var objectStore = db.transaction("employee").objectStore("employee");

            objectStore.openCursor().onsuccess = function(event) {
               var cursor = event.target.result;

               if (cursor) {
                  alert("Name for id " + cursor.key + " is " + cursor.value.name + ",
                     Age: " + cursor.value.age + ", Email: " + cursor.value.email);
                  cursor.continue();
               } else {
                  alert("No more entries!");
               }
            };
         }

         function add() {
            var request = db.transaction(["employee"], "readwrite")
            .objectStore("employee")
            .add({ id: "00-03", name: "Kenny", age: 19, email: "[email protected]" });

            request.onsuccess = function(event) {
               alert("Kenny has been added to your database.");
            };

            request.onerror = function(event) {
               alert("Unable to add data\r\nKenny is aready exist in your database! ");
            }
         }

         function remove() {
            var request = db.transaction(["employee"], "readwrite")
            .objectStore("employee")
            .delete("00-03");

            request.onsuccess = function(event) {
               alert("Kenny's entry has been removed from your database.");
            };
         }
      </script>

   </head>
   <body>
      <button onclick = "read()">Read </button>
      <button onclick = "readAll()">Read all </button>
      <button onclick = "add()">Add data </button>
      <button onclick = "remove()">Delete data </button>
   </body>
</html>

それは次の出力を生成します-

HTML5-Webメッセージング

Webメッセージングは​​、ドキュメントがブラウジングコンテキストを分離し、Domなしでデータを共有する方法です。 異なるドメイン、プロトコル、またはポートでのクロスドメイン通信の問題を無効にします

たとえば、iframeまたはvoice-versaに配置されている広告コンテナにページからデータを送信する場合、このシナリオでは、ブラウザーはセキュリティ例外をスローします。 Webメッセージングを使用すると、データをメッセージイベントとして渡すことができます。

メッセージイベント

メッセージイベントは、ドキュメント間メッセージング、チャネルメッセージング、サーバー送信イベント、およびWeb Sockets.itを起動します。

属性

Sr.No. Attributes & Description
1

data

文字列データが含まれています

2

origin

ドメイン名とポートが含まれています

3

lastEventId

現在のメッセージイベントの一意の識別子が含まれます。

4

source

元のドキュメントのウィンドウへの参照を含む

5

ports

任意のメッセージポートによって送信されるデータが含まれます

クロスドキュメントメッセージを送信する

クロスドキュメントメッセージを送信する前に、新しいiframeまたは新しいウィンドウを作成して、新しいWebブラウジングコンテキストを作成する必要があります。 postMessage()を使用してデータを送信でき、2つの引数があります。 彼らは-

  • message -送信するメッセージ
  • targetOrigin -オリジン名

iframeからボタンにメッセージを送信する

var iframe = document.querySelector('iframe');
var button = document.querySelector('button');

var clickHandler = function() {
   iframe.contentWindow.postMessage('The message to send.',
      'https://www.finddevguides.com);
}
button.addEventListener('click',clickHandler,false);

受信ドキュメントでクロスドキュメントメッセージを受信する

var messageEventHandler = function(event){

  //check that the origin is one we want.
   if(event.origin == 'https://www.finddevguides.com') {
      alert(event.data);
   }
}
window.addEventListener('message', messageEventHandler,false);

チャンネルメッセージング

ブラウジングコンテキスト間の双方向通信は、チャネルメッセージングと呼ばれます。 複数のオリジン間の通信に役立ちます。

MessageChannelおよびMessagePortオブジェクト

messageChannelの作成中に、データを送信するための2つのポートを内部で作成し、別のブラウジングコンテキストに転送します。

  • * postMessage()*-メッセージスローチャネルを投稿する
  • * start()*-データを送信します
  • * close()*-ポートを閉じます

このシナリオでは、1つのiframeから別のiframeにデータを送信しています。 ここでは、関数内のデータを呼び出し、データをDOMに渡します。

var loadHandler = function() {
   var mc, portMessageHandler;
   mc = new MessageChannel();
   window.parent.postMessage('documentAHasLoaded','http://foo.example',[mc.port2]);

   portMessageHandler = function(portMsgEvent) {
      alert( portMsgEvent.data );
   }

   mc.port1.addEventListener('message', portMessageHandler, false);
   mc.port1.start();
}
window.addEventListener('DOMContentLoaded', loadHandler, false);

上記のコードでは、ポート2からデータを取得していますが、データは2番目のiframeに渡されます

var loadHandler = function() {
   var iframes, messageHandler;
   iframes = window.frames;

   messageHandler = function(messageEvent) {

      if( messageEvent.ports.length > 0 ) {

        //transfer the port to iframe[1]
         iframes[1].postMessage('portopen','http://foo.example',messageEvent.ports);
      }
   }
   window.addEventListener('message',messageHandler,false);
}
window.addEventListener('DOMContentLoaded',loadHandler,false);

これで、2番目のドキュメントがportMsgHandler関数を使用してデータを処理します。

var loadHandler() {

  //Define our message handler function
   var messageHandler = function(messageEvent) {

     //Our form submission handler

      var formHandler = function() {
         var msg = 'add <[email protected]> to game circle.';
         messageEvent.ports[0].postMessage(msg);
      }
      document.forms[0].addEventListener('submit',formHandler,false);
   }
   window.addEventListener('message',messageHandler,false);
}
window.addEventListener('DOMContentLoaded',loadHandler,false);

HTML5-CORS

  • クロスオリジンリソース共有(CORS)*は、Webブラウザの別のドメインからの制限されたリソースを許可するメカニズムです。

たとえば、html5デモセクションで_HTML5- video player_をクリックするとします。 カメラの許可を求めます。 ユーザーが許可を許可すると、カメラのみが開かれるか、Webアプリケーションのカメラが開かなくなります。

CORSリクエストを行う

ここでは、Chrome、Firefox、Opera、およびSafariはすべてXMLHttprequest2オブジェクトを使用し、Internet Explorerは同様のXDomainRequestオブジェクトであるオブジェクトを使用します。

function createCORSRequest(method, url) {
   var xhr = new XMLHttpRequest();

   if ("withCredentials" in xhr) {

     //Check if the XMLHttpRequest object has a "withCredentials" property.
     //"withCredentials" only exists on XMLHTTPRequest2 objects.
      xhr.open(method, url, true);
   } else if (typeof XDomainRequest != "undefined") {

     //Otherwise, check if XDomainRequest.
     //XDomainRequest only exists in IE, and is IE's way of making CORS requests.
      xhr = new XDomainRequest();
      xhr.open(method, url);
   } else {

     //Otherwise, CORS is not supported by the browser.
      xhr = null;
   }
   return xhr;
}

var xhr = createCORSRequest('GET', url);

if (!xhr) {
   throw new Error('CORS not supported');
}

CORSのイベントハンドル

Sr.No. Event Handler & Description
1

onloadstart

リクエストを開始します

2

onprogress

データをロードし、データを送信します

3

onabort

リクエストを中止します

4

onerror

リクエストが失敗しました

5

onload

ロードを正常に要求する

6

ontimeout

リクエストが完了する前にタイムアウトが発生しました

7

onloadend

リクエストが成功または失敗した場合

onloadまたはonerrorイベントの例

xhr.onload = function() {
   var responseText = xhr.responseText;

  //process the response.
   console.log(responseText);
};

xhr.onerror = function() {
   console.log('There was an error!');
};

ハンドラーを使用したCORSの例

以下の例は、makeCorsRequest()とonloadハンドラの例を示しています

//Create the XHR object.
function createCORSRequest(method, url) {
   var xhr = new XMLHttpRequest();

   if ("withCredentials" in xhr) {

     //XHR for Chrome/Firefox/Opera/Safari.
      xhr.open(method, url, true);
   } else if (typeof XDomainRequest != "undefined") {

     //XDomainRequest for IE.
      xhr = new XDomainRequest();
      xhr.open(method, url);
   } else {

     //CORS not supported.
      xhr = null;
   }
   return xhr;
}

//Helper method to parse the title tag from the response.
function getTitle(text) {
   return text.match('<title>(.*)?</title>')[1];
}

//Make the actual CORS request.
function makeCorsRequest() {

  //All HTML5 Rocks properties support CORS.
   var url = 'http://www.finddevguides.com';

   var xhr = createCORSRequest('GET', url);

   if (!xhr) {
      alert('CORS not supported');
      return;
   }

  //Response handlers.
   xhr.onload = function() {
      var text = xhr.responseText;
      var title = getTitle(text);
      alert('Response from CORS request to ' + url + ': ' + title);
   };

   xhr.onerror = function() {
      alert('Woops, there was an error making the request.');
   };
   xhr.send();
}

HTML5-Web RTC

World Wide Web Consortium(W3C)によって導入されたWeb RTC。 これは、音声通話、ビデオチャット、およびP2Pファイル共有のためのブラウザー間アプリケーションをサポートします。

試してみたいですか? Chrome、Opera、Firefoxで利用可能なweb RTC。 始めるのに適した場所は、http://apprtc.appspot.com/[こちら]にあるシンプルなビデオチャットアプリケーションです。 Web RTCは以下に示すように3つのAPIを実装しています-

  • MediaStream -ユーザーのカメラとマイクへのアクセスを取得します。
  • RTCPeerConnection -オーディオまたはビデオ通話機能へのアクセスを取得します。
  • RTCDataChannel -ピアツーピア通信へのアクセスを取得します。

MediaStream

MediaStreamは、メディアの同期ストリームを表します。たとえば、HTML5デモセクションでHTML5ビデオプレーヤーをクリックするか、http://simpl.info/getusermedia/[こちら]をクリックします。

上記の例には、stream.getAudioTracks()およびstream.VideoTracks()が含まれています。 オーディオトラックがない場合、空の配列を返し、ビデオストリームをチェックします。Webカメラが接続されている場合、stream.getVideoTracks()は、Webカメラからのストリームを表す1つのMediaStreamTrackの配列を返します。 簡単な例はチャットアプリケーションです。チャットアプリケーションは、Webカメラ、リアカメラ、マイクからストリームを取得します。

MediaStreamのサンプルコード

function gotStream(stream) {
   window.AudioContext = window.AudioContext || window.webkitAudioContext;
   var audioContext = new AudioContext();

  //Create an AudioNode from the stream
   var mediaStreamSource = audioContext.createMediaStreamSource(stream);

  //Connect it to destination to hear yourself
  //or any other node for processing!
   mediaStreamSource.connect(audioContext.destination);
}
navigator.getUserMedia({audio:true}, gotStream);

画面キャプチャ

また、mediaStreamSourceを備えたChromeブラウザーでも可能であり、HTTPSが必要です。 この機能は、オペラではまだ利用できません。 サンプルデモはhttps://html5-demos.appspot.com/static/getusermedia/screensharel [こちら]から入手できます。

セッション制御、ネットワークおよびメディア情報

Web RTCでは、ブラウザー間でピアツーピア通信が必要でした。 このメカニズムには、シグナリング、ネットワーク情報、セッション制御、およびメディア情報が必要でした。 Web開発者は、SIPやXMPPなどのブラウザー間で通信するためのさまざまなメカニズム、または任意の双方向通信を選択できます。 XHRのサンプル例はhttps://apprtc.appspot.com/[here]です。

createSignalingChannel()のサンプルコード

var signalingChannel = createSignalingChannel();
var pc;
var configuration = ...;

//run start(true) to initiate a call
function start(isCaller) {
   pc = new RTCPeerConnection(configuration);

  //send any ice candidates to the other peer
   pc.onicecandidate = function (evt) {
      signalingChannel.send(JSON.stringify({ "candidate": evt.candidate }));
   };

  //once remote stream arrives, show it in the remote video element
   pc.onaddstream = function (evt) {
      remoteView.src = URL.createObjectURL(evt.stream);
   };

  //get the local stream, show it in the local video element and send it
   navigator.getUserMedia({ "audio": true, "video": true }, function (stream) {
      selfView.src = URL.createObjectURL(stream);
      pc.addStream(stream);

      if (isCaller)
         pc.createOffer(gotDescription);

      else
         pc.createAnswer(pc.remoteDescription, gotDescription);

         function gotDescription(desc) {
            pc.setLocalDescription(desc);
            signalingChannel.send(JSON.stringify({ "sdp": desc }));
         }
      });
   }

   signalingChannel.onmessage = function (evt) {
      if (!pc)
         start(false);
         var signal = JSON.parse(evt.data);

      if (signal.sdp)
         pc.setRemoteDescription(new RTCSessionDescription(signal.sdp));

      else
         pc.addIceCandidate(new RTCIceCandidate(signal.candidate));
};

HTML5-Webストレージ

HTML5では、HTTPセッションCookieと同様に、クライアント側に構造化データを保存し、次の欠点を克服するための2つのメカニズムを導入しています。

  • CookieはすべてのHTTP要求に含まれているため、同じデータを送信することでWebアプリケーションの速度が低下します。
  • CookieはすべてのHTTP要求に含まれているため、暗号化されていないデータをインターネット経由で送信します。
  • Cookieは約4 KBのデータに制限されています。 必要なデータを保存するには不十分です。

2つのストレージは、*セッションストレージ*および*ローカルストレージ*であり、異なる状況を処理するために使用されます。

ほとんどすべてのブラウザーの最新バージョンは、Internet Explorerを含むHTML5ストレージをサポートしています。

セッションストレージ

_Session Storage_は、ユーザーが単一のトランザクションを実行するシナリオ用に設計されていますが、異なるウィンドウで複数のトランザクションを同時に実行できます。

たとえば、ユーザーが同じサイトを使用して2つの異なるウィンドウで飛行機のチケットを購入する場合。 サイトがCookieを使用してユーザーが購入しているチケットを追跡している場合、ユーザーが両方のウィンドウでページからページにクリックすると、現在購入中のチケットが一方のウィンドウから他方に「漏れ」、ユーザーが潜在的に気づかずに同じフライトのチケットを2枚購入する。

HTML5は、セッションストレージにデータを追加するためにサイトで使用される_sessionStorage_属性を導入し、そのウィンドウで開かれた同じサイトの任意のページ、つまり session およびウィンドウを閉じるとすぐにアクセスできるようになります、セッションは失われます。

以下は、セッション変数を設定し、その変数にアクセスするコードです-

<!DOCTYPE HTML>

<html>
   <body>
      <script type = "text/javascript">

         if( sessionStorage.hits ) {
            sessionStorage.hits = Number(sessionStorage.hits) +1;
         } else {
            sessionStorage.hits = 1;
         }
         document.write("Total Hits :" + sessionStorage.hits );
      </script>

      <p>Refresh the page to increase number of hits.</p>
      <p>Close the window and open it again and check the result.</p>

   </body>
</html>

これは、次の結果を生成します-

ローカルストレージ

_Local Storage_は、複数のウィンドウにまたがるストレージ用に設計されており、現在のセッションを超えて持続します。 特に、Webアプリケーションでは、パフォーマンス上の理由から、ユーザーが作成したドキュメント全体やユーザーのメールボックスなど、メガバイト単位のユーザーデータをクライアント側に保存したい場合があります。

この場合も、Cookieはすべてのリクエストで送信されるため、このケースをうまく処理しません。

HTML5は_localStorage_属性を導入します。これは、時間制限なしでページのローカルストレージエリアにアクセスするために使用され、このローカルストレージは、そのページを使用するときにいつでも使用できます。

以下は、ローカルストレージ変数を設定し、このページにアクセスするたびに、次回もウィンドウを開いたときにその変数にアクセスするコードです-

<!DOCTYPE HTML>

<html>
   <body>
      <script type = "text/javascript">

         if( localStorage.hits ) {
            localStorage.hits = Number(localStorage.hits) +1;
         } else {
            localStorage.hits = 1;
         }
         document.write("Total Hits :" + localStorage.hits );
      </script>

      <p>Refresh the page to increase number of hits.</p>
      <p>Close the window and open it again and check the result.</p>

   </body>
</html>

これは、次の結果を生成します-

Webストレージを削除する

ローカルマシンに機密データを保存することは危険であり、セキュリティホールを残す可能性があります。

_Session Storage Data_は、セッションが終了した直後にブラウザーによって削除されます。

ローカルストレージ設定をクリアするには、* localStorage.remove( 'key')を呼び出す必要があります。ここで、「キー」は、削除する値のキーです。 すべての設定をクリアする場合は、 localStorage.clear()*メソッドを呼び出す必要があります。

以下は、完全なローカルストレージをクリアするコードです-

<!DOCTYPE HTML>

<html>
   <body>

      <script type = "text/javascript">
         localStorage.clear();

        //Reset number of hits.
         if( localStorage.hits ) {
            localStorage.hits = Number(localStorage.hits) +1;
         } else {
            localStorage.hits = 1;
         }
         document.write("Total Hits :" + localStorage.hits );

      </script>

      <p>Refreshing the page would not to increase hit counter.</p>
      <p>Close the window and open it again and check the result.</p>

   </body>
</html>

これにより、次の結果が生成されます–

HTML5-サーバー送信イベント

サーバー送信イベント

サーバーから更新を取得し、Webブラウザーで結果を表示します。サーバーから更新を取得する前に、ブラウザーはWebサーバーで利用可能な更新があるかどうかを確認する必要があります。

HTML5コードは次のようになります

<html>
   <body>

      <h1> Server updates</h1>
      <div id="result"></div>

      <script>
         if(typeof(EventSource) !== "undefined") {
            var source = new EventSource("demo_sse.php");

            source.onmessage = function(event) {
               document.getElementById("result").innerHTML += event.data + "<br>";
            };
         }

         else {
            document.getElementById("result").innerHTML = "Sorry, your browser does not support ";
         }
      </script>
   </body>
</html>

demo_sse.php

サーバーコードはPHPである必要があり、次のようになります

<?php
   header('Content-Type: text/event-stream');
   header('Cache-Control: no-cache');

   $time = date('r');
   echo "data: The server time is: {$time}\n\n";
   flush();
?>

サーバー送信イベントのデモを入手できますlink:/html5/src/sse/sse.zip [こちら]

HTML5-Web Canvasデモ

キャンバス

HTML5要素<canvas>を使用すると、JavaScriptを使用してグラフィックスを簡単かつ強力に描画できます。 グラフの描画、写真の合成、または単純な(それほど単純ではない)アニメーションの作成に使用できます。

以下の例は、HTML5 CanvasとJavaScriptに基づいています。

link:/html5/src/canvas/sign.zip [こちら]からデモをダウンロードできます。

HTML5 Canvasデモゲーム

以下の例は、HTML5 CanvasとJavaScriptに基づいています。

link:/html5/src/canvas/game.zip [こちら]からデモをダウンロードできます。

HTML5-オーディオプレーヤー

*ビジュアライザー*を備えたHTML5ローカルオーディオプレーヤー

HTML5機能には、Flashを必要としないネイティブオーディオおよびビデオのサポートが含まれます。以下のコードはHTML、CSS、およびJava Scriptに基づいて機能します。ローカルのMp3ファイルをコンテナにドラッグアンドドロップできます。

ソースコードはlink:/html5/src/audio/audio.zipから入手できます[こちら]

プレイリスト付きのローカルオーディオプレーヤー

ソースコードはlink:/html5/src/player/player.zipから入手できます[こちら]

HTML5-ビデオプレーヤー

HTML5ローカルビデオプレーヤー

HTML5機能には、Flashを必要としないネイティブビデオサポートが含まれます。 以下のプレーヤーは、HTML、CSS、およびJavaスクリプトに基づいて動作します。 ローカルビデオファイルをコンテナにドラッグアンドドロップできます。

ソースコードlink:/html5/src/video/video.zipを入手できます[こちら]

HTML5 SWFビデオプレーヤー

以下のプレーヤーは、HTML、CSS、およびswfベースで動作します

ソースコードlink:/html5/src/swf_video/swf_video.zipを入手できます[こちら]

画面キャプチャ

以下のレコーダーは、html5、CSS、およびjavaスクリプトに基づいて動作します。 このページに入る前に、ユーザーはカメラのアクセシビリティを許可して画像を取得する必要があります

ソースコードのリンクを取得できます:/html5/src/videol [ここ] Html5-geo-demo Html5-drag-demo

HTML5-Web Workers

JavaScriptはシングルスレッド環境で実行するように設計されています。つまり、複数のスクリプトを同時に実行することはできません。 UIイベントを処理し、大量のAPIデータを照会および処理し、DOMを操作する必要がある状況を考えてください。

JavaScriptは、CPU使用率が高い状況でブラウザーをハングさせます。 JavaScriptが大きなループを通過する簡単な例を見てみましょう-

<!DOCTYPE HTML>

<html>
   <head>
      <title>Big for loop</title>

      <script>
         function bigLoop() {

            for (var i = 0; i <= 10000; i += 1) {
               var j = i;
            }
            alert("Completed " + j + "iterations" );
         }

         function sayHello(){
            alert("Hello sir...." );
         }
      </script>

   </head>

   <body>
      <input type = "button" onclick = "bigLoop();" value = "Big Loop"/>
      <input type = "button" onclick = "sayHello();" value = "Say Hello"/>
   </body>
</html>

それは次の結果を生成します-

Big Loopボタンをクリックすると、Firefoxで次の結果が表示されます-

ビッグループ

Web Workersとは何ですか?

上記で説明した状況は、ユーザーインターフェイスを中断せずに、通常は別々のスレッドで実行される、計算負荷の高いタスクをすべて実行する Web Workers を使用して処理できます。

Web Workersは、クリックやその他のユーザーインタラクションに応答するスクリプトによって中断されない長時間実行スクリプトを許可し、ページの応答性を維持することなく、長いタスクを実行できます。

Web Workersはバックグラウンドスクリプトであり、比較的重いため、大量に使用することを意図していません。 たとえば、4メガピクセルの画像の各ピクセルに対して1つのワーカーを起動することは不適切です。

スクリプトがWebワーカー内で実行されている場合、Webページのウィンドウオブジェクト(window.document)にアクセスできません。つまり、WebワーカーはWebページおよびDOM APIに直接アクセスできません。 Web WorkersはブラウザーUIをブロックできませんが、それでもCPUサイクルを消費し、システムの応答性を低下させる可能性があります。

Web Workersの仕組み

Web Workersは、ワーカーが実行するコードを含むJavaScriptファイルのURLで初期化されます。 このコードはイベントリスナーを設定し、メインページからイベントリスナーを生成したスクリプトと通信します。 以下は、単純な構文です-

var worker = new Worker('bigLoop.js');

指定されたjavascriptファイルが存在する場合、ブラウザは非同期にダウンロードされる新しいワーカースレッドを生成します。 ワーカーへのパスが404エラーを返す場合、ワーカーはサイレントに失敗します。

アプリケーションに複数のサポートJavaScriptファイルがある場合は、次のようにコンマで区切られた引数としてファイル名を取る* importScripts()*メソッドをインポートできます-

importScripts("helper.js", "anotherHelper.js");

Web Workerが生成されると、* postMessage()*メソッドを使用してWeb Workerとその親ページ間の通信が行われます。 ブラウザ/バージョンに応じて、postMessage()は単一の引数として文字列またはJSONオブジェクトを受け入れることができます。

Web Workerから渡されたメッセージは、メインページの onmessage イベントを使用してアクセスされます。 次に、Web Workerを使用してbigLoopの例を作成しましょう。 以下は、ループを実行して変数の最終値を返すWebワーカーを生成するメインページ(hello)です* j *-

<!DOCTYPE HTML>

<html>
   <head>
      <title>Big for loop</title>

      <script>
         var worker = new Worker('bigLoop.js');

         worker.onmessage = function (event) {
            alert("Completed " + event.data + "iterations" );
         };

         function sayHello() {
            alert("Hello sir...." );
         }
      </script>
   </head>

   <body>
      <input type = "button" onclick = "sayHello();" value = "Say Hello"/>
   </body>
</html>

以下は、bigLoop.jsファイルの内容です。 これは、* postMessage()* APIを使用して通信をメインページに戻します-

for (var i = 0; i <= 1000000000; i += 1) {
   var j = i;
}
postMessage(j);

これは、次の結果を生成します-

Web Workersを停止する

Web Workersはそれ自体では停止しませんが、それらを開始したページは* terminate()*メソッドを呼び出すことで停止できます。

worker.terminate();

終了したWeb Workerは、メッセージに応答したり、追加の計算を実行したりしなくなります。 ワーカーを再起動することはできません。代わりに、同じURLを使用して新しいワーカーを作成できます。

エラー処理

以下は、エラーをコンソールに記録するWeb Worker JavaScriptファイルのエラー処理関数の例を示しています。 エラー処理コードでは、上記の例は次のようになります-

<!DOCTYPE HTML>

<html>
   <head>
      <title>Big for loop</title>

      <script>
         var worker = new Worker('bigLoop.js');

         worker.onmessage = function (event) {
            alert("Completed " + event.data + "iterations" );
         };

         worker.onerror = function (event) {
            console.log(event.message, event);
         };

         function sayHello() {
            alert("Hello sir...." );
         }
      </script>
   </head>

   <body>
      <input type = "button" onclick = "sayHello();" value = "Say Hello"/>
   </body>
</html>

ブラウザサポートの確認

以下は、ブラウザで利用可能なWeb Worker機能のサポートを検出するための構文です-

<!DOCTYPE HTML>

<html>
   <head>
      <title>Big for loop</title>
      <script src = "/js/modernizr-1.5.min.js"></script>

      <script>
      function myFunction() {

         if (Modernizr.webworkers) {
            alert("Congratulation!! you have web workers support." );
         } else {
            alert("Sorry!! you do not have web workers support." );
         }
      }
      </script>
   </head>

   <body>
      <button onclick = "myFunction()">Click me</button>
   </body>
</html>

これは、次の結果を生成します-

HTML5-Webスライドデスク

スライドは、プレゼンテーションの1ページです。 まとめて、スライドのグループはスライドデッキと呼ばれる場合があります。

ソースコードをダウンロードできますlink:/html5/src/slide_desk/slide_desk.zip [こちら]

HTML5-SVGジェネレーター

HTML5-MathML

HTML5のHTML構文では、<math> …​ </math>タグを使用して、MathML要素をドキュメント内で使用できます。

ほとんどのWebブラウザーはMathMLタグを表示できます。 ブラウザがMathMLをサポートしていない場合は、Firefoxの最新バージョンを使用することをお勧めします。

MathMLの例

以下は、MathMLを使用した有効なHTML5ドキュメントです-

<!doctype html>

<html>
   <head>
      <meta charset = "UTF-8">
      <title>Pythagorean theorem</title>
   </head>

   <body>
      <math xmlns = "http://www.w3.org/1998/Math/MathML">

         <mrow>
            <msup><mi>a</mi><mn>2</mn></msup>
            <mo>+</mo>

            <msup><mi>b</mi><mn>2</mn></msup>
            <mo> = </mo>

            <msup><mi>c</mi><mn>2</mn></msup>
         </mrow>

      </math>
   </body>
</html>

これは、次の結果を生成します-

MathML文字の使用

以下は、文字&InvisibleTimes;を使用するマークアップです。 −

<!doctype html>

<html>
   <head>
      <meta charset = "UTF-8">
      <title>MathML Examples</title>
   </head>

   <body>
      <math xmlns = "http://www.w3.org/1998/Math/MathML">

         <mrow>
            <mrow>

               <msup>
                  <mi>x</mi>
                  <mn>2</mn>
               </msup>

               <mo>+</mo>

               <mrow>
                  <mn>4</mn>
                  <mo>&InvisibleTimes;</mo>
                  <mi>x</mi>
               </mrow>

               <mo>+</mo>
               <mn>4</mn>

            </mrow>

            <mo>=</mo>
            <mn>0</mn>

         </mrow>
      </math>
   </body>
</html>

これにより、次の結果が生成されます。 x ^ 2 ^ + 4x + 4 = 0のような適切な結果が表示されない場合は、Firefox 3.5以降のバージョンを使用してください。

これは、次の結果を生成します-

マトリックス表示の例

単純な2x2行列を表すために使用される次の例を検討してください-

<!doctype html>

<html>
   <head>
      <meta charset = "UTF-8">
      <title>MathML Examples</title>
   </head>

   <body>
      <math xmlns = "http://www.w3.org/1998/Math/MathML">

         <mrow>
            <mi>A</mi>
            <mo>=</mo>

            <mfenced open = "[" close="]">

               <mtable>
                  <mtr>
                     <mtd><mi>x</mi></mtd>
                     <mtd><mi>y</mi></mtd>
                  </mtr>

                  <mtr>
                     <mtd><mi>z</mi></mtd>
                     <mtd><mi>w</mi></mtd>
                  </mtr>
               </mtable>

            </mfenced>
         </mrow>
      </math>

   </body>
</html>

これは、次の結果を生成します-

これにより、次の結果が生成されます。 適切な結果が表示されない場合は、Firefox 3.5以降のバージョンを使用してください。

MathML

HTML5-速度描画

ソースコードはlink:/html5/src/velocity/velocity.zipから入手できます[こちら]

HTML5-QRジェネレーター

ソースコードはlink:/html5/src/qr_code/qr_code.zip [こちら]から入手できます。

HTML5-バリデーター

HTML5-Modernizr

Modernizrは、次世代のWebテクノロジーのネイティブ実装の可用性を検出する小さな* JavaScriptライブラリ*です。

HTML5とCSS3を介して導入されているいくつかの新しい機能がありますが、多くのブラウザーはこれらのニュース機能をサポートしていません。

Modernizrを使用すると、新しい機能を簡単に検出できるため、対応するアクションを実行できます。 たとえば、ブラウザがビデオ機能をサポートしていない場合、単純なページを表示したいとします。

機能の可用性に基づいてCSSルールを作成できます。ブラウザが新しい機能をサポートしていない場合、これらのルールはWebページに自動的に適用されます。

このユーティリティの最新バージョンは、https://www.modernizr.com/[Modernizr Download]からダウンロードできます。

構文

Modernizrの使用を開始する前に、次のようにHTMLページヘッダーにそのJavaScriptライブラリを含める必要があります-

<script src="modernizr.min.js" type="text/javascript"></script>

前述のように、機能の可用性に基づいてCSSルールを作成できます。ブラウザーが新しい機能をサポートしていない場合、これらのルールはWebページに自動的に適用されます。

以下は、サポートされている機能とサポートされていない機能を処理する簡単な構文です-

/*In your CSS:*/
.no-audio #music {
   display: none;/*Don't show Audio options*/
}
.audio #music button {
  /*Style the Play and Pause buttons nicely*/
}

<!-- In your HTML: -->
<div id="music">

   <audio>
      <source src="audio.ogg"/>
      <source src="audio.mp3"/>
   </audio>

   <button id="play">Play</button>
   <button id="pause">Pause</button>
</div>

ここでは、サポートしていないブラウザで処理するすべての機能/プロパティの前に「no-」を付ける必要があることに注目してください。

以下は、Javascriptを介して特定の機能を検出するための構文です-

if (Modernizr.audio) {
  /*properties for browsers that
   support audio*/
}

else{
  /*properties for browsers that
   does not support audio*/
}

Modernizrによって検出された機能

以下は、Modernizrで検出できる機能のリストです-

Feature CSS Property JavaScript Check
@font-face .fontface Modernizr.fontface
Canvas .canvas Modernizr.canvas
Canvas Text .canvastext Modernizr.canvastext
HTML5 Audio .audio Modernizr.audio
HTML5 Audio formats NA Modernizr.audio[format]
HTML5 Video .video Modernizr.video
HTML5 Video Formats NA Modernizr.video[format]
rgba() .rgba Modernizr.rgba
hsla() .hsla Modernizr.hsla
border-image .borderimage Modernizr.borderimage
border-radius .borderradius Modernizr.borderradius
box-shadow .boxshadow Modernizr.boxshadow
Multiple backgrounds .multiplebgs Modernizr.multiplebgs
opacity .opacity Modernizr.opacity
CSS Animations .cssanimations Modernizr.cssanimations
CSS Columns .csscolumns Modernizr.csscolumns
CSS Gradients .cssgradients Modernizr.cssgradients
CSS Reflections .cssreflections Modernizr.cssreflections
CSS 2D Transforms .csstransforms Modernizr.csstransforms
CSS 3D Transforms .csstransforms3d Modernizr.csstransforms3d
CSS Transitions .csstransitions Modernizr.csstransitions
Geolocation API .geolocation Modernizr.geolocation
Input Types NA Modernizr.inputtypes[type]
Input Attributes NA Modernizr.input[attribute]
localStorage .localstorage Modernizr.localstorage
sessionStorage .sessionstorage Modernizr.sessionstorage
Web Workers .webworkers Modernizr.webworkers
applicationCache .applicationcache Modernizr.applicationcache
SVG .svg Modernizr.svg
SVG Clip Paths .svgclippaths Modernizr.svgclippaths
SMIL .smil Modernizr.smil
Web SQL Database .websqldatabase Modernizr.websqldatabase
IndexedDB .indexeddb Modernizr.indexeddb
Web Sockets .websockets Modernizr.websockets
Hashchange Event .hashchange Modernizr.hashchange
History Management .historymanagement Modernizr.historymanagement
Drag and Drop .draganddrop Modernizr.draganddrop
Cross-window Messaging .crosswindowmessaging Modernizr.crosswindowmessaging
addTest() Plugin API NA Modernizr.addTest(str,fn)

HTML5-検証

このチュートリアルを書いている時点では、HTML5は非常に初期段階にあり、ネット上で利用できるバリデータはほとんどありません。

しかし、次の2つのバリデータは非常に本物であり、使用することができます-

(1)W3Cマークアップ検証ツール

W3C Markup Validatorは、HTML、XHTML、SMIL、MathMLなどのWebドキュメントのマークアップの妥当性をチェックします。 この検証ツールは、W3Cの統合検証サービスであるUnicornの一部です。

このバリデーターをHTML5に使用するには、その他のオプション*を使用し、以下に示すように HTML5(実験的)*として*ドキュメントタイプ*を選択する必要があります。

W3Cマークアップ検証

(2)Validator.nu(X)HTML5 Validator

現在知られているもう1つのHTML5バリデータは次のとおりです。Henriのhttp://html5.validator.nu/[Validator.nu(X)HTML5バリデータ](高度に実験的)-

Validator.nu(X)HTML5 Validator

このバリデータには互換性の問題があるため、IEまたはMozillaの下位バージョンで試すことができます。 Html5-online-editor

HTML5-カラーコードビルダー

異なる色を使用してHTMLページを装飾する必要があります。 HTML5は、背景色、フォント色などを設定するために使用できる幅広い属性を提供します。

HTML5ページで色を使用するには、有効な色コードが必要です。 次の2つのツールは、有効なHTML5カラーコードの生成に役立ちます。

HTML5カラーピッカー

  • 好きな色をクリックして、HTMLコードまたはCSSで使用する同等のカラーコードを選択します。
  • このパレットで生成されるすべてのコードはHexaにあります。

JQueryカラーピッカー

  • 好きな色をクリックして、HTMLコードまたはCSSで使用する同等のカラーコードを選択します。
  • このパレットで生成されるコードはすべてRGB形式になります。

HTML5-色の名前

次の表は、8ビットグラフィックカードが提供する16色をサポートするためにHTML 3.2で導入された16色名を示しています-

Color Name Hex Value Color Show
aqua #00ffff Demo
black #000000 Demo
blue #0000ff Demo
fuchsia #ff00ff Demo
green #008000 Demo
gray #808080 Demo
lime #00ff00 Demo
maroon #800000 Demo
navy #000080 Demo
olive #808000 Demo
purple #800080 Demo
red #ff0000 Demo
silver #c0c0c0 Demo
teal #008080 Demo
white #ffffff Demo
yellow #ffff00 Demo

HTMLまたはXHTMLの一部ではない他の色もありますが、IEまたはNetscapeのほとんどのバージョンでサポートされています。

Color Name Hex Value Color Show
aliceblue #f0f8ff Demo
antiquewhite #faebd7 Demo
aquamarine #7fffd4 Demo
azure #f0ffff Demo
beige #f5f5dc Demo
bisque #ffe4c4 Demo
blanchedalmond #ffebcd Demo
blueviolet #8a2be2 Demo
brown #a52a2a Demo
burlywood #deb887 Demo
cadetblue #5f9ea0 Demo
chartreuse #7fff00 Demo
chocolate #d2691e Demo
coral #ff7f50 Demo
cornflowerblue #6495ed Demo
cornsilk #fff8dc Demo
crimson #dc143c Demo
cyan #00ffff Demo
darkblue #00008b Demo
darkcyan #008b8b Demo
darkgoldenrod #b8860b Demo
darkgray #a9a9a9 Demo
darkgreen #006400 Demo
darkkhaki #bdb76b Demo
darkmagenta #8b008b Demo
darkolivegreen #556b2f Demo
darkorange #ff8c00 Demo
darkorchid #9932cc Demo
darkred #8b0000 Demo
darksalmon #e9967a Demo
darkseagreen #8fbc8f Demo
darkslateblue #483d8b Demo
darkslategray #2f4f4f Demo
darkturquoise #00ced1 Demo
darkviolet #9400d3 Demo
deeppink #ff1493 Demo
deepskyblue #00bfff Demo
dimgray #696969 Demo
dodgerblue #1e90ff Demo
firebrick #b22222 Demo
floralwhite #fffaf0 Demo
forestgreen #228b22 Demo
gainsboro #dcdcdc Demo
ghostwhite #f8f8ff Demo
gold #ffd700 Demo
goldenrod #daa520 Demo
gray #808080 Demo
greenyellow #adff2f Demo
honeydew #f0fff0 Demo
hotpink #ff69b4 Demo
indianred #cd5c5c Demo
indigo #4b0082 Demo
ivory #fffff0 Demo
khaki #f0e68c Demo
lavender #e6e6fa Demo
lavenderblush #fff0f5 Demo
lawngreen #7cfc00 Demo
lemonchiffon #fffacd Demo
lightblue #add8e6 Demo
lightcoral #f08080 Demo
lightcyan #e0ffff Demo
lightgoldenrodyellow #fafad2 Demo
lightgreen #90ee90 Demo
lightgrey #d3d3d3 Demo
lightpink #ffb6c1 Demo
lightsalmon #ffa07a Demo
lightseagreen #20b2aa Demo
lightskyblue #87cefa Demo
lightslategray #778899 Demo
lightsteelblue #b0c4de Demo
lightyellow #ffffe0 Demo
limegreen #32cd32 Demo
linen #faf0e6 Demo
magenta #ff00ff Demo
mediumblue #0000cd Demo
mediumorchid #ba55d3 Demo
mediumpurple #9370db Demo
midnightblue #191970 Demo
mistyrose #ffe4e1 Demo
moccasin #ffe4b5 Demo
oldlace #fdf5e6 Demo
orange #ffa500 Demo
orchid #da70d6 Demo
peachpuff #ffdab9 Demo
peru #cd853f Demo
pink #ffc0cb Demo
plum #dda0dd Demo
purple #800080 Demo
rosybrown #bc8f8f Demo
royalblue #4169e1 Demo
salmon #fa8072 Demo
sandybrown #f4a460 Demo
seagreen #2e8b57 Demo
sienna #a0522d Demo
skyblue #87ceeb Demo
slateblue #6a5acd Demo
steelblue #4682b4 Demo
tan #d2b48c Demo
thistle #d8bfd8 Demo
tomato #ff6347 Demo
violet #ee82ee Demo
wheat #f5deb3 Demo
whitesmoke #f5f5f5 Demo
yellow #ffff00 Demo
yellowgreen #9acd32 Demo

HTML5-フォントリファレンス

フォントはプラットフォームに固有です。 異なるOSを使用している場合、Webページのルックアンドフィールは異なります。 ここでは、さまざまなオペレーティングシステムで使用できるフォントのリストを示します。

HTML <FONT>タグはバージョン4.0以降では非推奨になり、すべてのフォントはCSSを使用して設定されるようになりました。 Webページの本文のフォントを設定する簡単な構文を次に示します。

body { font-family: "new century schoolbook"; }
or
<body style="font-family:new century schoolbook;" >

これにより、次の結果が生成されます–

Microsoft OSおよびブラウザーのフォント

Font Font Font
Andale Mono Arial Arial Bold
Arial Italic Arial Bold Italic Arial Black
Comic Sans MS Comic Sans MS Bold Courier New
Courier New Bold Courier New Italic Courier New Bold Italic
Georgia Georgia Bold Georgia Italic
Georgia Bold Italic Impact Lucida Console
Lucida Sans Unicode Marlett Minion Web
Symbol Times New Roman Times New Roman Bold
Times New Roman Italic Times New Roman Bold Italic Tahoma
Trebuchet MS Trebuchet MS Bold Trebuchet MS Italic
Trebuchet MS Bold Italic Verdana Verdana Bold
Verdana Italic Verdana Bold Italic Webdings

Microsoft Fontsの詳細については、http://www.microsoft.com/typography/fontsをご覧ください。

ここでサンプルフォントを確認できます-リンク:/html5/microsoft_fonts_examples [Microsoft Fonts Examples]

Macintoshシステム用のフォント

以下は、Macintosh System 7以降のバージョンでサポートされているフォントのリストです

Font Font Font
American Typewriter Andale Mono Apple Chancery
Arial Arial Black Brush Script
Baskerville Big Caslon Comic Sans MS
Copperplate Courier New Gill Sans
Futura Herculanum Impact
Lucida Grande Marker Felt Optima
Trebuchet MS Verdana Webdings
Palatino Symbol Times
Osaka Papyrus Times New Roman
Textile Zapf Dingbats Zapfino
Techno Hoefler Text Skia
Hoefler Text Ornaments Capitals Charcoal
Gadget Sand  

ここでサンプルフォントを確認できます-link:/html5/mac_fonts_examples [Mac Fonts Examples]

Unixシステム用のフォント

以下は、ほとんどのUnixシステムのバリアントでサポートされているフォントのリストです

Font Font Font
Charter Clean Courier
Fixed Helvetica Lucida
Lucida bright Lucida Typewriter New Century Schoolbook
Symbol Terminal Times
Utopia    

ここでサンプルフォントを確認できます-リンク:/html5/unix_fonts_examples [Unixフォントの例]

HTML5-URLエンコード

URLエンコードとは、URL内の印刷不可能な文字または特別な意味を持つ文字を、Webブラウザーおよびサーバーで明確に受け入れられる普遍的な表現に変換することです。 これらの文字が含まれます-

  • * ASCII制御文字*-出力制御に通常使用される印刷できない文字。 文字範囲は16進数00-1F(10進数0-31)および7F(10進数127)です。 完全なエンコード表を以下に示します。
  • 非ASCII制御文字-ASCII文字セットの128文字を超える文字です。 この範囲はISO-Latin文字セットの一部であり、ISO-Latinセットの「上半分」全体(80-FF 16進数(10進数で128-255))を含みます。 完全なエンコード表を以下に示します。
  • 予約文字-これらは、ドル記号、アンパサンド、プラス、コモン、スラッシュ、コロン、セミコロン、等号、疑問符、「アット」記号などの特殊文字です。 これらはすべてURL内で異なる意味を持つことがあるため、エンコードする必要があります。 完全なエンコード表を以下に示します。
  • 安全でない文字-スペース、引用符、記号より小さい、記号より大きい、ポンド文字、パーセント文字、左中括弧、右中括弧、パイプ、バックスラッシュ、キャレット、ティルド、左角括弧、右角括弧、墓のアクセント。 これらの文字は、さまざまな理由でURL内で誤解される可能性を示しています。 これらの文字も常にエンコードする必要があります。 完全なエンコード表を以下に示します。

エンコード表記は、目的の文字を3つの文字に置き換えます。パーセント記号と、ASCII文字セット内の文字の位置に対応する2つの16進数字です。

最も一般的な特殊文字の1つはスペースです。 URLにスペースを直接入力することはできません。 文字セット内のスペース位置は20 16進数です。 そのため、要求をサーバーに渡すときに、スペースに%20を使用できます。

http://www.example.com/new%20pricingl

このURLは実際にwww.example.comから_new料金設定_という名前のドキュメントを取得します

ASCII制御文字エンコード

これには、16進数00-1F(10進数0-31)および7F(10進数127)の文字範囲のエンコードが含まれます。

Decimal Hex Value Character URL Encode
0 00   %00
1 01   %01
2 02   %02
3 03   %03
4 04   %04
5 05   %05
6 06   %06
7 07   %07
8 08 backspace %08
9 09 tab %09
10 0a linefeed %0a
11 0b   %0b
12 0c   %0c
13 0d carriage return %0d
14 0e   %0e
15 0f   %0f
16 10   %10
17 11   %11
18 12   %12
19 13   %13
20 14   %14
21 15   %15
22 16   %16
23 17   %17
24 18   %18
25 19   %19
26 1a   %1a
27 1b   %1b
28 1c   %1c
29 1d   %1d
30 1e   %1e
31 1f   %1f
127 7f   %7f

非ASCII制御文字エンコード

これには、ISO-Latinセット80-FF 16進数(10進数で128-255)の「上半分」全体のエンコードが含まれます。

Decimal Hex Value Character URL Encode
128 80 %80
129 81 ? %81
130 82 %82
131 83 ƒ %83
132 84 %84
133 85 %85
134 86 %86
135 87 %87
136 88 ˆ %88
137 89 %89
138 8a Š %8a
139 8b %8b
140 8c Π%8c
141 8d ? %8d
142 8e Ž %8e
143 8f ? %8f
144 90 ? %90
145 91 %91
146 92 %92
147 93 %93
148 94 %94
149 95 %95
150 96 %96
151 97 %97
152 98 ˜ %98
153 99 %99
154 9a š %9a
155 9b %9b
156 9c œ %9c
157 9d ? %9d
158 9e ž %9e
159 9f Ÿ %9f
160 a0   %a0
161 a1 ¡ %a1
162 a2 ¢ %a2
163 a3 £ %a3
164 a4 ¤ %a4
165 a5 ¥ %a5
166 a6 ¦ %a6
167 a7 § %a7
168 a8 ¨ %a8
169 a9 © %a9
170 aa ª %aa
171 ab « %ab
172 ac ¬ %ac
173 ad ­ %ad
174 ae ® %ae
175 af ¯ %af
176 b0 ° %b0
177 b1 ± %b1
178 b2 ² %b2
179 b3 ³ %b3
180 b4 ´ %b4
181 b5 µ %b5
182 b6 %b6
183 b7 · %b7
184 b8 ¸ %b8
185 b9 ¹ %b9
186 ba º %ba
187 bb » %bb
188 bc ¼ %bc
189 bd ½ %bd
190 be ¾ %be
191 bf ¿ %bf
192 c0 À %c0
193 c1 Á %c1
194 c2 Â %c2
195 c3 Ã %c3
196 c4 Ä %c4
197 c5 Å %c5
198 c6 Æ %v6
199 c7 Ç %c7
200 c8 È %c8
201 c9 É %c9
202 ca Ê %ca
203 cb Ë %cb
204 cc Ì %cc
205 cd Í %cd
206 ce Î %ce
207 cf Ï %cf
208 d0 Ð %d0
209 d1 Ñ %d1
210 d2 Ò %d2
211 d3 Ó %d3
212 d4 Ô %d4
213 d5 Õ %d5
214 d6 Ö %d6
215 d7 × %d7
216 d8 Ø %d8
217 d9 Ù %d9
218 da Ú %da
219 db Û %db
220 dc Ü %dc
221 dd Ý %dd
222 de Þ %de
223 df ß %df
224 e0 à %e0
225 e1 á %e1
226 e2 â %e2
227 e3 ã %e3
228 e4 ä %e4
229 e5 å %e5
230 e6 æ %e6
231 e7 ç %e7
232 e8 è %e8
233 e9 é %e9
234 ea ê %ea
235 eb ë %eb
236 ec ì %ec
237 ed í %ed
238 ee î %ee
239 ef ï %ef
240 f0 ð %f0
241 f1 ñ %f1
242 f2 ò %f2
243 f3 ó %f3
244 f4 ô %f4
245 f5 õ %f5
246 f6 ö %f6
247 f7 ÷ %f7
248 f8 ø %f8
249 f9 ù %f9
250 fa ú %fa
251 fb û %fb
252 fc ü %fc
253 fd ý %fd
254 fe þ %fe
255 ff ÿ %ff

予約文字エンコード

以下は、予約文字のエンコードに使用される表です。

Decimal Hex Value Char URL Encode
36 24 $ %24
38 26 & %26
43 2b + %2b
44 2c , %2c
47 2f / %2f
58 3a : %3a
59 3b ; %3b
61 3d = %3d
63 3f ? %3f
64 40 @ %40

安全でない文字エンコード

以下は、安全でない文字をエンコードするために使用される表です。

Decimal Hex Value Char URL Encode
32 20 space %20
34 22 " %22
60 3c < %3c
62 3e > %3e
35 23 # %23
37 25 % %25
123 7b \{ %7b
125 7d } %7d
124 7c
%7c 92 5c \
%5c 94 5e ^
%5e 126 7e ~
%7e 91 5b [
%5b 93 5d ]
%5d 96 60 `

HTML5-エンティティリファレンス

HTML5の文字エンティティ

一部の文字はHTML5で予約されています。 たとえば、ブラウザーでマークアップと間違われる可能性があるため、テキスト内で大なり記号と小なり記号を使用することはできません。

HTML5プロセッサは、次の表にリストされている5つの特殊文字をサポートする必要があります。

Symbol Description Entity Name Number Code
" quotation mark " "
' apostrophe  ' '
& ampersand & &
< less-than < <
> greater-than > >

ブラウザで処理されるのではなく、ユーザーにコードが表示されるように要素と属性をページに書き込むには(たとえば<div id = "character">として)、次のように記述します-

&div id=&quot;character&quot;&gt;

HTML5対応プロセッサがサポートする必要がある特殊文字の長いリストもあります。 これらをドキュメントに表示するには、数値コードまたはエンティティ名を使用できます。 たとえば、著作権記号を挿入するには、次のいずれかを使用できます-

&copy; 2007

or

&#169; 2007

ISO 8859-1文字セットは、最も広く使用されている文字セットです。 ISO 885901文字セットの完全なリファレンスは、以下のgievnです。

ISO 8859-1シンボルエンティティ

Result Description Entity Name Number Code
  non-breaking space    
¡ inverted exclamation mark ¡ ¡
¤ currency ¤ ¤
¢ cent ¢ ¢
£ pound £ £
¥ yen ¥ ¥
¦ broken vertical bar ¦ ¦
§ section § §
¨ spacing diaeresis ¨ ¨
© copyright © ©
ª feminine ordinal indicator ª ª
« angle quotation mark (left) « «
¬ negation ¬ ¬
­ soft hyphen ­ ­
® registered trademark ® ®
trademark TRADE
¯ spacing macron ¯ ¯
° degree ° °
± plus-or-minus  ± ±
² superscript 2 ² ²
³ superscript 3 ³ ³
´ spacing acute ´ ´
µ micro µ µ
paragraph
· middle dot · ·
¸ spacing cedilla ¸ ¸
¹ superscript 1 ¹ ¹
º masculine ordinal indicator º º
» angle quotation mark (right) » »
¼ fraction 1/4 ¼ ¼
½ fraction 1/2 ½ ½
¾ fraction 3/4 ¾ ¾
¿ inverted question mark ¿ ¿
× multiplication × ×
÷ division ÷ ÷

ISO 8859-1文字エンティティ

Result Description Entity Name Number Code
À capital a, grave accent À À
Á capital a, acute accent Á Á
 capital a, circumflex accent  Â
à capital a, tilde à Ã
Ä capital a, umlaut mark Ä Ä
Å capital a, ring Å Å
Æ capital ae Æ Æ
Ç capital c, cedilla Ç Ç
È capital e, grave accent È È
É capital e, acute accent É É
Ê capital e, circumflex accent Ê Ê
Ë capital e, umlaut mark Ë Ë
Ì capital i, grave accent Ì Ì
Í capital i, acute accent Í Í
Î capital i, circumflex accent Î Î
Ï capital i, umlaut mark Ï Ï
Ð capital eth, Icelandic Ð Ð
Ñ capital n, tilde Ñ Ñ
Ò capital o, grave accent Ò Ò
Ó capital o, acute accent Ó Ó
Ô capital o, circumflex accent Ô Ô
Õ capital o, tilde Õ Õ
Ö capital o, umlaut mark Ö Ö
Ø capital o, slash Ø Ø
Ù capital u, grave accent Ù Ù
Ú capital u, acute accent Ú Ú
Û capital u, circumflex accent Û Û
Ü capital u, umlaut mark Ü Ü
Ý capital y, acute accent Ý Ý
Þ capital THORN, Icelandic Þ Þ
ß small sharp s, German ß ß
à small a, grave accent à à
á small a, acute accent á á
â small a, circumflex accent â â
ã small a, tilde ã ã
ä small a, umlaut mark ä ä
å small a, ring å å
æ small ae æ æ
ç small c, cedilla ç ç
è small e, grave accent è è
é small e, acute accent é é
ê small e, circumflex accent ê ê
ë small e, umlaut mark ë ë
ì small i, grave accent ì ì
í small i, acute accent í í
î small i, circumflex accent î î
ï small i, umlaut mark ï ï
ð small eth, Icelandic ð ð
ñ small n, tilde ñ ñ
ò small o, grave accent ò ò
ó small o, acute accent ó ó
ô small o, circumflex accent ô ô
õ small o, tilde õ õ
ö small o, umlaut mark ö ö
ø small o, slash ø ø
ù small u, grave accent ù ù
ú small u, acute accent ú ú
û small u, circumflex accent û û
ü small u, umlaut mark ü ü
ý small y, acute accent ý ý
þ small thorn, Icelandic þ þ
ÿ small y, umlaut mark ÿ ÿ

HTML5ブラウザでサポートされているその他のエンティティ-

Result Description Entity Name Number Code
Œ capital ligature OE OELIG Œ
œ small ligature oe OELIG œ
Š capital S with caron SCARON Š
š small S with caron SCARON š
Ÿ capital Y with diaeres YUML Ÿ
ˆ modifier letter circumflex accent CIRC ˆ
˜ small tilde TILDE ˜
en space ENSP
em space EMSP
thin space THINSP
zero width non-joiner ZWNJ
zero width joiner ZWJ
left-to-right mark LRM
right-to-left mark RLM
en dash NDASH
em dash MDASH
left single quotation mark LSQUO
right single quotation mark RSQUO
single low-9 quotation mark SBQUO
left double quotation mark LDQUO
right double quotation mark RDQUO
double low-9 quotation mark BDQUO
dagger DAGGER
double dagger DAGGER
horizontal ellipsis HELLIP
per mille  PERMIL
single left-pointing angle quotation LSAQUO
single right-pointing angle quotation RSAQUO
euro EURO

HTML5-文字エンコーディング

文字エンコーディングは、バイトを文字に変換する方法です。 HTMLドキュメントを検証または表示するには、プログラムで文字エンコードを選択する必要があります。 HTML 5の作成者には、文字エンコーディングを設定する3つの手段があります-

HTTP Content-Typeヘッダー

cgiまたは同様のプログラムを作成している場合は、HTTP _Content-Type_ヘッダーを使用して文字エンコードを設定します。

以下は簡単な例です-

print "Content-Type: text/html; charset=utf-8\r\n";

<meta>要素

HTML5ドキュメントの最初の512バイト内のエンコーディングを指定するcharset属性で<meta>要素を使用できます。

以下は簡単な例です-

<meta charset="UTF-8">

上記の構文は、<meta http-equiv = "Content-Type" content = "text/html; charset = UTF-8">の必要性を置き換えますが、その構文は引き続き許可されます。

Unicodeバイトオーダーマーク(BOM)

バイトオーダーマーク(BOM)は、データストリームの先頭にある文字コードU + FEFFで構成され、主にマークされていないプレーンテキストファイルのバイトオーダーとエンコード形式を定義する署名として使用できます。

多くのWindowsプログラム(Windows Notepadを含む)は、UTF-8として保存されたドキュメントの先頭に0xEF、0xBB、0xBFのバイトを追加します。 これは、Unicodeバイトオーダーマーク(BOM)のUTF-8エンコーディングであり、バイトオーダーとは関係ありませんが、一般にUTF-8 BOMと呼ばれます。

HTML5ドキュメントの場合、ファイルの先頭にUnicodeバイトオーダーマーク(BOM)文字を使用できます。 この文字は、使用されるエンコーディングの署名を提供します。 Html5-questions-answers

HTML5-タグリファレンス

HTML5で利用可能な標準タグの完全なリストを以下に示します。 すべてのタグは、新しく導入されたか、HTML5で非推奨になったかを示す指示とともにアルファベット順に並べられます。

Tag Description
<!--…​-→ Specifies a comment
<!DOCTYPE> Specifies the document type
<a> Specifies an anchor
<abbr> Specifies an abbreviation
<acronym> Deprecated:Specifies an acronym
<address> Specifies an address element
<applet> Deprecated: Specifies an applet
<area> Specifies an area inside an image map
<article> New Tag: Specifies an independent piece of content of a document, such as a blog entry or newspaper article
<aside> New Tag:Specifies a piece of content that is only slightly related to the rest of the page.
<audio> New Tag:Specifies an audio file.
<base> Specifies a base URL for all the links in a page
<basefont> Deprecated: Specifies a base font
<bdo> Specifies the direction of text display
<bgsound> Specifies the background music
<blink> Specifies a text which blinks
<blockquote> Specifies a long quotation
<body> Specifies the body element
<br> Inserts a single line break
<button> Specifies a push button
<canvas> New Tag:This is used for rendering dynamic bitmap graphics on the fly, such as graphs or games.
<caption> Specifies a table caption
<center> Deprecated: Specifies centered text
<col> Specifies attributes for table columns 
<colgroup> Specifies groups of table columns
<command> New Tag:Specifies a command the user can invoke.
<comment> Puts a comment in the document
<datalist> New Tag:Together with the a new list attribute for input can be used to make comboboxes
<dd> Specifies a definition description
<del> Specifies deleted text
<details> New Tag:Specifies additional information or controls which the user can obtain on demand.
<dir> Deprecated: Specifies a directory list
<div> Specifies a section in a document
<dl> Specifies a definition list
<dt> Specifies a definition term
<embed> New Tag:Defines external interactive content or plugin.
<fieldset> Specifies a fieldset
<figure> New Tag:Specifies a piece of self-contained flow content, typically referenced as a single unit from the main flow of the document.
<b> Specifies bold text
<big> Deprecated:Specifies big text
<i> Specifies italic text
<small> Specifies small text
<tt> Deprecated:Specifies teletype text
<font> Deprecated: Specifies text font, size, and color
<footer> New Tag:Specifies a footer for a section and can contain information about the author, copyright information, et cetera.
<form> Specifies a form 
<frame> Deprecated:Specifies a sub window (a frame)
<frameset> Deprecated:Specifies a set of frames
<head> Specifies information about the document
<header> New Tag:Specifies a group of introductory or navigational aids.
<hgroup> New Tag:Specifies the header of a section.
<h1> to <h6> Specifies header 1 to header 6
<hr> Specifies a horizontal rule
<html> Specifies an html document
<isindex> Deprecated: Specifies a single-line input field
<iframe> Specifies an inline sub window (frame)
<ilayer> Specifies an inline layer
<img> Specifies an image
<input> Specifies an input field
<ins> Specifies inserted text
<keygen> New Tag:Specifies control for key pair generation.
<keygen> Generate key information in a form
<label> Specifies a label for a form control
<layer> Specifies a layer
<legend> Specifies a title in a fieldset
<li> Specifies a list item
<link> Specifies a resource reference
<map> Specifies an image map 
<mark> New Tag:Specifies a run of text in one document marked or highlighted for reference purposes, due to its relevance in another context.
<marquee> Create a scrolling-text marquee
<menu> Deprecated: Specifies a menu list
<meta> Specifies meta information
<meter> New Tag:Specifies a measurement, such as disk usage.
<multicol> Specifies a multicolumn text flow
<nav> New Tag:Specifies a section of the document intended for navigation.
<nobr> No breaks allowed in the enclosed text
<noembed> Specifies content to be presented by browsers that do not support the <embed>tag
<noframes> Deprecated:Specifies a noframe section
<noscript> Specifies a noscript section
<object> Specifies an embedded object
<ol> Specifies an ordered list
<optgroup> Specifies an option group
<option> Specifies an option in a drop-down list
<output> New Tag:Specifies some type of output, such as from a calculation done through scripting.
<p> Specifies a paragraph
<param> Specifies a parameter for an object
<cite> Specifies a citation
<code> Specifies computer code text
<dfn> Specifies a definition term
<em> Specifies emphasized text 
<kbd> Specifies keyboard text
<samp> Specifies sample computer code
<strong> Specifies strong text
<var> Specifies a variable
<plaintext> Deprecated: Render the raminder of the document as preformatted plain text
<pre> Specifies preformatted text
<progress> New Tag:Specifies a completion of a task, such as downloading or when performing a series of expensive operations.
<q> Specifies a short quotation
<ruby> New Tag:Together with <rt> and <rp> allow for marking up ruby annotations.
<script> Specifies a script
<section> New Tag:Represents a generic document or application section.
<select> Specifies a selectable list
<spacer> Specifies a white space
<span> Specifies a section in a document
<s> Deprecated: Specifies strikethrough text
<strike> Deprecated: Specifies strikethrough text
<style> Specifies a style definition
<sub> Specifies subscripted text
<sup> Specifies superscripted text
<table> Specifies a table
<tbody> Specifies a table body
<td> Specifies a table cell
<textarea> Specifies a text area
<tfoot> Specifies a table footer
<th> Specifies a table header
<thead> Specifies a table header
<time> New Tag:Specifies a date and/or time.
<title> Specifies the document title
<tr> Specifies a table row
<u> Deprecated: Specifies underlined text
<ul> Specifies an unordered list
<video> New Tag:Specifies a video file.
<wbr> New Tag:Specifies a line break opportunity.
<wbr> Indicate a potential word break point within a <nobr> section
<xmp> Deprecated: Specifies preformatted text

HTML5-非推奨のタグと属性

非推奨のタグ

次の要素はHTML5では使用できなくなり、その機能はCSSでより適切に処理されます-

Tags (Elements) Description
<acronym> Defines an acronym
<applet> Defines an applet
<basefont> Defines an base font for the page.
<big> Defines big text
<center> Defines centered text
<dir> Defines a directory list
<font> Defines text font, size, and color
<frame> Defines a frame
<frameset> Defines a set of frames
<isindex> Defines a single-line input field
<noframes> Defines a noframe section
<s> Defines strikethrough text
<strike> Defines strikethrough text
<tt> Defines teletype text
<u> Defines underlined text

非推奨の属性

HTML5の機能はCSSにより適切に処理されるため、HTML5にはHTML4にあったプレゼンテーション属性はありません。 HTML4の一部の属性はHTML5ではまったく許可されなくなり、完全に削除されました。

以下は、属性とそれに対応する影響のあるタグ(要素)を削除した表です。 これらの属性が永久に削除された要素-

Removed Attributes From the Elements
rev link, a
charset link and a
shape a
coords a
longdesc img and iframe.
target link
nohref area
profile head
version html
name img
scheme meta
archive object
classid object
codebase object
codetype object
declare object
standby object
valuetype param
type param
axis td and t
abbr td and t
scope td
align caption, iframe, img, input, object, legend, table, hr, div, h1, h2, h3, h4, h5, h6, p, col, colgroup, tbody, td, tfoot, th, thead and tr.
alink body
link body
vlink body
text body
background body
bgcolor table, tr, td, th and body.
border table and object.
cellpadding table
cellspacing table
char col, colgroup, tbody, td, tfoot, th, thead and tr.
charoff col, colgroup, tbody, td, tfoot, th, thead and tr.
clear br
compact dl, menu, ol and ul.
frame table
compact dl, menu, ol and ul.
frame table
frameborder iframe
hspace img and object.
vspace img and object.
marginheight iframe
marginwidth iframe
noshade hr
nowrap td and th
rules table
scrolling iframe
size hr
type li, ol and ul.
valign col, colgroup, tbody, td, tfoot, th, thead and tr
width hr, table, td, th, col, colgroup and pre.

HTML5-新しいタグ(要素)

次のタグ(要素)がHTML5で導入されました-

Tags (Elements) Description
<article> Represents an independent piece of content of a document, such as a blog entry or newspaper article
<aside > Represents a piece of content that is only slightly related to the rest of the page.
<audio> Defines an audio file.
<canvas> This is used for rendering dynamic bitmap graphics on the fly, such as graphs or games.
<command> Represents a command the user can invoke.
<datalist> Together with the a new list attribute for input can be used to make comboboxes
<details> Represents additional information or controls which the user can obtain on demand
<embed> Defines external interactive content or plugin.
<figure> Represents a piece of self-contained flow content, typically referenced as a single unit from the main flow of the document.
<footer> Represents a footer for a section and can contain information about the author, copyright information, et cetera.
<header> Represents a group of introductory or navigational aids.
<hgroup> Represents the header of a section.
<keygen> Represents control for key pair generation.
<mark> Represents a run of text in one document marked or highlighted for reference purposes, due to its relevance in another context.
<meter> Represents a measurement, such as disk usage.
<nav> Represents a section of the document intended for navigation.
<output> Represents some type of output, such as from a calculation done through scripting.
<progress> Represents a completion of a task, such as downloading or when performing a series of expensive operations.
<ruby> Together with <rt> and <rp> allow for marking up ruby annotations.
<section> Represents a generic document or application section
<time> Represents a date and/or time.
<video> Defines a video file.
<wbr> Represents a line break opportunity.

<input>タグの新しいタイプ

入力要素のタイプ属性は現在、次の新しい値を持っています-

Type Description
color Color selector, which could be represented by a wheel or swatch picker
date Selector for calendar date
datetime-local Date and time display, with no setting or indication for time zones
datetime Full date and time display, including a time zone.
email Input type should be an email.
month Selector for a month within a given year
number A field containing a numeric value only
range Numeric selector within a range of values, typically visualized as a slider
search Term to supply to a search engine. For example, the search bar atop a browser.
tel Input type should be telephone number.
time Time indicator and selector, with no time zone information
url Input type should be URL type.
week Selector for a week within a given year