目次
定義
違い
CSS2 標準で拡張されたため、論理的には存在しますが、DOM ツリー内で識別する必要はありません
特別な注意を払うべきことが 1 つあります
ホームページ ウェブフロントエンド CSSチュートリアル CSS3の擬似クラスと擬似要素の違いと注意点について

CSS3の擬似クラスと擬似要素の違いと注意点について

May 21, 2017 pm 03:29 PM

CSS の擬似クラスと擬似要素の概念は混同されやすいです

今日は擬似クラスと擬似要素の違いについて話しましょう


定義

まず、擬似を見てみましょうクラスと擬似要素
w3cの定義はこのように説明されています

  • 擬似クラス: 特定のセレクターに特殊効果を追加するために使用されます

  • 擬似要素: 特定のセレクターに特殊効果を追加するために使用されます

正直に言うと、私の中国語は下手かもしれませんが、これら 2 つの文は同等だと思います:-)
違いがまったくわかりません
それらはすべて特定のセレクターに「特殊効果を追加」しているだけです

標準このような文の翻訳は次のようになります

CSSは、ドキュメントツリー

に基づいた情報のフォーマットを実現するために、
疑似クラスと疑似要素

の概念を導入します。これはより抽象的ですが、実際にはこれは、class、id などの要素を選択して

違い

を補うことはできないことを意味します。この違いを理解するには例が必要です

<p>
    <em>This</em>
    <em>is a text</em></p>
ログイン後にコピー
ログイン後にコピー

最初の em タグのフォントの色が必要な場合はどうなるでしょうか赤に変わります
私たちがよく知っている疑似クラスは非常に単純です

em:first-child {    color: red;}
ログイン後にコピー

しかし、疑似クラスがない場合はどうすればよいでしょうか?これが、最初の em タグにクラスを追加する必要がある理由です

<p>
    <em class="first-child">This</em>
    <em>is a text</em></p>
ログイン後にコピー
em.first-child {    color: red;}
ログイン後にコピー

同じ効果が得られます

<p>
    <em>This</em>
    <em>is a text</em></p>
ログイン後にコピー
ログイン後にコピー

または、この例

次に、この段落の最初の文字を赤にしたいです
その方法
今回は疑似要素を使用する必要があります

p::first-letter {    color: red;}
ログイン後にコピー

擬似要素は存在しないということです

現時点では、span タグをネストすることでのみ実現できます

<p>
    <em><span>T</span>his</em>
    <em>is a text</em></p>
ログイン後にコピー
p span {    color: red;}
ログイン後にコピー


これを見て、一方が擬似クラスと呼ばれ、もう一方が擬似要素と呼ばれる理由を誰もが理解できたと思います。疑似クラスは、実際のクラスを追加することで実現できます。 疑似要素の効果は、実際のクラスを追加することで実現できます。

それらの本質的な違いは、
抽象化によって新しい要素が作成されるかどうかです

歴史

要素のダイナミクスを表すために使用されます (典型的なアンカー疑似クラスのリンク、訪問済み、ホバー、アクティブ)

CSS2 標準で拡張されたため、論理的には存在しますが、DOM ツリー内で識別する必要はありません

疑似要素ロジックは存在しますが、DOM ツリーには存在しません


それらの概念は混乱しやすいですが
、通常の使用には影響しません

で述べました。 CSS3セレクターの紹介と使い方まとめ
疑似クラスは「:」のみ使用可能

疑似要素は「:」または「::」のどちらかを使用可能

ここでその理由を説明します


CSS3の標準では、疑似クラスは単一のコロン「:」

そして擬似要素は二重コロン「::」を使用します (混乱を避けるため)
その前に、それが擬似であるかどうかについて クラスと擬似要素の両方が単一のコロン「:」を使用します

つまり、疑似要素との互換性を確保するため、疑似要素を使用する両方の方法が可能です
ただし、IE の低バージョンにはダブルコロンの互換性の問題があります
そのため、過去にスタイルを作成した人々は、疑似クラスと疑似要素について異なる意見を持っていました。単に単一のコロンを使用するだけです
、この混乱は永遠に続きます

注意

疑似クラスと疑似要素を使用するときは

特別な注意を払うべきことが 1 つあります

疑似クラスは実際のクラスと同じであり、次の中で使用できます。スタック

相互に排他的でない限り、数に上限はありません
例えばこんな感じ

em:first-child:hover {    color: red;}
ログイン後にコピー

これで全然大丈夫です
ただし、ここで「と」の関係に注意してください

つまり、最初の子要素「first-child」

と「hover」カーソルホバーの両方を満たす必要があります


疑似要素ははるかに厳密です


疑似要素はセレクター内に 1 回だけ出現でき、最後にのみ出現できます


(ここで一部の学生が誤解していたので、修正しました) 以下のようなスタイルは有効になりません

p::first-letter:hover {  /*错误的写法:伪元素不是末尾*/
    color: red;}
ログイン後にコピー
p::first-letter::selection {  /*错误的写法:伪元素出现了多个*/
    color: red;}
ログイン後にコピー


の優先順位についてもう 1 つ言わせてください

重みを計算するとき 疑似クラスの優先順位は同じですクラスとして 疑似要素はタグと同じ優先順位を持ちます

概要

疑似クラスと疑似要素はどちらもセレクターに特殊効果を追加するために使用されます
  • 疑似クラスと疑似要素の本質的な違いは、新しい要素を作成するためのabstract
  • 相互に排他的でない限り、疑似クラスを重ね合わせることができます
  • 疑似要素はセレクター内に1回のみ出現でき、最後にのみ出現できます
  • 優先順位擬似クラスと擬似要素の優先度は、それぞれクラスとラベルの優先度と同じです

以上がCSS3の擬似クラスと擬似要素の違いと注意点についての詳細内容です。詳細については、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

純粋な CSS3 で波の効果を実現するにはどうすればよいですか? (コード例) 純粋な CSS3 で波の効果を実現するにはどうすればよいですか? (コード例) Jun 28, 2022 pm 01:39 PM

純粋な CSS3 で波の効果を実現するにはどうすればよいですか?この記事ではSVGとCSSアニメーションを使って波のエフェクトを作成する方法をご紹介しますので、お役に立てれば幸いです。

CSSを上手に使って色々な変わった形のボタンを実現(コード付き) CSSを上手に使って色々な変わった形のボタンを実現(コード付き) Jul 19, 2022 am 11:28 AM

この記事では、頻繁に登場する様々な奇妙な形のボタンをCSSを使って簡単に実現する方法を紹介しますので、ぜひ参考にしてください。

スペースを取らずにCSS内の要素を非表示にする方法 スペースを取らずにCSS内の要素を非表示にする方法 Jun 01, 2022 pm 07:15 PM

2 つの方法: 1. display 属性を使用して、要素に「display:none;」スタイルを追加するだけです。 2. Position 属性と top 属性を使用して、要素の絶対位置を設定し、要素を非表示にします。要素に「position:absolute;top:-9999px;」スタイルを追加するだけです。

CSS3でレースボーダーを実装する方法 CSS3でレースボーダーを実装する方法 Sep 16, 2022 pm 07:11 PM

CSS では、border-image 属性を使用してレースの境界線を実現できます。 border-image 属性では、画像を使用して境界線を作成できます。つまり、境界線に背景画像を追加できます。背景画像をレース スタイルとして指定するだけで済みます。構文「border-image: url (画像パス) は、内側への画像境界線の幅。開始を繰り返すかどうか;"。

テキストカルーセルと画像カルーセルも純粋な CSS を使用して実現できることがわかりました。 テキストカルーセルと画像カルーセルも純粋な CSS を使用して実現できることがわかりました。 Jun 10, 2022 pm 01:00 PM

テキストカルーセルと画像カルーセルを作成するにはどうすればよいですか?皆さんが最初に考えるのはjsを使うかどうかですが、実はテキストカルーセルや画像カルーセルも純粋なCSSでも実現できますので実装方法を見ていきましょう。

:nth-child(n+3) 擬似クラス セレクターを使用して、位置が 3 以上の子要素のスタイルを選択します。 :nth-child(n+3) 擬似クラス セレクターを使用して、位置が 3 以上の子要素のスタイルを選択します。 Nov 20, 2023 am 11:20 AM

:nth-child(n+3) 擬似クラス セレクターを使用して、位置が 3 以上の子要素のスタイルを選択します。具体的なコード例は次のとおりです。 HTML コード: &lt;divid="container" &gt;&lt;divclass="item"&gt ;最初の子要素&lt;/div&gt;&lt;divclass="item"&

なぜ疑似要素が失敗するのでしょうか? なぜ疑似要素が失敗するのでしょうか? Nov 21, 2023 pm 05:13 PM

疑似要素が失敗する理由: 1. セレクターの問題、2. スタイルの競合、3. 継承の問題、4. 構文エラー、5. ブラウザーの互換性の問題など。詳細な紹介: 1. セレクターの問題、疑似要素のセレクターが正しくないため、ターゲット要素が選択されない可能性があります; 2. スタイルの競合、CSS でスタイルの競合がある場合、疑似要素が無効になる可能性があります; 3.継承の問題、疑似要素が特定のスタイル属性を継承しない可能性がある; 4. 構文エラー CSS に構文エラーがある場合、疑似要素が失敗する可能性がある; 5. ブラウザの互換性の問題など。

css3アダプティブレイアウトとは何ですか css3アダプティブレイアウトとは何ですか Jun 02, 2022 pm 12:05 PM

「レスポンシブ レイアウト」とも呼ばれるアダプティブ レイアウトとは、画面の幅を自動的に認識し、それに応じて調整できる Web ページ レイアウトを指します。このような Web ページは、端末ごとに特定のバージョンを作成するのではなく、複数の異なる端末と互換性を持たせることができます。 。アダプティブ レイアウトは、モバイル Web ブラウジングの問題を解決するために生まれ、さまざまな端末を使用するユーザーに優れたユーザー エクスペリエンスを提供できます。

See all articles