Html5-quick-guide
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 |
タイムゾーンをUTCに設定してISO 8601に従ってエンコードされた日付と時刻(年、月、日、時間、分、秒、秒の小数部)。 |
2 |
タイムゾーン情報なしでISO 8601に従ってエンコードされた日付と時刻(年、月、日、時間、分、秒、秒の小数部)。 |
3 |
ISO 8601に従ってエンコードされた日付(年、月、日)。 |
4 |
ISO 8601に従ってエンコードされた年と月で構成される日付。 |
5 |
ISO 8601に従ってエンコードされた年と週の番号で構成される日付。 |
6 |
ISO 8601に従ってエンコードされた時間(時、分、秒、小数秒)。 |
7 |
数値のみを受け入れます。 step属性は精度を指定し、デフォルトは1です。 |
8 |
範囲タイプは、数値の範囲の値を含む必要がある入力フィールドに使用されます。 |
9 |
電子メールの値のみを受け入れます。 このタイプは、電子メールアドレスを含む必要がある入力フィールドに使用されます。 単純なテキストを送信しようとすると、email @ example.com形式のメールアドレスのみが入力されます。 |
10 |
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>⁢</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以降のバージョンを使用してください。
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は、接続の状態を表します。 それは次の値を持つことができます-
|
2 |
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 |
HTML5 <canvas>要素を使用して長方形を描画する方法を学ぶ |
2 |
HTML5 <canvas>要素のパスを使用して図形を作成する方法を学ぶ |
3 |
HTML5 <canvas>要素を使用して線を描く方法を学ぶ |
4 |
HTML5 <canvas>要素を使用してベジェ曲線を描く方法を学ぶ |
5 |
HTML5 <canvas>要素を使用して2次曲線を描く方法を学ぶ |
6 |
HTML5 <canvas>要素で画像を使用する方法を学ぶ |
7 |
HTML5 <canvas>要素を使用してグラデーションを作成する方法を学ぶ |
8 |
HTML5 <canvas>要素を使用してスタイルと色を適用する方法を学ぶ |
9 |
さまざまなフォントとサイズを使用して素晴らしいテキストを描画する方法を学びます。 |
10 |
さまざまなパターンを描き、影を落とす方法を学びます。 |
11 |
キャンバスで複雑な描画をしながら、キャンバスの状態を保存および復元する方法を学びます。 |
12 |
このメソッドは、キャンバスとその原点をグリッド内の別のポイントに移動するために使用されます。 |
13 |
このメソッドは、現在の原点を中心にキャンバスを回転させるために使用されます。 |
14 |
このメソッドは、キャンバスグリッドの単位を増減するために使用されます。 |
15 |
これらのメソッドにより、変換マトリックスを直接変更できます。 |
16 |
このメソッドは、特定の領域をマスクするか、キャンバスからセクションをクリアするために使用されます。 |
17 |
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、mp3 、 wav です。
<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 |
このメソッドは、ユーザーの現在の地理的位置を取得します。 |
2 |
このメソッドは、デバイスの現在の地理的位置に関する定期的な更新を取得します。 |
3 |
このメソッドは、進行中の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 |
|
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>⁢</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以降のバージョンを使用してください。
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(実験的)*として*ドキュメントタイプ*を選択する必要があります。
(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="character">
HTML5対応プロセッサがサポートする必要がある特殊文字の長いリストもあります。 これらをドキュメントに表示するには、数値コードまたはエンティティ名を使用できます。 たとえば、著作権記号を挿入するには、次のいずれかを使用できます-
© 2007
or
© 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. |
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 |