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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-30 10:10:14807ブラウズ

Can Sibling Combinators Target Pseudo-elements like :before or :after?

兄弟コンビネータと疑似要素

この CSS の難題では、疑似要素をターゲットにできるかどうかという問題に遭遇します。具体的には、兄弟を使用した :before または :after combinator.

次の 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 は期待どおりに機能しません。

答えは擬似要素の性質にあります。 CSS 仕様によれば、疑似要素から生成されたコンテンツは DOM 構造に影響を与えません。これは、DOM ツリー内に存在する要素に依存する兄弟コンビネータが疑似要素をターゲットにできないことを意味します。

言い換えれば、CSS は、共有するアンカー タグの :after 疑似要素を非表示にしようとしています。イメージを持つ親。ただし、:after 疑似要素は DOM にレンダリングされないため、兄弟コンビネータがそれを見つけることは不可能です。

その結果、多くの場合、JavaScript は、その要素に基づいて要素をターゲットにするためのより適切なソリューションになります。 DOM 内の他の要素との関係。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。