HTML5 html要素
HTML5の要素について
HTML5では「ドキュメントを適切な要素でマークアップする」されていることが重要になる
HTML要素でスタイルを変更するのはCSSが無かった時代の名残だが、
良いやり方じゃない
HTML5の要素の7種類のカテゴリ
HTML5の要素は7種類のカテゴリ(コンテンツモデル)に分類される。
コンテンツモデルとは、各要素が内包できるコンテンツを定義したもの
1) メタデータコンテンツ
2) フローコンテンツ
3) 区分コンテンツ(セクショニングコンテンツ)
4) 見出しコンテンツ(ヘディングコンテンツ)
5) インタラクティブコンテンツ
6) 記述コンテンツ(フレージングコンテンツ)
7) 埋め込みコンテンツ
リンクタイプ
例) stylesheetとiconの2つのリンクタイプを指定する
<link rel="stylesheet icon" href="styles.css" type="text/css" />
グローバル属性
例) id、class、lang、style、title、tabindex、accesskey、contenteditable、spellcheck、draggable、dropzone
<div id="main-container" class="highlight" lang="en" style="font-size: 16px;" title="Main Container">
<h1 id="main-heading" tabindex="0" accesskey="M">Global Attributes Example</h1>
<p id="paragraph" contenteditable="true" spellcheck="true">
This is an example paragraph with global attributes. It is editable and spell-checked.
</p>
<button onclick="showAlert()" draggable="true" dropzone="move">Click Me</button>
</div>
id属性 / class属性
要素名の組み合わせ
main要素について
正しいmainの構造の例)
articleとasideがmain要素の直下に配置されている
<body>
<header>
<!-- ヘッダーコンテンツ -->
</header>
<nav>
<!-- ナビゲーションコンテンツ -->
</nav>
<main>
<!-- メインコンテンツ -->
<article>
<!-- 記事コンテンツ -->
</article>
<aside>
<!-- サイドバーコンテンツ -->
</aside>
</main>
<footer>
<!-- フッターコンテンツ -->
</footer>
</body>
フローコンテンツ
フローコンテンツの例) h1、p、ul、ol、a、img、table、form
<h1>Heading 1 - Flow Content Example</h1>
<p>This is a paragraph of text, which is a flow content element.</p>
<ul>
<li>List item 1 - Unordered List</li>
<li>List item 2 - Unordered List</li>
</ul>
<ol>
<li>List item 1 - Ordered List</li>
<li>List item 2 - Ordered List</li>
</ol>
<a href="https://www.example.com">Link to Example</a>
<img src="example.jpg" alt="Example Image">
<table>
<thead>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
</tr>
</tbody>
</table>
<form>
<label for="username">Username:</label>
<input type="text" id="username" name="username">
<label for="password">Password:</label>
<input type="password" id="password" name="password">
<input type="submit" value="Submit">
</form>
Section要素 セクションについて
セクションについて
暗黙的にセクションを定義できる要素
下記は意味的にまとまったコンテンツをセクションとして定義できる要素
セクションの要素について
body要素のアウトラインについて
<h1>猫と歩む歴史の旅</h1>
<section>
<h2>ペットとして</h2>
<blockquote>
<h1>バステト</h1>
</blockquote>
<h2>食性について</h2>
</section>
タグは以下のようになっている。
<h1>: 猫と歩む歴史の旅
<section>: ペットとして
<h2>: ペットとして
<blockquote>: バステト
<h1>: バステト
<h2>: 食性について
アウトライン:
猫と歩む歴史の旅
ペットとして
バステト
食性について
div要素について
span要素について
テーブル要素
使い方
テーブルの例)
<table>
<caption>Example Table</caption>
<colgroup>
<col span="2" style="background-color: lightblue;">
<col style="background-color: lightgreen;">
</colgroup>
<thead>
<tr>
<th>Header 1</th>
<th>Header 2</th>
<th>Header 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Data 1-1</td>
<td>Data 1-2</td>
<td>Data 1-3</td>
</tr>
<tr>
<td>Data 2-1</td>
<td>Data 2-2</td>
<td>Data 2-3</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Footer 1</td>
<td>Footer 2</td>
<td>Footer 3</td>
</tr>
</tfoot>
</table>
colgroupによる、列のグループ分けの例
span属性で列数を指定する
<colgroup span="1"></colgroup>
<colgroup span="2"></colgroup>
<colgroup span="3"></colgroup>
colgroup要素内にcol要素を配置
<colgroup>
<col span="1">
<col span="2">
<col span="3">
</colgroup>
トランスペアレント / セクショニングルート
トランスペアレントを使用した例
<style>
.link-container {
background-color: #eee;
padding: 10px;
}
/* スタイリングが親要素にも適用される */
.link-container a {
color: blue;
text-decoration: underline;
}
</style>
<body>
<div class="link-container">
<p>This is a <a href="https://www.example.com">link</a> inside a transparent container.</p>
</div>
</body>
セクショニングルートを使用した例
<h1>aaaaa</h1>
<section>
<h2>bbbb</h2>
<blockquote>
<h1>cccc</h1>
</blockquote>
<h2>dddddddd</h2>
</section>
<style>
/* セクショニング・ルートごとに異なるスタイリング */
section {
border: 1px solid #ccc;
margin: 10px;
padding: 10px;
}
</style>
<section>
<h2>Section 1</h2>
<p>This is content inside the first section.</p>
</section>
<section>
<h2>Section 2</h2>
<p>This is content inside the second section.</p>
</section>
振り仮名
<ruby>
<rb>漢字</rb>
<rt>かんじ</rt>
<rb>漢字</rb>
<rp>(</rp>かんじ<rp>)</rp>
</ruby>
こんな書き方もできる
・rbを省略してrtを定義
・rtの前後をrp(代替テキストを指定)で囲む
・rtcで別の振り仮名を記載
<ruby>
大熊猫
<rt>ジャイアントパンダ</rt>
</ruby>
<ruby>
大熊猫
<rp>(</rp>
<rt>ジャイアントパンダ</rt>
<rp></rp>
</ruby>
<ruby>
大熊猫
<rt>ジャイアントパンダ</rt>
<rtc>idiom</rtc>
</ruby>
以下はrbを省略している個所があるものの、
「対象の文字列」と「振り仮名」の数が合っているため正常になる
<ruby>
合言葉
<rt>あいことば
</ruby>
<ruby>
合
<rb>言</rb>
<rb>葉</rb>
<rt>あい</rt>
<rt>こと</rt>
<rt>ば</rt>
</ruby>
<ruby>
合
<rb>言
<rb>葉
<rt>あい
<rt>こと
<rt>ば
</ruby>
間違っている例
del / ins (中央取り消し線と下線)
<p>
<ins>aaaaaaaa</ins>
<del>aaaaaaaaaaa</del>
</p>
a要素
例
<h1 id="top">沿革</h1>
<a href="#top">沿革に戻る</a>
target属性を使用した例
リンク先のwebページを表示する場所を指定する
<p><a href="https://www.example.com" target="_blank">Visit Example Website in a new tab</a></p>
<p><a href="https://www.example2.com" target="_self">Visit Another Example Website in the same tab</a></p>
img要素に複数のハイパーリンクをつけた例
img要素内に包まれた画像に対して、親のa要素とテキストリンクを追加する
画像をクリックすると最初のリンクが開き、テキストリンクをクリックすると別のリンクが開く
<a href="https://www.example.com">
<img src="example-image.jpg" alt="Example Image">
</a>
<p>Click the image or <a href="https://www.example2.com">visit another example website</a>.</p>
img要素
<img src="test.jpg" alt="サンプル画像">
picture要素
<picture>
<source srcset="sample1.png" media="(min-width: 600px)">
<source srcset="sample2.png" media="(min-width: 300px)">
<img src="sample3.jpg" alt="picture要素未対応のブラウザで表示する説明">
</picture>
figure / figcaption要素
<figure>
<img src="test.jpg" alt="写真の説明文">
<figcaption>画像のキャプション</figcaption>
</figure>
video要素
<video width="300" height="300" poster="images/fail.png" controls autoplay>
<source src="example.mp4" type="video/mp4">
<source src="example.webm" type="video/webm">
お使いのブラウザに対応していません
</video>
audio要素
video要素とaudio要素の共通点
form要素
例)
enctype: フォームデータのエンコードタイプを指定する
(multipart/form-dataを使用、主にファイルアップロードに使用される)
<form action="submit.php" method="post" enctype="multipart/form-data" novalidate>
<label for="username">Username:</label>
<input type="text" id="username" name="username" required><br><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required><br><br>
<label for="avatar">Choose avatar:</label>
<input type="file" id="avatar" name="avatar" accept="image/*"><br><br>
<button type="submit">Register</button>
</form>
label要素は入力部品(inputなど)に対してキャプションを付ける
input要素
input要素の主な属性
HTML5で新たに追加されたtype属性
HTML5のtypeのinputは、HTML5に対応していないブラウザでは、テキストボックスとして表示される
<!-- type: テキスト入力 -->
<input type="text">
<!-- max: 最大値 -->
<input type="number" max="100">
<!-- min: 最小値 -->
<input type="number" min="0">
<!-- maxlength: 入力可能な最大文字数 -->
<input type="text" maxlength="50">
<!-- value: デフォルト値 -->
<input type="text" value="Default Value">
<!-- checked: チェックされた状態 -->
<input type="checkbox" checked>
<!-- disabled: 無効化 -->
<input type="text" disabled>
<!-- readonly: 読み取り専用 -->
<input type="text" readonly>
<!-- required: 入力必須 -->
<input type="text" required>
<!-- autofocus: 自動フォーカス -->
<input type="text" autofocus>
<!-- placeholder: プレースホルダー -->
<input type="text" placeholder="Enter your name">
<!-- pattern: 入力パターン -->
<input type="text" pattern="[A-Za-z]{3}" title="3 characters required">
<!-- form: 所属するフォーム -->
<form id="myForm">
<input type="text" form="myForm">
</form>
<!-- name: フォームの名前 -->
<input type="text" name="username">
number:
<input type="number" name="quantity" min="1" max="10" value="5" required>
email:
<input type="email" name="email" required>
tel:
<input type="tel" name="phone" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" placeholder="123-456-7890" required>
url:
<input type="url" name="website" pattern="https?://.+" placeholder="https://www.example.com" required>
select要素
これは同時に表示される選択項目が3つということ
<select size="3">
textarea要素
これは1行当たり、半角で50文字入力可能
<textarea cols="50">
fieldset要素 / legend要素
フォームの入力部品をグループ化してキャプションを設定する
これを使えば枠線で囲まれる
<fieldset>
<legend>Contact Information</legend>
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<label for="message">Message:</label>
<textarea id="message" name="message" rows="4" required></textarea>
</fieldset>
iframe要素
リストの書き方
ulとolの入れ子構造
<ul>
<li>webページの構成要素
<ol>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
<li>その他</li>
</ol>
<li>
</ul>
説明リスト dl dt dd
dl Definition List
dt Definition Term
dd Definition Description
<dl>
<dt>HTML</dt>
<dd>Webページの文書構造</dd>
<dt>CSS</dt>
<dd>Webページのデザイン</dd>
</dl>
適切なマークアップの例
strong要素 と em要素 と b要素 の違い
<em>文字列</em>
<strong>文字列</strong>
s要素
<s>今なら1000円です</s>
small要素
以下のような小さい文字で表記されることを表す
・Copyright
・免責事項
・警告
・法的規則
・帰属
・ライセンス要件
引用 blockquote / q / cite
<blockquote>
<q>引用</q>
<cite>引用元</cite>
</blockquote>
<blockquote>
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>
aaaaaaaaaaaaaaaaaaaaa<br>
aaaaaaaaaaaaaaaaaaaaaaaa
</blockquote>
文のハイライトについて mark / span / u
mark要素
span要素
u要素
data要素
<data value="122">あいうえお</data>
time要素
例)
<time>2023-01-01</time>
<time datetime="2023-01-01">正月</time>
abbr / dfn 略語
例)
<abbr title="HyperText Markup Language">HTML</abbr>
<dfn title="HyperText Markup Language">HTML</dfn>
<dfn>
<abbr title="HyperText Markup Language">HTML</abbr>
</dfn>
<dfn>HTML</dfn>
code要素
プログラミング言語のスニペット(断片)を示す
samp要素
他のプログラムやコンピューティングシステムからの出力を表す
kbd要素
例)
<kbd>入力方法</kbd>
kbd要素を入れ子にして実際のキー入力を表す
<p><kbd><kbd>F12</kbd></kbd>キーで指導する</p>
sampを入れ子にすることでシステムの出力に基づいた入力を意味する
<kbd><samp>契約詳細</samp></kbd>
br要素 / wbr要素
br要素
wbr要素
script要素 / noscript要素
script要素:
noscript要素:
details要素 / summary要素
<details>
<summary>Click to show/hide details</summary>
<p>This is some detailed content that can be toggled.</p>
</details>
canvas要素
<canvas id="myCanvas" width="300" height="150" style="border:1px solid #000 ;"></canvas>
<script>
// Get the canvas element
var canvas = document.getElementById("myCanvas");
// Get the drawing context
var ctx = canvas.getContext("2d");
// Draw a red rectangle
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 100, 50);
// Draw a blue circle
ctx.beginPath();
ctx.arc(200, 75, 50, 0, 2 * Math.PI);
ctx.fillStyle = "blue";
ctx.fill();
ctx.closePath();
</script>
Flashコンテンツの読み込みについて
object要素による埋め込みの例) data属性を使う
<object data="example.pdf" type="application/pdf" width="600" height="400">
<p>PDF cannot be displayed. <a href="example.pdf">Download PDF</a> instead.</p>
</object>
embed要素による埋め込みの例) src属性を使う
<embed src="example.swf" type="application/x-shockwave-flash" width="400" height="300">