ホームページ > ウェブフロントエンド > CSSチュートリアル > 兄弟コンビネータは CSS の :before または :after 疑似要素を選択できますか?

兄弟コンビネータは CSS の :before または :after 疑似要素を選択できますか?

Susan Sarandon
リリース: 2024-12-04 04:30:11
オリジナル
968 人が閲覧しました

Can Sibling Combinators Select :before or :after Pseudo-elements in CSS?

兄弟コンビネータは :before または :after 疑似要素をターゲットにできますか?

CSS では、兄弟コンビネータは、次の要素にスタイルを適用するために使用されます。同じ親を共有しますが、相互にネストしません。ただし、これらのコンビネータは、:before や :after などの疑似要素をターゲットにするために使用できますか?

課題

次の CSS と HTML を検討してください。 code:

CSS:

a[href^="http"]:after {
    content:"";
    width:10px;
    height:10px;
    display:inline-block;
    background-color:red;
}

a[href^="http"] img ~ :after {
    display:none;
}
ログイン後にコピー

HTML:

<a href="http://google.com">Test</a>
<a href="http://google.com">
    <img src="https://www.google.com/logos/classicplus.png">
</a>
ログイン後にコピー

意図

この CSS は、 「http」で始まるアンカーには赤いマーカーが追加されますが、画像を含むアンカーにはマーカーを追加しないでください。 img 要素を使用してアンカー タグを直接ターゲットにすることはできないため、兄弟コンビネータは、イメージの兄弟を持つアンカー タグの :after 疑似要素をターゲットにすることができると仮定されます。

問題

ただし、この CSS は意図したとおりに機能しません。疑似要素は、画像を含むアンカーでは非表示になりません。

説明

この動作の理由は、疑似要素の性質にあります。疑似要素は DOM ツリーの一部ではなく、ブラウザによって生成されます。その結果、兄弟コンビネータはそれらを直接ターゲットにすることができません。

CSS 仕様では、「生成されたコンテンツはドキュメント ツリーを変更しません。特に、ドキュメント言語プロセッサ (再解析など) にフィードバックされません」と述べられています。 )."

解決策

望ましい効果を達成するには、 JavaScript を使用する必要があります。スクリプトはアンカー タグを反復処理し、画像コンテンツに基づいて目的のスタイルを追加または削除できます。

以上が兄弟コンビネータは CSS の :before または :after 疑似要素を選択できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート