検索
ホームページウェブフロントエンドCSSチュートリアルフレームワークに依存しないコンポーネントベースのUXライブラリであるShoelaceの紹介

Introducing Shoelace, a Framework-Independent Component-Based UX Library

この記事では、Cory Laviskaが作成したコンポーネントライブラリであるShoelaceを紹介しますが、ユニークです。タグ、モーダルボックス、アコーディオン、オートコンプリートなど、すべての標準のUXコンポーネントを定義します。これらのコンポーネントは箱から出しており、美しく、使いやすく、完全にカスタマイズ可能です。ただし、これらのコンポーネントは、React、Solid、またはSvelteなどのフレームワークを使用していませんが、Webコンポーネントを使用できます。

準備

Webコンポーネントは素晴らしいですが、現時点では注意を払うべきいくつかの小さな問題がまだあります。

反応

以前には、JavaScriptフレームワークで使用できると言ったことがありますが、Webコンポーネントに対するReactのサポートが現在貧弱である前にも書いています。この問題を解決するために、ShoelaceはReactのために特別にラッパーを作成しました。

私が個人的に好むもう1つのオプションは、Webコンポーネントのタグ名とそのすべてのプロパティを受け入れる軽量のReactコンポーネントを作成し、Reactの欠点を処理することです。このオプションについては、以前の投稿で説明しました。このスキームは、削除するように設計されているため、私はこのスキームが好きです。 Reactの実験ブランチは、Webコンポーネントの相互運用性の問題を解決したため、公開されると、使用される軽量のWebコンポーネントの相互運用性コンポーネントを検索および削除でき、Reactラッパーなしで直接Webコンポーネントの使用を残します。

サーバーサイドレンダリング(SSR)

この記事の執筆時点では、SSRのサポートも貧弱です。理論的には、SSRを実装できる宣言的シャドウDOM(DSD)と呼ばれる手法があります。ただし、ブラウザのサポートは限られており、DSDは実際に

サーバーサポートを適切に動作させる必要があります。つまり、次にリミックス、またはサーバーで使用するその他のツールには、特別な処理能力が必要です。

つまり、SSRの次のようなツールを使用するWebアプリケーションでWebコンポーネントを「適切に動作させる」他の方法があります。要するに、タグを解析する前に、Webコンポーネントを登録するスクリプトをブロックスクリプトで実行する必要があります。しかし、これは別の投稿の主題になります。

もちろん、あらゆるタイプのクライアントレンダリングスパを構築している場合、これは問題ではありません。これがこの投稿で使用するものです。 start

この投稿にShoelaceとそのWebコンポーネント機能に焦点を当てたいので、すべてにSvelteを使用します。また、このstackblitzプロジェクトを使用してデモンストレーションします。このデモを段階的に組み立てますが、いつでもREPLを開いて最終結果を確認できます。

shoelaceの使用方法と、さらに重要なことには、カスタマイズする方法を紹介します。シャドウドムと、それらがブロックする外部スタイル(およびどのスタイルがブロックされていないか)について説明します。また、

CSSセレクター(真新しいかもしれませんが、Shoelaceがさまざまなアニメーションを上書きしてカスタマイズする方法についても説明します。

この記事を読んだ後にShoelaceを楽しんでいて、Reactプロジェクトで試してみたい場合は、私の提案は私の紹介で言及されたラッパーを使用することです。これにより、Shoelaceの任意のコンポーネントを使用でき、Reactが既に持っているWebコンポーネントの修正を解放すると、完全に削除できます(バージョン19で見つける)。

shoelaceはじめに

Shoelaceには、詳細なインストール手順があります。最も簡単な方法は、HTMLドキュメントに<script></script>および<link>タグを追加することです。それだけです。ただし、生産アプリケーションの場合、必要なものを選択的にインポートするだけで、それに応じて指示もあります。

shoelaceをインストールした後、いくつかのコンテンツをレンダリングするためのスベルトコンポーネントを作成してから、完全にカスタマイズする手順を実行しましょう。より複雑なコンテンツを選択するために、タグとダイアログ(しばしばモーダルボックスと呼ばれる)コンポーネントを使用しました。主にドキュメントから来るいくつかのタグは次のとおりです。

<sl-tab-group>
  <sl-tab panel="general" slot="nav">General</sl-tab>
  <sl-tab panel="custom" slot="nav">Custom</sl-tab>
  <sl-tab panel="advanced" slot="nav">Advanced</sl-tab>
  <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab>
  <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel>
  <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel>
  <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel>
  <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel>
</sl-tab-group>
<sl-dialog label="Dialog" no-header="">
  Hello World!
  <sl-button> open = false}>Close</sl-button>
</sl-dialog>
<br><br>
<button> open = true}>Open Dialog</button>
これにより、美しくスタイルのラベルが表示されます。アクティビティタグのアンダースコアは、アニメーション化され、あるアクティビティタグから次のアクティビティタグにスライドします。

ShoelaceのWebサイトで詳細に文書化されている各APIの詳細を説明する時間を無駄にしません。代わりに、これらのWebコンポーネントをやり取りし、完全にカスタマイズする最善の方法を見てみましょう。

APIとの対話:メソッドとイベント

Webコンポーネントの呼び出しメソッドとサブスクリプションイベントは、慣れている通常のフレームワークとはわずかに異なる場合がありますが、これはそれほど複雑ではありません。それを行う方法を見てみましょう。

タグ

タグコンポーネント(

)には、特定のタグを手動で表示する<sl-tab-group></sl-tab-group>メソッドがあります。それを呼び出すには、タグの基礎となるDOM要素にアクセスする必要があります。 Svelteでは、これはshowを使用することを意味します。 Reactでは、Refになります。等Svelteを使用しているので、タグインスタンス変数を宣言しましょう。 bind:this

…そしてそれをバインドします:
let tabs;

これで、ボタンを追加して呼び出すことができます:
<sl-tab-group bind:this="{tabs}"></sl-tab-group>

同じことが

イベントにも当てはまります。新しいタグが表示されると、
<button on:click="{()"> tabs.show("custom")}>Show custom</button>
イベントがトリガーされます。 変数にsl-tab-showを使用できます。 tabs addEventListener on:event-nameこれは、異なるタグが表示されたときにイベントオブジェクトを機能させ、ログにします。
<sl-tab-group bind:this="{tabs}" on:sl-tab-show="{e"> console.log(e)}></sl-tab-group>
通常、タグをレンダリングしてユーザーの間をクリックしてもらい、通常、この作業は必要ありませんが、必要な場合はそこにあります。次に、ダイアログコンポーネントをインタラクティブにしましょう。

ダイアログ

ダイアログコンポーネント(

)は、ダイアログボックスが開いているかどうかを制御するA
<sl-tab-group>
  <sl-tab panel="general" slot="nav">General</sl-tab>
  <sl-tab panel="custom" slot="nav">Custom</sl-tab>
  <sl-tab panel="advanced" slot="nav">Advanced</sl-tab>
  <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab>
  <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel>
  <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel>
  <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel>
  <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel>
</sl-tab-group>
<sl-dialog label="Dialog" no-header="">
  Hello World!
  <sl-button> open = false}>Close</sl-button>
</sl-dialog>
<br><br>
<button> open = true}>Open Dialog</button>
また、ダイアログボックスを隠すためのイベントもあります。ユーザーがクリックしてダイアログコンテンツの外側で閉じたときに、

プロパティを渡して非表示のイベントにバインドしましょう。クリックハンドラーをその閉じるボタンに追加して、sl-hideプロパティをfalseに設定しましょう。これもダイアログを閉じます。 open open

最後に、[開く]ダイアログボタンを接続しましょう:
let tabs;

それだけです。コンポーネントライブラリのAPIとの相互作用は、多かれ少なかれ直接的です。この記事がこれのみを行う場合、それは非常に退屈です。
<sl-tab-group bind:this="{tabs}"></sl-tab-group>

しかし、靴棚 - ウェブコンポーネントで構築された - は、何か、特にスタイルが私たちが慣れているものとは少し異なる動作をすることを意味します。

すべてのスタイルをカスタマイズしてください!

執筆時点では、Shoelaceはまだベータ版であり、作成者はいくつかのデフォルトスタイルの変更を検討しており、いくつかのデフォルトスタイルを完全に削除して、ホストアプリケーションのスタイルを上書きしなくなります。とにかく紹介する概念は関連していますが、私が言及した靴ひもの詳細のいくつかがあなたがそれを使用するときに異なる場合でも驚かないでください。

Shoelaceのデフォルトスタイルは優れていますが、Webアプリケーションには独自のデザインがあり、UXコンポーネントがそれに一致することを願っています。 Webコンポーネントの世界でこれを行う方法を見てみましょう。

私たちは実際に何でも改善しようとはしていません。 Shoelaceの作成者は、私よりもデザインが優れています。代わりに、自分のWebアプリケーションに適応できるように、

スタッフを変更する方法を検討します。

シャドウdom をクイックビュー devtoolsのタグタイトルの1つを表示します タグ要素​​は、

および

クラスと

を備えたdivコンテナを作成し、そのタグに入力したテキストも表示します。ただし、

シャドウルート

内にあることに注意してください。これにより、Webコンポーネントの著者は、Webコンポーネントに独自のタグを追加することができ、提供するものを配置する場所も提供できます。

要素に注意してください。これは基本的に、「ユーザーがWebコンポーネントのタグ間でレンダリングするものを.tab unter.tab--active」とすることを意味します。 tabindex したがって、コンポーネントはシャドウルートを作成し、それに何かを追加して、素敵なスタイルのラベルタイトルと、コンテンツをレンダリングするプレースホルダー(<slot></slot>)をレンダリングします。 パッケージングスタイル

Web開発における古典的でイライラする問題は、常にそれらが表示されたくないスタイルのカスケードでした。 <sl-tab></sl-tab>のようなものを指定するアプリケーションのスタイルルールは、これらのタグを妨害することを心配するかもしれません。これは問題ではないことがわかります。影のルートの外側のスタイルは、影のルートの内側にあるものには影響しません(後で説明する場合があります)、逆も同様です。 <slot></slot>これの例外は継承可能なスタイルです。もちろん、Webアプリケーション内のすべての要素に

スタイルを適用する必要はありません。代わりに、前回font-familyまたは:rootを指​​定して、その下のすべてを継承させることができます。この継承は、実際にシャドウルートに浸透します。 html font-familyCSSカスタムプロパティ(一般に「CSS変数」と呼ばれる)は、関連する例外です。シャドウルートは、シャドウルートの外で定義されているCSSプロパティを間違いなく読み取ることができます。

selector

::part継承されていないスタイルはどうですか?シャドウルートの内部(継承しない

など)の内部に何かをカスタマイズしたい場合、私たちは不運ですか?私たちはしなかったことがわかります。上記のラベル要素イメージとその影のルートをもう一度チェックしてください。 divの

属性に注意してください。これにより、セレクターを使用して、影のルートの外側から要素を見つけてスタイルできます。段階的に例を紹介します。 cursor靴ひもスタイルを上書きpart ::partこれらの方法の実用的なアプリケーションを見てみましょう。現在のところ、多くの靴ひもスタイル(フォントを含む)は、CSSカスタムプロパティからデフォルト値を受け取ります。これらのフォントをアプリケーションのスタイルに合わせるには、関連するカスタムプロパティをオーバーライドします。 CSS変数Shoelaceが使用しているドキュメントを参照してください。または、Devtoolsの任意の要素のスタイルを単純に確認できます。

シャドウルートを介してスタイルを継承します

stackblitzプロジェクトのSRCディレクトリでapp.cssファイルを開きます。下部のセクションには、ステートメントが表示されます。

属性は継承可能であるため、

などの新しい値を設定してみてください。保存後、それに応じてすべてのコンテンツ(Shadow Rootで定義されたタグタイトルを含む)は調整されます。

Shoelace CSS変数を上書き:root letter-spacing: normal;letter-spacingコンポーネントは、アクティブタグのアンダースコア用のa 2px cssカスタムプロパティを読み取ります。基本的なCSSを使用してオーバーライドできます。

それだけです、緑色のインジケーターがあります!

お問い合わせパート

<sl-tab-group></sl-tab-group>現在使用している靴ひもバージョン(2.0.0-beta.83)では、障害のないタグにはポインターカーソルがあります。アクティブ(選択された)タグのデフォルトカーソルに変更しましょう。タグタイトルのコンテナに--indicator-color要素が

属性を追加するのを見てきました。さらに、現在選択されているタグは
<sl-tab-group>
  <sl-tab panel="general" slot="nav">General</sl-tab>
  <sl-tab panel="custom" slot="nav">Custom</sl-tab>
  <sl-tab panel="advanced" slot="nav">Advanced</sl-tab>
  <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab>
  <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel>
  <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel>
  <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel>
  <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel>
</sl-tab-group>
<sl-dialog label="Dialog" no-header="">
  Hello World!
  <sl-button> open = false}>Close</sl-button>
</sl-dialog>
<br><br>
<button> open = true}>Open Dialog</button>
属性を受信します。これらの事実を使用してアクティブなタグを見つけてカーソルを変更しましょう:

それだけです!

カスタムアニメーション

ケーキにアイシングを追加するには、Shoelaceがアニメーションをカスタマイズする方法を見てみましょう。 ShoelaceはWeb Animations APIを使用し、A APIを公開して、さまざまな要素がさまざまなインタラクションをアニメーション化する方法を制御します。詳細については、ドキュメントを参照してください。たとえば、Shoelaceのデフォルトのダイアログアニメーションを展開して内側に縮小してから、トップアニメーションから入り、非表示になったときに下向きに移動する方法をご覧ください。 setDefaultAnimation

<sl-tab-group>
  <sl-tab panel="general" slot="nav">General</sl-tab>
  <sl-tab panel="custom" slot="nav">Custom</sl-tab>
  <sl-tab panel="advanced" slot="nav">Advanced</sl-tab>
  <sl-tab disabled panel="disabled" slot="nav">Disabled</sl-tab>
  <sl-tab-panel name="general">This is the general tab panel.</sl-tab-panel>
  <sl-tab-panel name="custom">This is the custom tab panel.</sl-tab-panel>
  <sl-tab-panel name="advanced">This is the advanced tab panel.</sl-tab-panel>
  <sl-tab-panel name="disabled">This is a disabled tab panel.</sl-tab-panel>
</sl-tab-group>
<sl-dialog label="Dialog" no-header="">
  Hello World!
  <sl-button> open = false}>Close</sl-button>
</sl-dialog>
<br><br>
<button> open = true}>Open Dialog</button>
このコードは、app.svelteファイルにあります。元のデフォルトアニメーションを確認するためにコメントしてください。

要約

Shoelaceは、Webコンポーネントを使用して構築された非常に野心的なコンポーネントライブラリです。 Webコンポーネントはフレームワークフリーであるため、プロジェクトの任意のフレームワークとともに使用できます。新しいフレームワークが驚くべきパフォーマンスの機能と使いやすさを示し始めると、どちらのフレームワークにもバインドされていない高品質のユーザーエクスペリエンスコンポーネントを使用できることは、これまで以上に魅力的です。

以上がフレームワークに依存しないコンポーネントベースのUXライブラリであるShoelaceの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
CSSグリッドとは何ですか?CSSグリッドとは何ですか?Apr 30, 2025 pm 03:21 PM

CSSグリッドは、複雑で応答性の高いWebレイアウトを作成するための強力なツールです。設計を簡素化し、アクセシビリティを向上させ、古い方法よりも多くの制御を提供します。

CSS Flexboxとは何ですか?CSS Flexboxとは何ですか?Apr 30, 2025 pm 03:20 PM

記事では、レスポンシブデザインにおけるスペースの効率的なアラインメントと分布のためのレイアウト方法であるCSS FlexBoxについて説明します。 FlexBoxの使用量を説明し、CSSグリッドと比較し、ブラウザのサポートを詳細に説明します。

CSSを使用してWebサイトを応答するにはどうすればよいですか?CSSを使用してWebサイトを応答するにはどうすればよいですか?Apr 30, 2025 pm 03:19 PM

この記事では、ビューポートメタタグ、柔軟なグリッド、流体メディア、メディアクエリ、相対ユニットなど、CSSを使用してレスポンシブWebサイトを作成するための手法について説明します。また、CSSグリッドとフレックスボックスを使用してカバーし、CSSフレームワークを推奨しています

CSSボックスサイズのプロパティは何をしますか?CSSボックスサイズのプロパティは何をしますか?Apr 30, 2025 pm 03:18 PM

この記事では、要素の寸法の計算方法を制御するCSSボックスサイズのプロパティについて説明します。コンテンツボックス、ボーダーボックス、パディングボックスなどの値と、レイアウト設計とフォームアライメントへの影響について説明します。

CSSを使用してアニメーション化するにはどうすればよいですか?CSSを使用してアニメーション化するにはどうすればよいですか?Apr 30, 2025 pm 03:17 PM

記事では、CSS、キープロパティ、およびJavaScriptとの組み合わせを使用してアニメーションの作成について説明します。主な問題は、ブラウザの互換性です。

CSSを使用してプロジェクトに3D変換を追加できますか?CSSを使用してプロジェクトに3D変換を追加できますか?Apr 30, 2025 pm 03:16 PM

記事では、3D変換、主要なプロパティ、ブラウザの互換性、およびWebプロジェクトのパフォーマンスに関する考慮事項にCSSを使用して説明します。

CSSに勾配を追加するにはどうすればよいですか?CSSに勾配を追加するにはどうすればよいですか?Apr 30, 2025 pm 03:15 PM

この記事では、CSSグラデーション(線形、放射状、繰り返し)を使用して、ウェブサイトのビジュアルを強化し、深さ、フォーカス、および現代の美学を追加します。

CSSの擬似要素とは何ですか?CSSの擬似要素とは何ですか?Apr 30, 2025 pm 03:14 PM

記事では、CSSの擬似要素、HTMLスタイリングの強化における使用、および擬似クラスとの違いについて説明します。実用的な例を提供します。

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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

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

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。