CSS でウィジェットをスタイルする
ウィジェットは開いた shadow root の中でレンダリングし、あなた自身のページからそれをスタイルする 2 つの方法を渡します。シャドウパーツ(::part() で要素を対象にする)と CSS カスタムプロパティ(--cpt-skin-* で色を上書きする)です。色と文言には ホワイトラベル を選んでください(それはそのために作られていて、すべての埋め込みとともに旅します)。ページローカルな調整や、ホワイトラベルがカバーしないものが欲しいときに、ここの CSS の面に手を伸ばしてください。
これはウィジェットシェルだけです。ゲームは、あなたがページからスタイルできない、別のサンドボックス化されたフレームで動きます。
パーツを対象にする
要素のパーツを ::part(name) で選びます:
caputchin-widget::part(simple-checkbox) {
border-radius: 1rem;
}
caputchin-game::part(game-frame) {
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}いくつかの実践的な注意:
- shadow root は開いているので、あなたのページからの
::part()はすべての現代のブラウザで動きます。 - いくつかの構造的なパーツ(チェックボックスのコンテナ、ゲームフレーム)は、要素にインラインで適用された基本のレイアウトスタイルを運びます。それらのプロパティの 1 つを上書きするには
!importantが要ることがあります。インラインスタイルが通常の::part()ルールに優先するからです。テキストとブランドのパーツは、それなしできれいにスタイルできます。 - パーツがスタイルの面です。ウィジェットはその内部のクラス名を公開せず、それらは変わり得ます。シャドウツリーを掘るのではなく、パーツでスタイルしてください。
チェックボックスウィジェットのパーツ
これらは <caputchin-widget>(そして同じブランドブロックを再利用する <caputchin-game> のゲーム前のオーバーレイ)に現れます。
| パーツ | それは何か |
|---|---|
simple-checkbox | 外側のチェックボックスのコンテナ(枠線、背景、パディング)。 |
simple-shield-box | 検証の状態を示すシールドのインジケーター。 |
simple-shield-spinner | 検証中の、シールドの中のスピナーの弧。 |
simple-checkbox-label | 状態のテキスト(Verify、Verifying、Verified、Failed)。 |
simple-brand | ブランドブロック(ロゴ、名前、タグをまとめて)。 |
simple-brand-home | ロゴと名前を包む、home リンクを指すリンク。 |
simple-brand-logo | ブランドのロゴ画像。 |
simple-brand-name | ブランドのワードマークのテキスト。 |
simple-brand-tag | ブランドのタグライン、legal リンクを指すリンク。 |
ゲームウィジェットのパーツ
これらは <caputchin-game> に、サンドボックス化されたゲームフレームの周りに現れます。
| パーツ | それは何か |
|---|---|
game-frame | ゲームの周りのクロームのフレーム。 |
game-iframe-slot | ゲームのサンドボックス化された iframe を保持するスロット。 |
game-slot | ゲームがレンダリングするプロジェクションのコンテナ。 |
game-badge-slot | ゲームの下に示されるブランドのバッジ。 |
game-overlay-host | ゲーム前のオーバーレイのホスト(ゲームが始まる前に示されます)。 |
game-overlay-checkbox | そのオーバーレイのチェックボックス。 |
game-overlay-dialog | オーバーレイのダイアログ、modal と fullscreen のレイアウトで。 |
game-overlay-close | オーバーレイの close ボタン、modal と fullscreen のレイアウトでのみ。 |
色の変数
ウィジェットは、解決済みのシェルの色を、ホスト要素に --cpt-skin-<token> という名前の CSS カスタムプロパティとして書き込み、それ自身のスタイルがそれらを読みます。要素にプロパティを設定して、あなたのスタイルシートから 1 つの色を上書きできます:
caputchin-widget {
--cpt-skin-primary: #7c3aed !important;
--cpt-skin-surface_bg: #faf5ff !important;
}!important が大事です。ウィジェットはスキンを解決するときにこれらのプロパティをホストにインラインで設定し、インラインの値は通常のスタイルシートのルールに優先するので、素の上書きは無視されます。これらはシェルの色だけです。フレームの中のゲームには届きません。
これはページローカルな避難ハッチです。すべての埋め込みにわたって色を変えるには、代わりに ホワイトラベルでスキン を設定してください。同じトークン名を使います。
| 変数 | 何を色づけるか |
|---|---|
--cpt-skin-primary | 主要なアクションの色:アクティブなシールド、フォーカスリング、検証済みの状態。 |
--cpt-skin-primary_hover | 主要な色のホバーの変種。 |
--cpt-skin-surface_bg | ウィジェットの背景。 |
--cpt-skin-text_primary | 主要なテキスト。 |
--cpt-skin-text_label | 状態のラベルのテキスト(Verify、Verifying など)。 |
--cpt-skin-text_muted | ブランドのタグを含む、二次的なテキスト。 |
--cpt-skin-text_passive | ウィジェットが待つ間のシールドのアウトライン。 |
--cpt-skin-separator | コンパクトなレイアウトでのブランドの部品の間のセパレーター。 |
--cpt-skin-border | ウィジェットの枠線。 |
--cpt-skin-glyph | シールドの中に描かれるチェックかアラートのグリフ。 |
--cpt-skin-error | エラー状態の色。 |
--cpt-skin-shadow | ウィジェットのドロップシャドウ。 |
--cpt-skin-modal_backdrop | modal レイアウトのゲームオーバーレイの背後の背景。 |
--cpt-skin-fullscreen_backdrop | fullscreen レイアウトのゲームオーバーレイの背後の背景。 |
--cpt-skin-close_btn_bg | fullscreen オーバーレイの close ボタンの背景。 |
--cpt-skin-brand_text | ブランドリンクのテキストの色。 |
--cpt-skin-brand_text_hover | ホバー時のブランドリンクの色。 |
ブランドのロゴは別のスキントークン(色ではなく画像)なので、CSS ではなく ホワイトラベル で入れ替えます。同じトークン名と、そのライトとダークの既定は スキーマリファレンス にあります。
これらの --cpt-skin-* 変数は ウィジェットシェル のスキンだけを運びます。ゲーム は、そのコードに渡される値として自身のスキンを受け取ります(CSS 変数としてではなく、ゲームをあなたのページからはスタイルできません)。ゲームのスキンをカスタマイズする を参照してください。
あわせて読む
- ウィジェットをホワイトラベルする:文言、色、リンクを、サポートされた方法で変える。
- ウィジェットが言語とスキンをどう解決するか:あなたがスタイルする前にシェルがレンダリングするもの。
- 私たちの哲学:なぜこのスタイルの面が開いていて、すべてのプランで無料か。