シンプルなHTML5文書
<!doctype html> <!-- このテキストファイルが、html文書であることを明示する。-->
<html>
<head>
<title> シンプルなHTML5文書 </title> <!-- webページのタイトル -->
</head>
<body>
<p>タグで配置した文字列でぃす</p> <!-- 文字列を配置する。-->
<script>
document.write( "JSで書き込んだ文字列でぃす" ); // この文書に、文字列を書き込む。
var hensuu1 = 4649; // 変数を宣言して、初期化する。( 数値を代入 )
document.write( hensuu1 ); // 変数の値を書き込む。
</script>
</body>
</html>
・青色の箇所は、HTMLタグです。
・赤色の箇所は、javascriptです。
・緑色の箇所は、コメントです。
・ 1行目の <!doctype html> タグは決まり文句です。
・<html> タグの中には、
<head> タグと <body> タグが配置されます。
・<head> タグは、「ページヘッダ」であり、
ページが読み込まれる際に、
最初に設定しておきたいことを書くところです。
・<body> タグは、「ページボディ」のことで、
ページに表示される内容をここに書いて行きます。
・<script> タグは、javascript などのスクリプトを書くところで、
昔は、<head> タグ内に書くことが慣例となっていましたが、
最近では、ページが表示されるまでの体感速度を上げるために、
<body> タグ内の最後に書くようになりました。
HTML5の基本タグ
<!doctype html> <!-- このテキストファイルが、html文書であることを明示する。-->
<html>
<head>
<title> HTML5の基本タグ</title> <!-- webページのタイトル -->
<!-- 外部のスタイルシートをリンクさせる。-->
<link rel="stylesheet" href="default.css">
<!-- 文字コード。( 原則的に utf-8 を指定する。) -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- <meta charset="UTF-8"> でもよい。 -->
<!-- このページで使用されている言語を明示する。( 日本語なら、ja ) -->
<meta http-equiv="content-language" content="ja">
<!-- デフォルトの cssファイル をリンクさせる。 -->
<meta http-equiv="default-style" content="default.css">
<!-- 検索エンジンに対して、キーワードを提示する。 -->
<meta name="keywords" content="キーワード1,キーワード2">
<!-- 検索エンジンに対して、このページの簡単な説明を提示する。 -->
<meta name="description" content="このページの概略">
<!-- 検索エンジンに対して、要求を提示する。( 無効なブラウザもある ) -->
<meta name="robots" content="noindex,nofollow">
<!-- noindex ... URL を index しないように要求する。
nofollow ... このページ内のリンクをたどらないように要求する。 -->
<!-- このページの著者を明示する。-->
<meta name="author" content="山田太郎">
</head>
<body>
<!-- リンクを配置する。-->
<a href="https://www.youtube.com/" target="_blank">
別ウィンドゥを開いて、リンク先のページを表示します。</a><br/>
<!-- 画像を埋め込む。-->
<img src="http://m9.ideamans.com/images/lena.jpg"
alt="画像の代替文" title="画像のタイトル" width="100" height="100"/><br/>
<!-- プラグインにより実行されるマルチメディアファイルを埋め込む。( Flash など ) -->
<embed src="wave.swf" width="100" height="100"/><br/>
<!-- プラグインが不要なものも含めて、外部のファイルを埋め込む。 -->
<object data="table.html" width="100" height="100"><br/>
未対応の場合に表示される代替文
<param name="" value="" /> <!-- パラメータの値を渡すこともできる。 -->
</object>
<!-- 音声を埋め込む。( chrome と firefox は対応している。プラグイン不要。) -->
<audio src="http://www.ne.jp/asahi/music/myuu/wave/cat1.wav" controls>
未対応の場合に表示される代替文
</audio><br/>
<!-- preload 属性 音声を読み込んでおく。
autoplay 属性 自動再生する。
loop 属性 ループ再生する。
controls 属性 再生パネルを表示する。-->
<!-- キャンバス (描画領域) を埋め込む。-->
<canvas id="canvas1" style="background-color:black;"
width="100" height="100">
未対応の場合に表示される代替文
</canvas><br/>
<!-- 段落 -->
<p>
あいうえお
かきくけこ
</p>
<!-- ボーダーライン -->
<hr>
<!-- 改行 -->
<br />
</body>
</html>
・webページというのは、webサイトのあるサーバーから
ブラウザへと送信されてくるものです。
・送信時の形式は、HTMLファイルであり、
HTMLの文法で書かれています。
・HTMLファイル、もとい、HTMLドキュメントは、
要素タグ、テキスト、コメントなどで構成されています。
・そして、この要素タグには、「属性」を付けることができ、
これには、各要素タグ固有の情報が書かれています。
・上の例でみると、茶色で示された箇所が、属性名と、その値です。
・さて、HTML5の、目玉機能とも言えるのが、「キャンバス」です。
・従来のHTMLでは、ページ上の絵を変更することが難しく、
サーバーに通信を行って、ページの差し替えを行っていましたが、
このキャンバスを使えば、サーバーに通信をしなくても、
表示されているページ上に、絵を描くことができます。
・<canvas> タグのところでは、識別用のidと、
描画領域のサイズを設定しておきます。
・ページへの描画処理は、javascriptで書きます。
・javascript側では、このidを指定して、キャンバスを取得します。
HTML5のテーブル
<!doctype html> <!-- このテキストファイルが、html文書であることを明示する。-->
<html>
<head>
<title>HTML5のテーブル</title> <!-- webページのタイトル -->
</head>
<body>
<table> <!-- 表の開始 -->
<caption> <!-- 表のタイトルの開始 -->
<details>
<summary>表のタイトル</summary>
<!-- タイトルの右端のボタンを押すと、下記の説明文が表示される。 -->
<p>表の説明文</p> <!-- デフォルトでは非表示となっている。-->
</details>
</caption> <!-- 表のタイトルの終了 -->
<thead> <!-- 列のヘッダ行の開始 -->
<tr> <!-- 1行目の開始 -->
<th></th> <!-- 行・列の見出しが交差しているセル。 -->
<th>1列目の見出し</th> <!-- 1列目の見出し -->
<th>2列目の見出し</th> <!-- 2列目の見出し -->
</tr> <!-- 1行目の終了 -->
</thead> <!-- 列のヘッダ行の終了 -->
<tbody> <!-- ここからが表の内容 -->
<tr> <!-- 1行目の開始 -->
<th>1行目の見出し列</th> <!-- 1行目の見出し列 -->
<td>1行目の1列目</td> <!-- 1列目 -->
<td>1行目の2列目</td> <!-- 2列目 -->
</tr> <!-- 1行目の終了 -->
<tr> <!-- 2行目の開始 -->
<th>1行目の見出し列</th> <!--2行目の見出し列 -->
<td>2行目の1列目</td> <!-- 1列目 -->
<td>2行目の2列目</td> <!-- 2列目 -->
</tr> <!-- 2行目の終了 -->
</tbody> <!-- ここまでが表の内容 -->
<tfoot> <!-- 列のフッタ行の開始 -->
<tr> <!-- 1行目の開始 -->
<th></th> <!-- 行・列の見出しが交差しているセル。 -->
<td>1列目の補足説明</td> <!-- 1列目の補足説明 -->
<td>2列目の補足説明</td> <!-- 2列目の補足説明 -->
</tr> <!-- 1行目の終了 -->
</tfoot> <!-- 列のフッタ行の終了 -->
</table> <!-- 表の終了 -->
</body>
</html>
・<table>タグの中には、次の4つのタグがあります。↓
<caption> 表のタイトル ( 説明文を表示するボタン付き )
<thead> ヘッダ行 ( 列の見出しが表示される行 )
<tbody> 表の内容
<tfoot> フッタ行 ( 各列の補足説明などを表示する行 )
・さらに、下3つのタグの中には、次のタグがあります。↓
<tr> 行
・そして、その1行の中には、次の2種類のタグがあり、
これが各列のセルとなります。↓
<td> 列セル ( 通常版 )
<th> 列セル ( 見出し用であり、テキストは太字 )
・ <tbody>以外の3つのタグは省略できます。
・行や列の中に、別の表を配置することもできます。
フォームとコントロール
・まず、テキストエディタを起動して、下記のテキストを貼り付け、
「form1.html 」というファイル名で保存してください。
・そして、そのアイコンをクリックすると、
webブラウザが起動して、webページが表示されたはずです。
・webサービスでは、会員登録の画面など、
ユーザーからの入力が必要な際には、
このような入力画面を表示します。
・これを「フォーム」といい、その内側には、このページのように、
データ入力用のコントロールが、いくつか配置されます。
・さて、ユーザーは、入力を終えると、送信ボタンを押します。
・このとき、入力されたデータは、webサービスの本体であるサーバーに送られます。
・そして、その結果として、サーバーから、別のhtmlファイルが送信されて、
ブラウザ上に表示されるのです。 ( アンケートの集計結果など )
<!doctype html> <!-- このテキストファイルが、html文書であることを明示する。-->
<html>
<head>
<title>フオームと入力コントロール</title> <!-- webページのタイトル -->
<script>
</script>
</head>
<body>
<!-- 属性などはこちら。http://www.htmq.com/html5/input.shtml -->
<!-- 入力フォーム -->
<form action="データの送信先であるサーバーのURL" method="post">
<!-- method は、送信方法で、getだと、送信先URL?入力データが送信される。
post だと、入力内容だけが送信され、URLのところに入力データが表示されない。-->
<!-- enctype は、送信するデータの形式で、次のうちのいずれか。↓
application/x-www-form-urlencoded は、
「フィールド名=入力値」を、& でつないだ形式のデータ。(デフォルト値)
multipart/form-data は、ファイル名を含むデータ。
text/plain は、プレーンテキストのみ。 -->
<!-- target 属性には、リンク先のページを表示するフレームを指定する。
https://helpx.adobe.com/jp/legacy/kb/222191.html -->
<!-- コントロールに、autofocus 属性をつけると、起動時にフォーカスされる。-->
<!-- ボタン -->
<p>
<input type="button" name="button1" value="ボタンです"/>
</p>
<!-- 画像ボタン -->
<p>
<input type="image" src="image1.png" alt="画像ボタンです"/>
</p>
<!-- テキストボックス -->
<p>
<label>見出し:</label> <!-- ラベル -->
<input type="text" name="textbox1"
size="30" maxlength="20" value="入力文字列"/>
</p>
<!-- sizeは、表示する文字数。maxlengthは、入力可能な文字数。
required を付けると、必須入力。readonly を付けると、入力不可。-->
<!-- placeholder="文字列" で、背景にうすく指示メッセージを表示する。 -->
<!-- type=number で、数値入力。
( 右端に、増減ボタンが表示される。step 属性で、増減値を指定可。) -->
<!-- type=password で、パスワード入力。-->
<!-- 日付を入力する場合は、カレンダーを表示するボタンが右端に付く。-->
<!-- type=date で、日付入力。( 表示は、2015/12/31 値は、2015-12-31 ) -->
<!-- type=time で、時間入力。( 表示は、12:38 ) 値は、12:38 -->
<!-- type=datetime-local で、ローカル日時入力。
( 表示は、2015/12/31 12:38 値は、2015-12-31T12:38 ) -->
<!-- type=month で、年月入力。( 表示は、2015/12 値は、2015-12 ) -->
<!-- type を url email tel にした場合は、入力値の検証が行われる。
そして、その検証結果が無効である場合は、データは送信されない。
( novalidate 属性を付けると、検証をOFFにできる。)-->
<!-- pattern="" で、入力可能な文字列形式を、正規表現で指定できる。-->
<!-- コンボボックス ( リストボックスから選べるオートコンプリート機能が付いたテキストボックス ) -->
<p>
<label>見出し:</label> <!-- ラベル -->
<input type="text" name="combobox1"
autocomplete="on" list="input_list1"/>
<datalist id="input_list1">
<option value="選択肢1">
<option value="選択肢2">
</datalist>
</p>
<!-- リストボックス -->
<label>見出し:</label> <!-- ラベル -->
<select id="listbox1" name="listbox1" size="2">
<option value="item1" selected>選択肢1</option>
<option value="item2">選択肢2</option>
</select>
<!-- multiple 属性を付けると、複数選択可になる。-->
<!-- size 属性は、表示される選択肢の数。-->
<!-- 複数行テキストボックス -->
<p>
<label>見出し:</label> <!-- ラベル -->
<textarea id="textarea1" name="textarea1"
cols="40" rows="4" maxlength="20">初期値</textarea>
</p>
<!-- wrap 属性を soft にすると、自動折り返し + 送信データに反映しない
hard にすると、自動折り返し + 送信データに反映する
off にすると、自動折り返しをしない -->
<!-- ラジオボタン -->
<fieldset name="fieldset1"> <!-- グループボックス ( 省略可 ) -->
<legend>見出し:</legend> <!-- グループボックスの見出し ( 省略可 ) -->
<label>選択肢1</label>
<input type="radio" name="radio1" value="item1" checked="true"/>
<label>選択肢2</label>
<input type="radio" name="radio1" value="item2"/>
</fieldset>
<!-- チェックボックス -->
<fieldset name="fieldset2"> <!-- グループボックス ( 省略可 ) -->
<legend>見出し:</legend> <!-- グループボックスの見出し ( 省略可 ) -->
<label>選択肢1</label>
<input type="checkbox" name="checkbox1"
value="item1" checked="true"/>
<label>選択肢2</label>
<input type="checkbox" name="checkbox1"
value="item2"/>
</fieldset>
<!-- ファイル選択ボタン ( ボタンの右側に、選択したファイル名が表示される。) -->
<p>
<label>見出し:</label> <!-- ラベル -->
<input type="file" name="file_select_button1"/>
</p>
<!-- 調節つまみ ( min で最小値を、max で最大値を、それぞれ指定可。) -->
<p>
<label>見出し:</label> <!-- ラベル -->
<input type="range" name="thumb1"/>
</p>
<!-- 色選択ボタン -->
<p>
<label>見出し:</label> <!-- ラベル -->
<input type="color" name="color_select_button1"/>
</p>
<!-- 進捗バー -->
<p>
<label>見出し:</label> <!-- ラベル -->
<progress max="100" value="50"></progress>
</p>
<!-- 横向きの棒グラフ -->
<p>
<label>見出し:</label> <!-- ラベル -->
<meter max="100" value="50"></meter>
</p>
<!-- このフォームの、送信ボタン -->
<p>
<input type="submit" value="送信"/>
<input type="reset" value="リセット"/>
</p>
</form>
</body>
</html>
javascript の基本構文
<!doctype html> <!-- このテキストファイルが、html文書であることを明示する。-->
<html>
<head>
<title> javascript の基本構文 </title> <!-- webページのタイトル -->
<!-- javascript -->
<script src="import.js"> <!-- 外部のjsを呼び出す。-->
</script>
<!-- javascript -->
<script> <!-- 直接書き込む。-->
var v1; // 変数の宣言。( グローバル変数は、window のプロパティとして参照できる。)
var v2 = 1; // 数値で初期化する
var v3,v4; // 複数の変数を、同時に宣言する。
var v5 = "あああ"; // 変数を文字列で初期化する。
var v6 = "長い文は、 \
折り返せる"; // バックスラッシュで折り返せる。
let v7; // ローカル変数の宣言。( ブロック内で宣言した場合は、外では無効。)
const v8 =120; // 定数の宣言。
// 真偽値 true false
// 数値 100 0.01
// 文字列 "あいうえお"
// null null値
// undefined 未定義値
// NaN 無効な値 if ( isNaN( v1 ) ) return;
// 数値の文字列は、数値に変換できる。 parseInt() parseFloat()
// ( p1は文字列。p2は数記法の基数。失敗したら、NaNを返す。)
var array1 = ["山形", "富山", "岡山"];// 配列の宣言。
// = [0,1,,3] 省略した要素は、undefined になる。
var v9 = array1[0]; // 配列の要素を参照する。
// var length1 = "あいう".length; // 文字列は、Stringオブジェクトのメンバが使える。
var obj1 = { namae: "太郎", nerei: 23 }; // オブジェクトを初期化する。
var v10 = obj1.namae; // オブジェクトのプロパティを参照する。
var v11 = typeof v2; // 変数のデータ型名を取得する。 ( "string" "number" )
if ( v1 == true ) {} // if 文
if ( v1 != false ) {} else {} // if else 文
switch ( v1 ) { case 0: break; default: break; } // switch 文
for ( var i = 0; i < 10; i++ ){} // for 文 ( break; continue; も使える。)
for ( var cur in array1 ) {} // for each 文
while ( v1 ) {} // while 文
do {} while( v1 ); // do while 文
); // コンソールに出力する。
var result_bool = confirm( "タイトルというか質問" ); // OKダイアログを表示する。
var result_text = prompt( "ダイアログのタイトル", "初期値" ); // 入力ダイアログを表示する。
function Tasu( p1 , p2 ) // 関数を実装する。
{
return p1 + p2;
}
// 関数式 ( 関数名は省略できるが、この関数内で呼び出す場合には必要。 )
var Hiku = function ( p1 , p2 ){ return p1 - p2; };
var sa = Hiku( 2 , 1 ); // 関数を呼び出す。
function TashiteWaru( p1 , p2 )
{
var v1 = p1 + p2;
// クロージャ ( 関数の実装内に、別の関数を実装する。)
// 呼び出し元のローカル変数は、まだあるので使える。
return function () { return v1 / 2; }
}
// 例外処理
try {}
catch ( ex ) { throw ex; }
finally {}
</script>
<noscript>
<p>このページでは、JavaScript を使用しています。</p>
</noscript>
</head>
<body>