Autonomous custom elements
:defined は CSS の擬似クラスで、定義されているすべての要素を表します。これにはブラウザーに組み込まれたすべての標準要素と、 (CustomElementRegistry.define() メソッドを使用して) 定義に成功したカスタム要素が含まれます。
css
/* 定義されたすべての要素を選択 */ :defined { font-style: italic; }
/* 特定の custom 要素のすべてのインスタンスを選択 */ custom-element:defined { display: block; }
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 54 | 79 | 63 | 10 | 54 | 10 | |
| DOM API | ||||||
| CustomElementRegistry インターフェイスは、カスタム要素の登録と、登録された要素を照会するためのメソッドを提供します。このインスタンスを取得するには、window.customElements プロパティを使用してください。 | 54 | 79 | 63 | 10.1 | 54 | 10.3 |
| define() は CustomElementRegistry インターフェイスのメソッドで、新しいカスタム要素を定義します。 | 54 | 79 | 63 | 10.1 | 54 | 10.3 |
define (disabledFeatures static property) 「disabledFeature」静的プロパティをサポートします | 77 | 79 | 92 | | 77 | |
| get() は CustomElementRegistry インターフェイスのメソッドで、以前定義したカスタム要素のコンストラクターを返します。 | 54 | 79 | 63 | 10.1 | 54 | 10.3 |
| CustomElementRegistry インターフェイスの getName() メソッドは、以前に定義されたカスタム要素の名前を返します。 | 117 | 117 | 116 | 17 | 117 | 17 |
| upgrade() は CustomElementRegistry インターフェイスのメソッドで、 Node サブツリー内のすべてのシャドウを含むカスタム要素を、メイン文書に接続する前であってもアップグレードします。 | 68 | 79 | 63 | 12.1 | 68 | 12.2 |
| whenDefined() は CustomElementRegistry インターフェイスのメソッドで、指定した名前の要素が定義されたときに解決されるプロミス (Promise) を返します。 | 54 | 79 | 63 | 10.1 | 54 | 10.3 |
| customElements は Window インターフェイスの読み取り専用プロパティで、 CustomElementRegistry オブジェクトへのリファレンスを返します。これにより、新しいカスタム要素を登録したり、以前に登録したカスタム要素に関する情報を取得したりすることができます。 | 54 | 79 | 63 | 10.1 | 54 | 10.3 |
- このブラウザでは部分的にしか実装されていません
- 「自律カスタム要素」はサポートされますが、「カスタマイズされた組み込み要素」はサポートされません。 バグ 182671 を参照してください。
- このブラウザでは部分的にしか実装されていません
- 「自律カスタム要素」はサポートされますが、「カスタマイズされた組み込み要素」はサポートされません。 バグ 182671 を参照してください。
- このブラウザでは部分的にしか実装されていません
- 「自律カスタム要素」はサポートされますが、「カスタマイズされた組み込み要素」はサポートされません。
- このブラウザでは部分的にしか実装されていません
- 「自律カスタム要素」はサポートされますが、「カスタマイズされた組み込み要素」はサポートされません。
基本構文
class MyCard extends HTMLElement {
connectedCallback() {
this.innerHTML = `<div class="card">${this.getAttribute('title')}</div>`;
}
}
customElements.define('my-card', MyCard); ライブデモ
実務での使いどころ
-
フレームワーク非依存のUIコンポーネント作成
React、Vue、Angularなどのフレームワークに依存しない再利用可能なUI部品を作成し、異なるプロジェクトで共有できます。
注意点
- カスタム要素名には必ずハイフンを含める必要があります(例: my-element)。ハイフンなしの名前は将来のHTML標準要素との衝突を避けるため使用できません。
アクセシビリティ
- カスタム要素にはデフォルトのARIAロールがないため、適切なrole属性やaria-*属性を明示的に設定し、支援技術がコンポーネントの目的を理解できるようにしてください。