検索
ホームページウェブフロントエンドCSSチュートリアルさまざまなコンテキスト用にWebコンポーネントを作成します

さまざまなコンテキスト用にWebコンポーネントを作成します

この記事は、Webコンポーネントの構築方法に関するものではなく、最近Caleb Williamsが詳細なガイドを作成しました。それらの使用方法、構築する際にどのような要因を考慮する必要があるか、およびプロジェクトでそれらを効果的に利用する方法について説明しましょう。

Webコンポーネントを初めて使用する場合、Caleb's Guideは読む価値がありますが、すぐに開始するのに役立つリソースをいくつか紹介します。

  • Webコンポーネント - 「正しい」アプローチ
  • Shadow Dom V1:自己完結型のWebコンポーネント
  • MDNのWebコンポーネント
  • 素晴らしいWebコンポーネント
  • 推奨されるオープンWebコンポーネント

Webコンポーネントが広くサポートされており(舞台裏の多くのハードワークのおかげで)、エッジがまもなくクロムプラットフォームに切り替わることを考慮して、人々は現在、Webコンポーネントを「ネイティブ」でプラットフォーム互換のUIコンポーネントと見なし、設計システムとWebプロジェクト間の一貫性を維持しながら、シャドードームのパンを覆い、コンポーネントをカプセル化します。

これは正しいことも間違っています。しかし、最初に、抽象的なレイヤーの三角形を見てみましょう。

抽象レイヤーの三角形

技術的には、Webコンポーネントをお気に入りのマークアップ言語HTML(はい!)の拡張と見なす必要があります。 WebコンポーネントAPIを使用すると、HTMLには存在しないカスタムHTML要素を作成できます(たとえば<foo-bar></foo-bar>)。

Webコンポーネントは基本的に新しいHTML要素であると言う人もいるので、それらをHTML仕様の一部として考慮する必要があるため、そのパラダイム、コア概念、および使用法に従う必要があります。これらすべてのポイントを想定すると、コンポーネントは、HTML、CSS、およびJavaScriptと並んで、Webプラットフォームスタックの最低レベルで存在することがわかります。フレームワークとライブラリ(React、Vue、Angular、Sveltejsなど)は、抽象化層で動作し、ステンシルジ、ハイブリッド、点灯などの「中つ国」のある種のツールの上に座ります。これらの抽象化レイヤーの下で、基本的なWebテクノロジーとネイティブWebコンポーネントを見つけることができます。この概念を表すために、 alt抽象化la ayer t rianger)図を使用できます。

なぜこれが重要なのですか?ネイティブコンポーネントの上に存在するレイヤーを視覚化し、それらの使用環境を理解して、意図した環境に対して構築できるようにするのに役立ちます。環境は何ですか?それが私たちの目標です。

同じ技術、異なる環境

Shadow Domは、WebコンポーネントAPIの重要な要素です。これにより、JavaScriptとCSSをカスタム要素にバンドルして、明示的に許可しない限り、外部の干渉とスタイルの操作を防ぐことができます。開発者は実際に、モニカ・ディンクレスクが良い紹介をしている:: partおよび:: theme pseudo-elementsだけでなく、カスタムプロパティやテーマの概要など、外部CSSがシャドウルートとコンポーネントに漏れることを許可する方法に従うことができます。

考慮すべきもう1つのことは、私たちが使用している環境です。個人的にWebコンポーネントを構築してから3年後、2つの環境を特定できます:プライベート環境(設計システムなど)と標準環境(カスタムスタイルなしのプレーンHTML、CSS、JavaScriptなど)。

コンポーネントを設計する前に、それらがどのように使用されるかを理解する必要があるため、環境タイプを決定することがこのすべての鍵です。最も簡単な方法は、1つの環境のみをターゲットにすることですが、小さなCSSトリックを使用すると、両方のコンポーネントを構築できます。

深く掘り下げる前に、2つの環境の違いを見てみましょう。

プライベート環境

プライベート環境は、コンポーネントを独自のスタイルを提供する閉鎖エコシステムであり、そのまま使用する必要があります。したがって、特定のスタイルガイドまたは設計システムからコンポーネントのライブラリを構築している場合、各コンポーネントはカスタムスタイルを反映しているため、必要なときにエンコードする必要はありません。

JavaScriptロジックにも同じことが言えます。たとえば、閉じた影の根を取り付けて、他の人がQuerySelectorで影の境界を誤って貫通するのを防ぐことができます。したがって、任意のコンポーネントを選択して使用して、スタイルの矛盾やCSS競合などの問題を回避できます。著者として、特定のユースケースのコンポーネントのスタイルを使用するために使用できるCSSカスタムプロパティ(または::パーツ)のセットを定義することもできますが、これはシステムを設計することではありません。

これは、プライベート環境でWebコンポーネントを使用する例です。そのすべてのスタイルとロジックは、そのShadow-Rootに含まれており、任意のページに単純に追加できます。

この例とその後の例は、デモンストレーションのみを目的としており、アクセシビリティやその他の最適化などの重要な状況を考慮していないため、生産環境向けではありません。

プライベート環境のコンポーネントは、その環境以外ではめったに使用されません。たとえば、(独自の強制スタイルを使用して)設計システムから要素を取得しようとすると、プロジェクトに追加してカスタマイズすることを期待することはできません。 Bootstrapがあなたの好みに応じてテーマをセットアップしてカスタマイズする方法を知っていますか?これは正反対です。これらのコンポーネントは、環境で、そして環境でのみ実行することを目的としています。

標準環境

標準環境はおそらく最も複雑なコンポーネントタイプです。これは、環境がVUEなどの成熟したフレームワークから、プレーンネイティブHTMLに反応する可能性があるだけでなく、誰もがそのコンポーネントを他の要素であるかのように使用できるはずです。

たとえば、コンポーネントが公開されている場合(NPMに追加するなど)、それを使用する人は、少なくともある程度カスタマイズできると予想されます。

独自のデモスタイルのHTML要素を知っていますか?要素はCSSを明示的に使用する必要があるため、答えは「いいえ」でなければなりません。標準環境で作成されたWebコンポーネントにも同じことが言えます。単一のWebコンポーネントは、クラスとプロパティ、またはその他の方法を追加してカスタマイズできる必要があります。

これは、閉じた環境の例で見られるものと同じです<todo-list></todo-list>要素ですが、標準環境向けに設計されています。シャドウルートにデモスタイルはありません。実際、その機能を確保するために必要なロジックと基本的なCSSのみが含まれています。それ以外の場合は、標準のHTML要素(divなど)のようにカスタマイズできます。

各環境で表示される2つの例は、同じコンポーネントを使用して作成されました。違いは、標準環境のコンポーネントを外部CSSを使用してカスタマイズおよび選択できることです。

Webコンポーネントと構成

OK、したがって、Webコンポーネントを使用することは、実際にはプレーンHTMLを使用することと同じですが、私たちが見ることができるように、特定のコンテンツのパラダイムと原則に従うことは非常に重要です。注意する必要があるのは、Webコンポーネントの組み合わせです。

Google Webファンダメンタルズが説明するように:

組み合わせは、Shadow Domの最も知られていない機能の1つですが、間違いなく最も重要な機能です。

Web開発の世界では、構成はHTMLを使用して宣言的にアプリケーションを構築する方法です。異なるビルディングブロック(<div> 、<code><s></s><em></em><strong></strong> )まとめてアプリケーションを形成します。これらのタグの一部は、互いに使用することさえできます。組み合わせが理由です<select></select><details></details><summary></summary>そして<video></video>そのようなネイティブ要素が非常に柔軟である理由。各タグは、特定のHTMLを子要素として受け入れ、それらに対していくつかの特別な手術を実行します。例えば、<select></select>方法を知っています<option></option>そして<optgroup></optgroup>ドロップダウンリストとマルチセレクトウィジェットとしてレンダリングされます。<details></details>要素はそうします<summary></summary>拡張可能な矢印として提示されます。平<video></video>また、特定の子供の要素に対処する方法を知っています。<track></track>要素はレンダリングされませんが、ビデオの動作に影響します。なんて素晴らしい!構成は、HTMLを使用するときに通常行うことです。 Webコンポーネントは、DOM参照(論理コンテナではなく)を備えたHTML要素にすぎないため、コンビネーションとサブコンポーネントを構築するために組み合わせに依存する必要があります。あなたが考慮するなら

    そして<select></select>、これらの要素を宣言的に組み合わせて最終出力を取得することに気付き、メインコンポーネント( [readonly]など)または子コンポーネント( [selected]など)に使用できる特定のプロパティがあります。 Webコンポーネントにも同じことが言えます。カスタムリストを作成する場合は、メインコンポーネントの構築を検討してください。<custom-list></custom-list> )およびサブコンポーネント(<custom-li></custom-li> )。使用<slot></slot>要素では、子要素が配置される場所と、子要素が渡されないときに表示されるプレースホルダーコンテンツを定義できます。

    Webコンポーネントとアクセシビリティ

    考慮すべきもう1つのことは、アクセシビリティの「小さな」テーマと呼ばれるものです。まったく新しいHTML要素を作成しているため、基本的なセマンティックロール、キーボードナビゲーション、およびモーションの削減やコントラスト設定の高さなどのユーザーのオペレーティングシステムの設定を提供するために、要素のアクセシビリティを考慮する必要があります。

    アクセス可能で包括的なコンポーネントを構築するための参照、セマンティックタグの定義方法、および基本的なキーボードナビゲーションを実装する方法として、次のリソースを強くお勧めします。

    • 包括的コンポーネント
    • web.devの「すべての人に効果」
    • ワイアリアクリエイティブプラクティス
    • webaim wcagチェックリスト

    結論は

    WebコンポーネントはWeb開発における新たなテクノロジーであるため、目的の使用または最大化に基づいてそれらを構築することに関して、明確に定義されたベストプラクティスはありません。あなたがそれらを使用していることに気付いたとき、あなたがこの投稿から得るかもしれない唯一のことは、それらが閉じた環境であるか標準環境であるかを検討し、自問することです。

    • Whoはこのコンポーネントを使用しますか?
    • この人はそれをカスタマイズする必要があるはずですか
    • このコンポーネントは、すべての人に適していますか、それとも特定の視聴者に適していますか

以上がさまざまなコンテキスト用にWebコンポーネントを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
カーソルの次のレベルCSSスタイリングカーソルの次のレベルCSSスタイリングApr 23, 2025 am 11:04 AM

CSSを備えたカスタムカーソルは素晴らしいですが、JavaScriptを使用して次のレベルに物事を引き出すことができます。 JavaScriptを使用して、カーソル状態間で移行し、カーソル内に動的テキストを配置し、複雑なアニメーションを適用し、フィルターを適用できます。

Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Apr 23, 2025 am 10:42 AM

2025年には、互いに互いに跳ね返る要素を伴うインタラクティブなCSSアニメーションは、CSSにPongを実装する必要はありませんが、CSSの柔軟性とパワーの増加はLee&#039;の疑いを補強します。

UI効果にCSSバックドロップフィルターを使用しますUI効果にCSSバックドロップフィルターを使用しますApr 23, 2025 am 10:20 AM

CSSバックドロップフィルタープロパティを使用してユーザーインターフェイスをスタイルするためのヒントとコツ。バックドロップフィルターを複数の要素間でレイヤー化する方法を学び、それらを他のCSSグラフィカル効果と統合して、精巧なデザインを作成します。

微笑んでいますか?微笑んでいますか?Apr 23, 2025 am 09:57 AM

まあ、SVG&#039;の組み込みのアニメーション機能は、計画どおりに非推奨されることはありませんでした。確かに、CSSとJavaScriptは負荷を運ぶことができる以上のものですが、以前のようにSmilが水中で死んでいないことを知っておくのは良いことです

「かわいい」は見る人の目にあります「かわいい」は見る人の目にありますApr 23, 2025 am 09:40 AM

イェーイ、テキストワラップのジャンプを見てみましょう:サファリテクノロジーのプレビューにかなり着陸してください!しかし、それがChromiumブラウザーでの仕組みとは異なることに注意してください。

CSS-Tricks XLIIIを記録しますCSS-Tricks XLIIIを記録しますApr 23, 2025 am 09:35 AM

このCSS-Tricksアップデートは、アルマナック、最近のポッドキャスト出演、新しいCSSカウンターガイド、および貴重なコンテンツを提供するいくつかの新しい著者の追加の大幅な進歩を強調しています。

Tailwind&#039;の@Apply機能は、響きよりも優れていますTailwind&#039;の@Apply機能は、響きよりも優れていますApr 23, 2025 am 09:23 AM

ほとんどの場合、人々はTailwind&#039;の@Apply機能を紹介します。このように展示されたとき、@Applyはまったく有望な音をしません。だからobvio

私はリリースがないように感じます:正気な展開への旅私はリリースがないように感じます:正気な展開への旅Apr 23, 2025 am 09:19 AM

馬鹿のように展開することは、展開に使用するツールと複雑さの報酬と複雑さの減少との間の不一致になります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!