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 サイトの他の関連記事を参照してください。

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

ホットトピック



