検索
ホームページウェブフロントエンドCSSチュートリアルCSSシャドウパーツを備えたシャドウドムのスタイリング 

CSSシャドウパーツを備えたシャドウドムのスタイリング 

Safari 13.1は、CSSシャドウパーツのサポートを導入しました。つまり::part()セレクターは、Chrome、Edge、Opera、Safari、およびFirefoxによってサポートされていることを意味します。この記事では、その用途を調査し、Shadow Domのパッケージ機能を最初に確認します。

Shadow Domパッケージの利点

Giffgaffでは、さまざまな方法でさまざまな人々によって書かれた大量のCSSコードがあります。これがもたらす問題を見てみましょう。

紛争の命名

クラス名の競合は、CSSで発生する傾向があります。開発者は、 .priceというクラス名を作成できます。別の開発者(そしておそらく同じ人)は、それを知らずに同じクラス名を使用することができます。

CSSはエラーを促しません。これで、このクラスのHTML要素は、2つのまったく異なるもののスタイルを受け取ります。

Shadow Domはこの問題を解決します。感情やスタイルのコンポーネントなどのCSS-in-JSライブラリも、 .bwzfXHなどのランダムなクラス名を生成することにより、さまざまな方法でこの問題を解決します。これは確かに紛争を避けるのに役立ちます!ただし、CSS-in-JSは、他の方法でコンポーネントを壊すことを誰も妨げません。例えば……

基本的なスタイルとCSSリセット

HTML要素セレクターを使用できます(例:<button></button>そして<div>)スタイルを適用します。これらのスタイルはコンポーネントを壊す可能性があります。 Shadow Domは、(ほぼ)完全にカプセル化された唯一のメカニズムです。各コンポーネントがカプセル化されているため、コンポーネントが乱雑です<code>!importantコードベースでも一貫性があることを保証できます。

 /*これはシャドウdom内のボタンには影響しません*/
ボタン{背景色:ライム!重要; }

このように要素をスタイリングすることは良い習慣ではないと思いますが、それは起こります。これが起こったとしても、これらのスタイルはShadow Domに影響しません。

色、フォント、ラインの高さなどの継承可能なスタイルは、シャドウDOMで依然として継承されていることに注意してください。これを防ぐには、 all: initialまたはできればall: revert

HTML要素に直接適用されるCSSの一般的な例を見てみましょう。 Eric Meyerのリセットコードを検討してください。

 html、body、div、span、applet、object、iframe、
H1、H2、H3、H4、H5、H6、P、BlockQuote、Pre、
abbr、頭字語、アドレス、ビッグ、引用、コード、
del、dfn、em、img、ins、kbd、q、s、samp、
Small Strike Strong Sub Sup TT var
b、u、i、center、
dl、dt、dd、ol、ul、li、
フィールドセット、フォーム、ラベル、レジェンド、
テーブル、キャプション、tbody、tfoot、thead、tr、th、td、
記事、さておき、キャンバス、詳細、埋め込み、
フィギュア、フィガプション、フッター、ヘッダー、hgroup、
メニュー、NAV、出力、ルビー、セクション、サマリー、
時間、マーク、オーディオ、ビデオ{
  マージン:0;
  パディング:0;
  ボーダー:0;
  フォントサイズ:100%;
  フォント:継承;
  垂直アライイン:ベースライン;
}

使用しているコンポーネントが、ユーザーエージェントのデフォルトマージンとパディング値を使用するとどうなりますか?このリセットは、これらのデフォルト値が実際にクリアされているため、破損しているように見える可能性があります。

Shadow Domは、これらの問題を回避する方法です。 Shadow Domは、どのコードベースに関係なく、コンポーネントが予想どおりにレンダリングされることを完全に確信できるようになります。繰り返しますが、コンポーネントのみに使用されるコードは、厄介なクラスの命名規則なしで、他のものに誤って影響を与えません。 Shadow Domは、他の方法では達成できないカプセル化レベルを提供します。

パッケージは素晴らしいですが、コンポーネントをテーマにしてカスタマイズ可能にしたいと考えています。 ::partセレクターはこれをはるかに簡単にします。

スタイルシャドウドム:: part()

これまでのところ、CSSが外部の影DOMからカスタム要素スタイルを変更できる唯一の方法は、CSSカスタムプロパティを使用することです。厳格な設計システムでは、限られた変更のみを許可したいだけです。これは理想的かもしれません。コンポーネントをより一般的にしたい場合は、問題を引き起こす可能性があります。カスタムプロパティを使用して、スタイルを提供するCSS属性を定義する必要があります。非常に複雑に聞こえます。

擬似クラス( :hoverなど)に基づいてさまざまな方法でコンポーネントをスタイリングしたい場合、状況はさらに複雑になります。基本的に、私たちは多くのカスタムプロパティになります。 Ionic(オープンソースのWebコンポーネントのセット)の例を見てみましょう。イオンボタンコンポーネントで定義されているすべてのカスタムプロパティをご覧ください。

お気軽にチェックしてください。

23のカスタムプロパティを数えました。言うまでもなく、これは理想とはほど遠いです。

以下は::part()を使用して要素をスタイリングする例です。

この例では、色、境界線、背景の色のプロパティを変更しましたが、定義されているカスタムプロパティに制限されることなく、必要なプロパティを使用できます。次のような擬似クラスも使用できることに注意してください:hover:focusフォーカスには、コンポーネントのさまざまな状態をスタイリングします。

このボタンの例では、コンポーネント全体がスタイル設定のために公開されますが、Webコンポーネントに複数のHTML要素が含まれている場合、コンポーネントの選択した部分のみをこのスタイル設定に公開できます::partこれにより、コンポーネントのユーザーがシャドウツリー内の任意の要素をスタイリングすることを防ぎます。コンポーネントの著者は、明示的に開示したいコンポーネントを明らかにする責任があります。コンポーネントの他の部分は、視覚的な一貫性を維持するか、カスタムプロパティを使用してカスタマイズ可能性を低下させることができます。

それでは、どのようにこれをコンポーネントに設定しますか? Webコンポーネントのスタイリングの特定の要素を作成するための::part使用方法を見てみましょう。私たちが行うのは、公開したい要素にpartプロパティを追加することだけです。

<div part="box"> ...</div>
<button>私をクリックしてください</button>

この例では、 div完全なCSSスコープを使用してカスタマイズできます。CSS属性を変更できます。ただし、ボタンはロックされています。コンポーネント作成者以外の視覚効果を変更することはできません。

HTML要素が複数のクラス名を持つことができるように、1つの要素には複数のpart名を持つことができます。

<div part="box thing"> ...</div>

これは、 ::part :要素の「パート」を公開することにより、他の領域でそれらを保護しながらWebコンポーネントを使用する方法について柔軟性を提供できます。設計システム、コンポーネントライブラリなど、CSSシャドウパーツが主流になっているという事実は、別のエキサイティングなツールを提供します。

以上がCSSシャドウパーツを備えたシャドウドムのスタイリング の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
スクリーンリーダーの分解:アクセス可能なフォームとベストプラクティススクリーンリーダーの分解:アクセス可能なフォームとベストプラクティスMar 08, 2025 am 09:45 AM

これは、フォームアクセシビリティについて行った小さなシリーズの3番目の投稿です。 2番目の投稿を逃した場合は、「ユーザーフォーカスの管理:Focus-Visible」をご覧ください。で

WordPressブロックと要素にボックスシャドウを追加しますWordPressブロックと要素にボックスシャドウを追加しますMar 09, 2025 pm 12:53 PM

CSS Box-Shadowおよびアウトラインプロパティは、WordPress 6.1でTheme.jsonサポートを獲得しました。実際のテーマでどのように機能するか、そしてこれらのスタイルをWordPressブロックと要素に適用するために必要なオプションのいくつかの例を見てみましょう。

GraphQLキャッシングの使用GraphQLキャッシングの使用Mar 19, 2025 am 09:36 AM

最近GraphQLの作業を開始した場合、またはその長所と短所をレビューした場合、「GraphQLがキャッシュをサポートしていない」または

最初のカスタムSvelteトランジションを作成します最初のカスタムSvelteトランジションを作成しますMar 15, 2025 am 11:08 AM

Svelte Transition APIは、コンポーネントがカスタムSVELTE遷移を含むドキュメントを入力または離れるときにアニメーション化する方法を提供します。

上品でクールなカスタムCSSスクロールバー:ショーケース上品でクールなカスタムCSSスクロールバー:ショーケースMar 10, 2025 am 11:37 AM

この記事では、Scrollbarsの世界に飛び込みます。私は知っています、それはあまりにも魅力的ではありませんが、私を信じてください、よく設計されたページは手をつないで行きます

ショー、Don&#039; t Tellショー、Don&#039; t TellMar 16, 2025 am 11:49 AM

あなたのウェブサイトのコンテンツプレゼンテーションの設計にどれくらいの時間に費やしますか?新しいブログ投稿を書いたり、新しいページを作成したりするとき、あなたは考えていますか

Redwood.jsと動物相を使用してイーサリアムアプリを構築しますRedwood.jsと動物相を使用してイーサリアムアプリを構築しますMar 28, 2025 am 09:18 AM

最近のビットコインの価格が20k $ $ USDを超えており、最近30Kを破ったので、イーサリアムを作成するために深く掘り下げる価値があると思いました

NPMコマンドは何ですか?NPMコマンドは何ですか?Mar 15, 2025 am 11:36 AM

NPMコマンドは、サーバーの開始やコンパイルコードなどの1回限りのプロセスまたは継続的に実行されるプロセスとして、さまざまなタスクを実行します。

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

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

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

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

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