HTMLの最近の動向
この記事ではHTMLの最近の動向について説明します。
HTML5において比較的最近追加されたタグなどについて説明しています。
YouTube Video
HTMLの最近の動向
<template>
タグ
Hello, this is a reusable template!
1<template id="myTemplate">
2 <div>
3 <p>Hello, this is a reusable template!</p>
4 </div>
5</template>
6<button onclick="useTemplate()">Use Template</button>
7<div id="container"></div>
8<script>
9 function useTemplate() {
10 const template = document.getElementById('myTemplate');
11 const clone = template.content.cloneNode(true);
12 document.getElementById('container').appendChild(clone);
13 }
14</script>
-
<template>
タグは、再利用可能なHTMLフラグメントを定義し、JavaScriptを通じてアクティブ化するまで非表示にしておくために使用されます。 -
<template>
タグを利用することで、再利用可能な UI コンポーネント(例えば、カードやリストアイテムなど)を動的に作成することができます。また、大規模なアプリケーションでコードの重複を減らし、メンテナンス性を向上させることができます。 -
この例では、「Use Template」ボタンがクリックされると
<template>
タグの内容が表示されます。
<slot>
タグ
Header Content
Footer Content
1<template id="myElementTemplate">
2 <slot name="header">Default Header</slot>
3 <main>Default Content</main>
4 <slot name="footer">Default Footer</slot>
5</template>
6<my-element>
7 <p slot="header">Header Content</p>
8 <p slot="footer">Footer Content</p>
9</my-element>
10<script>
11 class MyElement extends HTMLElement {
12 constructor() {
13 super();
14 const shadow = this.attachShadow({ mode: 'open' });
15 shadow.innerHTML = document.getElementById('myElementTemplate').cloneNode(true).innerHTML;
16 }
17 }
18 customElements.define('my-element', MyElement);
19</script>
<slot>
タグは、Webコンポーネント内で親要素から渡されたコンテンツを表示するためのプレースホルダーとして機能します。- スロットに対応する内容が提供されない場合、フォールバックコンテンツ(
<slot>
タグ内に直接記述されたデフォルトの内容)が表示されます。
- スロットに対応する内容が提供されない場合、フォールバックコンテンツ(
- この例では、
<template>
要素内で、名前つきスロット(header
とfooter
)を定義しています。 <my-element>
はユーザーが定義したカスタムHTML要素です。この要素内の<p>
タグのslot
属性にスロット名を記述し、スロットに挿入するコンテンツを指定しています。
<dialog>
タグ
1<dialog id="exampleDialog">
2 <p>This is a dialog box.</p>
3 <button id="closeButton">Close</button>
4</dialog>
5
6<button id="openButton">Open Dialog</button>
7
8<script>
9 const dialog = document.getElementById('exampleDialog');
10 const openButton = document.getElementById('openButton');
11 const closeButton = document.getElementById('closeButton');
12
13 openButton.addEventListener('click', () => dialog.showModal());
14 closeButton.addEventListener('click', () => dialog.close());
15</script>
-
<dialog>
タグは、モーダルやポップアップなどの対話型ウィンドウを定義するために使用されます。JavaScriptを使うことで、開閉を制御できます。 -
この例では、「Open Dialog」ボタンがクリックされるとダイアログが表示されます。
<input>
タグのinputmode
属性
1<label for="phone">Phone Number:</label>
2<input type="text" id="phone" inputmode="tel" placeholder="Enter your phone number">
<input>
タグのinputmode
属性は、タッチデバイスで表示される仮想キーボードの種類を指定し、ユーザーエクスペリエンスを向上させます。たとえば、inputmode="tel"
は電話番号入力用の数字キーボードを表示します。inputmode
属性はあくまで仮想キーボードの表示を調整するためのもので、入力内容の検証は行いません。入力制限を行うには、type
属性や JavaScript での検証を行う必要があります。- すべてのブラウザやデバイスが完全にサポートしているわけではないため、適切なフォールバックを用意するのがベストです。
inputmode
属性には、次の値を指定できます。それぞれの値が特定の入力タイプや仮想キーボードを表示するために使われます。
値 | 説明 |
---|---|
none |
none は、仮想キーボードを非表示にします。 |
text |
text は、標準のテキスト入力用の仮想キーボードを表示します。 |
tel |
tel は、電話番号入力用の数字キーボードを表示します。 |
url |
url は、URL入力用の仮想キーボードを表示します。 |
email |
email は、Eメールアドレス入力用の仮想キーボードを表示します。 |
numeric |
numeric は、数字入力専用の仮想キーボードを表示します。 |
decimal |
decimal は、数値入力用の仮想キーボードを表示します。 |
search |
search は、検索入力用の仮想キーボードを表示します。 |
<meta>
タグのtheme-color
属性
1<meta name="theme-color" content="#4CAF50">
2<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
3<meta name="theme-color" content="#000000" media="(prefers-color-scheme: dark)">
<meta>
タグのtheme-color
属性は、対応するモバイルブラウザでアドレスバーやUIの色をカスタマイズするために使用されます。- 例えば、ダークモードとライトモードに対応させる場合、
media
属性を使って切り替えられます。
これらのタグや属性は、HTML5以降の進化によるものであり、モダンなWeb開発における重要な要素となっています。特定のブラウザサポートや互換性を確認しながら使用することをお勧めします。
YouTubeチャンネルでは、Visual Studio Codeを用いて上記の記事を見ながら確認できます。 ぜひYouTubeチャンネルもご覧ください。