mcpField
P
pseudo-elements

pseudo-elements

github.com/raphaelsalajaその他42251 回インストール今日更新
リポジトリ

pseudo-elements について

CSS の疑似要素と View Transitions API を確認するレビュー用スキルです。装飾レイヤー、ネイティブな疑似要素のスタイル、共有要素のトランジションを調べ、問題と概要を報告します。

主な機能

  1. 01疑似要素の生成コンテンツを確認
  2. 02装飾ノードと疑似要素の重なりをレビュー
  3. 03ネイティブな背景、プレースホルダー、選択範囲のスタイルを確認
  4. 04View Transitions の名前設定と解除をレビュー
  5. 05重要度付きで問題と概要を報告

活用シーン

  1. 01装飾的なホバーレイヤーとヒット領域のレビュー
  2. 02ダイアログの背景と入力プレースホルダーの確認
  3. 03共有要素のページ遷移を監査
  4. 04リストマーカーと先頭行のスタイルを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/raphaelsalaja/skills --skill pseudo-elements

インストール後、Claude Code で/pseudo-elementsを入力して読み込まれたか確認します。

同梱ファイルagents/openai.yaml

詳細

疑似要素

このスキルでは、CSS の疑似要素と View Transitions API を確認します。装飾目的のレイヤーには、ノードを追加するのではなく疑似要素を優先します。

各チェックはペアになっています。問題のある行と、その置き換えとなる行を並べて示します。

content: "" は必須です。指定しないと ::before と ::after は描画されません。これは明確な要件です。装飾的なオーバーレイやヒット領域の拡張だけに使う 2 つ目の DOM ノードは、疑似要素で実現できる場合、指摘の対象です。最小ターゲットサイズについては laws-of-ux を参照してください。疑似要素を使ったシャドウのアニメーションについては visual-design を参照してください。コンポーネントの終了時のマウントについては exit-animations を参照してください。

使用する場面

ホバー時のレイヤー、ヒット領域、プレースホルダー、選択範囲、ダイアログの背景、または共有要素によるページ遷移をスタイリングするときに使用します。その場でマウントとアンマウントを行う Motion ツリーには exit-animations を使用してください。

1. 装飾レイヤーを確認する

対象範囲のファイルを読みます。::before、::after、::backdrop、::placeholder、::selection、::marker、::first-line、および view-transition-name や startViewTransition の呼び出しをすべて列挙します。

2. 生成ボックスを確認する

::before と ::after には、通常 "" を content に設定します。これは pseudo-content-required です。装飾的なオーバーレイ、下線、ヒット領域の拡張には、空の span ではなく疑似要素を使います。これは pseudo-over-dom-node です。絶対配置された疑似要素には、position: relative の親要素が必要です。これは pseudo-position-relative-parent です。疑似要素がテキストに重なる場合は、テキストをその上に配置します。通常は疑似要素に z-index: -1 を設定します。これは pseudo-z-index-layering です。

疑似要素に負のインセットを指定して、ヒット領域を広げます。たとえば inset: -8px -12px のようにします。これは pseudo-hit-target-expansion です。最小ターゲットサイズの 32px については laws-of-ux を参照してください。

リストマーカーのスタイリングには、見せかけの箇条書き要素ではなく ::marker を使います。これは pseudo-marker-styling です。文章の先頭行のスタイリングには ::first-line を使います。これは pseudo-first-line-styling です。

3. ネイティブの疑似要素とビュー遷移を確認する

dialog またはポップオーバーでページを暗くする場合は、兄弟要素のオーバーレイ div ではなく ::backdrop を使います。これは native-backdrop-styling です。プレースホルダーテキストには ::placeholder を使います。これは native-placeholder-styling です。選択色には ::selection を使います。これは native-selection-styling です。

ページ間で変形させる要素は、単一の参加要素に view-transition-name を設定します。これは transition-name-required です。遷移の実行中、この名前は一意である必要があります。これは transition-name-unique です。ターゲットに名前を割り当てる際は、ソースから名前をクリアします。これは transition-name-cleanup です。共有要素によるページ遷移には、Motion の layoutId ではなく document.startViewTransition を優先します。これは transition-over-js-library です。カスタムのタイミングは、デフォルトのクロスフェードだけに頼らず、::view-transition-group に設定します。これは transition-style-pseudo-elements です。

4. 報告して終了する

指摘事項を記載してから、概要を記載します。セマンティック要素を疑似要素に置き換えてはいけません。

対になるもの

すべてのチェックは対になっています。誤った行の隣に、それを置き換える行があります。

ルール誤り置き換え
pseudo-content-required.button::before { position: absolute }content: "" を追加する
pseudo-over-dom-nodeボタン内の <span className={styles.background} />その背景には .button::before を使う
pseudo-position-relative-parentstatic な親要素に設定された絶対配置の ::before.button { position: relative }
pseudo-z-index-layeringラベルの上に重なる、z-index のない ::before の背景疑似要素に z-index: -1 を設定する
pseudo-hit-target-expansionグリフと同じ大きさのヒット領域::before に inset: -8px -12px を設定する
pseudo-marker-styling箇条書きに見せかけた要素li::marker
pseudo-first-line-styling折り返された先頭行を囲む spanp::first-line
native-backdrop-styling<dialog> の背後に置かれた兄弟オーバーレイdialog::backdrop
native-placeholder-styling入力欄が空のときに切り替えるプレースホルダー用の <span>input::placeholder
native-selection-stylingラッパーに設定された選択色::selection
transition-name-uniqueすべてのカードに設定された .card { view-transition-name: card }アクティブな要素にのみ名前を設定する
transition-name-cleanup切り替え後もソースに viewTransitionName が残るコールバック内でクリアする
transition-over-js-libraryページをまたぐ共有要素に対する layoutIddocument.startViewTransition

レポート

重大度。 HIGH は、content がないため描画されない疑似要素、または名前が衝突するビュー遷移名です。MEDIUM は、余分な装飾用ノード、背景用の div、クリアされない名前、または拡張されていないヒット領域です。LOW は、UI のほかの部分にはスタイルが設定されている一方で、スタイルの設定されていない ::selection または ::marker です。

検証。 対象ファイルで宣言されている値を読み取ります。ブラウザーの使用は任意です。実行できなかったチェックには Not verified と記載します。

形式。 根本原因ごとに指摘を 1 件記載します。

file:line - [rule-id] what is wrong

続けて、次の要約を記載します。

ルール件数重大度

HIGH が 1 件でも残っている場合は Block とします。それ以外は Approve とし、重大度の低い行も表に残します。読んでいないファイルを Approve にしてはいけません。報告事項がない場合は「対応が必要な指摘はありません」と記載し、未検証の項目を列挙します。

コメント