【CSS】nth-childのofフィルターについて

どうも、くまだです。

nth-childのofフィルター「of S」構文についてのあれこれ。

nth-childのofフィルター

nth-childの「of S」構文は以下のように指定します。

    <div class="boxWrap">
      <div class="box">1</div>
      <div class="box color-blue">2</div>
      <div class="box">3</div>
      <div class="box">4</div>
      <div class="box color-blue">5</div>
      <div class="box">6</div>
      <div class="box">7</div>
      <div class="box">8</div>
    </div>
.boxWrap {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 20px;
}

.box {
  width: 50px;
  height: 50px;
  background-color: pink;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}


.box:nth-child(2 of .color-blue){ /* 「of S」構文 */
  background-color: lightblue;
}

.box要素の中の、.color-blue要素の2つ目の要素に対してスタイルを変更できました(以下の部分です)

.box:nth-child(2 of .color-blue){
  background-color: lightblue;
}

一応、nth-childやnth-of-typeとの違いだと、例えば以下のようにnth-child(2)で指定すれば、2つ目の.test要素のスタイルが反映されます。

    <div class="box2">
      <p class="test">pタグ</p>
      <div class="test">divタグ</div>
      <div class="test">divタグ</div>
      <span class="test">spanタグ</span>
      <p class="test">pタグ</p>
      <div class="test">divタグ</div>
      <p class="test">pタグ</p>
      <span class="test">spanタグ</span>
      <p class="test">pタグ</p>
      <div class="test">divタグ</div>
    </div>
.box2 .test:nth-child(2){
  background-color: lightblue;
}

.box2 .test:nth-of-type(2)と指定すれば、以下のように反映されます。

.box2 .test:nth-of-type(2){
  background-color: lightblue;
}

それぞれのタグの種類ごとの2つ目のtest要素に反映される感じです。

ofフィルターを使うとより詳細に要素に指定できるようになります。

    <div class="box2">
      <p class="test">pタグ</p>
      <div class="test">divタグ</div>
      <div class="test picup">divタグ</div>
      <span class="test">spanタグ</span>
      <p class="test">pタグ</p>
      <div class="test">divタグ</div>
      <p class="test picup">pタグ</p>
      <span class="test">spanタグ</span>
      <p class="test">pタグ</p>
      <div class="test">divタグ</div>
    </div>
.box2 :nth-child(2 of .picup){
  background-color: lightblue;
}

ここまで読んでくださりありがとうございました。

この記事を書いた人