CSS3 疑似クラスセレクターの簡単なレビュー

CSS3 疑似クラスセレクターの簡単なレビュー

序文

CSS がフロントエンド開発の基本的なスキルであるならば、「セレクター」は基礎中の基礎です。これらの紛らわしいセレクターをコピーしたり学習したりしているのであれば、あなたは正しい場所に来ています、私の古い友人よ。

この記事では、それぞれの機能を直接比較して、すぐに習得できるようにします。

  • 第一子
  • 最後の子
  • 最初のタイプ
  • 最後のタイプ
  • 一人っ子
  • 唯一のタイプ
  • n番目の子
  • 最後の n 番目の子
  • n番目のタイプ
  • 最後の n 番目のタイプ

第一子と末子

次の 2 つのセレクターは、兄弟セットの最初の要素と一致します。

注: このセレクターが機能するには、実際に満たす必要がある条件が 3 つあります。

  • 前のセレクタに一致します。この場合はp
  • 兄弟要素のグループである
  • 最初の(または最後の)要素である

ここではlast-childについて詳しく説明しません。違いは、後ろから前に向かって一致することです。

最初のタイプと最後のタイプ

これらの 2 つのセレクターは、要素が実際にグループ内の最初の (最後の) 要素であるかどうかに関係なく、同じタイプの最初の (最後の) 要素と一致します。

注: このセレクターが機能するには、実際に満たす必要がある条件が 2 つあります。

  • 前のセレクタに一致します。この場合はp
  • 兄弟要素のグループである

ここではlast-of-typeについて詳しく説明しません。違いは、後ろから前に向かって一致することです。

唯一の子と唯一の型

only-child兄弟要素を持たない要素、つまり「孤立した」要素に一致します。

上図の「分離された」要素は最初の<p>とネストされた<span>であり、どちらもセレクターによって一致します。

only-of-type兄弟要素のセットの中で一意の型の要素に一致します。

最初の<p> 、2 番目の<p> 、および最後の<span>はすべて親要素タイプ内で一意であるため、セレクタによって一致します。

n 番目の子と n 番目の最後の子

これらの疑似クラス セレクターの最も興味深い点は、式an+bを渡して、この式に従って要素を一致させることができることです。この式を操作する方法は多数あるため、多くの人がこの式と一致するコンテンツのすべての組み合わせを記憶しています。

実際、数学的な観点からルールを理解するのは非常に簡単なので、私たちの考え方は CSS によって固められています。たとえば、次のコードがあります。

<スタイル>
  p:n番目の子(2n+1){
    色:青;
  }
</スタイル>
<本文>
  <p>最初の行</p>
  <p>2行目</p>
  <p>3行目</p>
</本文>

思考モード:

  1. まず、一致した要素を収集します。この例では、3つの<p>タグです。
  2. 添え字 0 から 2 までを数えて<p>の数を表し、それを数式に代入して評価します。
  3. 要素を対応する添え字と一致させます(要素の添え字は1から始まります)

結果:

説明する
2nすべての偶数要素
2n+1すべての奇数要素
n と n+1すべての要素
2+2 番目2 番目の要素以降の要素 (2 番目の要素を含む)
3+3 番目3番目の要素以降の要素(3番目の要素を含む)
0オン一致するものはありません
3n+4 4、7、10、13 ....
1最初の要素のみに一致
-n+2最初の2つの要素のみに一致します
n番目の子(奇数)奇妙な要素
n番目の子(偶数)偶数要素

ただし、 nth-child依然として同じ兄弟要素のセットに一致することを忘れないでください。興味深いのは、 nth-childセレクターを使用してフィルタリングしますが、スタイルを適用するときに、一致した要素にスタイルを適用しないことです。

上の図では、 <div>内の 2 つの<p>要素のグループが兄弟要素として一致していますが、興味深いことに、3 番目の<p>要素「3 行目」も一致しています。つまり、一致した<p>要素ではなく、兄弟要素のグループにスタイルが直接適用されます。ただし、図の「3 番目のグループ」の<p><div>である場合、異なるタイプのスタイルは適用されないことに注意してください。

nth-last-childは後ろから前へのバージョンですが、ここでは詳細な例は示しません。

MDN では、要素の数に応じて要素のスタイルを制御できる興味深い例も紹介されています。

li:n番目最後の子(n+3)、
li:n番目最後の子(n+3) ~ li {
  色: 赤;
}
<h4>4 つの項目のリスト (スタイル付き):</h4>
<オル>
  <li>1つ</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
</ol>

<h4>2 つの項目のリスト (スタイルなし):</h4>
<オル>
  <li>1つ</li>
  <li>2</li>
</ol>

n 番目のタイプと n 番目の最後のタイプ

nth-of-type :

  • 同じグループ内の同じタイプの兄弟要素
  • 数式の計算値に対応する要素を一致させます

nth-of-typenth-childと異なることに気付きましたか? 計算後、スタイルは兄弟要素ではなく、一致した要素に適用されます。

nth-last-of-type 、ここでは詳しく説明しません。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  つまり、フィルターコレクション

>>:  Docker で Elasticsearch Kibana と ik Word Segender をデプロイする詳細な説明

推薦する

Eclipse は Tomcat を構成しますが、Tomcat には無効なポート解決策があります

目次1. EclipseがTomcatを構成する2. Tomcat の無効なポートの解決方法方法1:...

.Net Core を使用して数千万のデータを MySQL にインポートする手順

目次事前準備実施方法: 1. 単一のデータを挿入する2. マージデータ挿入3. MySqlBulkL...

MySQL チュートリアル データ定義言語 DDL の例 詳細な説明

目次1. SQL言語の基本機能の紹介2. データ定義言語の目的3. データベースの作成と破棄4. デ...

使用したコマンドを表示するLinuxコマンドメソッドの概要

システムでは多くのコマンドが使用されていますが、使用したコマンドをどのように確認すればよいでしょうか...

MySQL で重複を削除するには、distinct または group by を使用する必要がありますか?

序文group by と distinctive のパフォーマンス比較について: インターネット上の...

MySQL の nvl() 関数に似た ifnull() 関数についての簡単な説明

IFNULL(式1,式2) expr1 が NULL でない場合、IFNULL() は expr1 ...

MAC で Mysql5.7.10 のルートパスワードを変更する方法

まず、MySQLをskip-grant-tablesモードで起動します: mysqld --skip...

Dockerパッケージイメージの実装と構成の変更

最近、Docker の学習や実際の運用で多くの問題に遭遇したので、それを記録するためにブログを書きま...

CSS3セレクターの新機能の実装

目次基本的なセレクタ拡張属性セレクタ疑似クラスと疑似要素セレクター基本的なセレクタ拡張1. 子要素セ...

W3C チュートリアル (15): W3C SMIL アクティビティ

SMIL は、Web にタイミングとメディアの同期のサポートを追加します。 SMIL は、Web に...

Nodejs モジュール システムのソースコード分析

目次概要CommonJS 仕様Node の CommonJS 仕様の実装モジュールのエクスポートとイ...

Vueプラグインの実装で発生した問題の概要

目次シーン紹介プラグインの実装問題1: 重複したヘッダーコンポーネント質問2: 別の実装アイデア質問...

MySQL マスタースレーブレプリケーションと読み取り書き込み分離の詳細な説明

目次序文1. 概要2. 読み取りと書き込みの分離3. MySQL マスタースレーブレプリケーションの...

ウェブページ作成時のHTMLタグの使用に注意してください

この記事では、Web ページの作成を学習するときに注意すべき HTML タグに関するいくつかの問題を...

CSS で画像アダプティブ コンテナを実装するいくつかの方法 (要約)

多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...