目次
Shadow Domパッケージの利点
紛争の命名
基本的なスタイルとCSSリセット
スタイルシャドウドム:: part()
ホームページ ウェブフロントエンド CSSチュートリアル CSSシャドウパーツを備えたシャドウドムのスタイリング 

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

Apr 07, 2025 am 09:26 AM

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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

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

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

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

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

Eleventyで独自のBragdocを作成します Eleventyで独自のBragdocを作成します Mar 18, 2025 am 11:23 AM

開発者としての段階に関係なく、私たちが完了したタスクは、大小を問わず、個人的および専門的な成長に大きな影響を与えます。

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

それは&#039; Vueチームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

ブラウザから有効なCSSプロパティ値を取得できますか? ブラウザから有効なCSSプロパティ値を取得できますか? Apr 02, 2025 pm 06:17 PM

私はこの非常に正当な質問で誰かに書いてもらいました。 Leaは、ブラウザから有効なCSSプロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

CI/CDで少し CI/CDで少し Apr 02, 2025 pm 06:21 PM

「ウェブサイト」は「モバイルアプリ」よりも適していると言いますが、Max Lynchからのこのフレーミングが好きです。

レスポンシブデザインのブラウザを比較します レスポンシブデザインのブラウザを比較します Apr 02, 2025 pm 06:25 PM

これらのデスクトップアプリがいくつかあり、目標があなたのサイトをさまざまな次元ですべて同時に表示しています。たとえば、書くことができます

粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード 粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード Apr 03, 2025 am 10:30 AM

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

See all articles