擬似クラス!CSSでnth-of-typeを使う方法【初心者向け】現役エンジニアが解説

初心者向けにCSSでnth-of-typeを使って特定の要素にだけスタイルをあてる方法について解説しています。実際にコードを書きながら例をもとに説明しているので、自分でも書きながら理解していきましょう。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

監修してくれたメンター

Mak Tak

イラストレーター兼Webエンジニア。
4年間WEB制作会社にてフロントエンドを担当したのち、現在はフリーランスとして活動。居場所に縛られない働きかたを謳歌しています。

CSSでnth-of-typeを使って、特殊な「擬似クラス」を使う方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

目次

そもそもCSSの記述方法がわからない場合は、 CSSの書き方について解説した記事を読むとさらに理解が深まります。

 

【動画の解説はこちら】

 

田島悠介

今回はnth-of-typeという擬似クラスを使ってみよう。擬似クラスは、セレクタのうしろに追記することで要素の中でさらに条件をつけることができるものだよ。

大石ゆかり

田島メンター!nth-of-typeはどういった条件を指定できるんですか〜?

田島悠介

指定した要素が親要素から見て、同じ種類の要素のみを数えたとき何番目になるかというのを見るんだ。まずは基本の書き方を見てみよう。

大石ゆかり

分かりました!

 

nth-of-typeとは

nth-of-typeとは、指定した要素のうちx番目の要素を選択し、CSSに適用するための擬似クラスです。

擬似クラスとは、指定した要素の一部にCSSを反映できる方法を指します。

 

以下、コード例です。

//兄弟関係にある<span>のうちx番目の<span>を選択
span:nth-of-type(x){ 〜 }

<span>要素の数だけを数えて、x番目の<span>要素のみを選択します。

疑似クラスについて詳しく学びたい方は、HTML5で定義された擬似クラスをご覧ください。

 

nth-of-typeの書き方

「nth-of-type(2n)」の前に「:」(コロン)がついていることに注目してください。

li:nth-of-type(2n){
  /*適用する内容*/
 }

( )内部の「n」を使って、何番目であるかを記しています。
今回は「2n」番目であることから、2の倍数である偶数番目に適用されます。

また、「3n-1」や「odd」「even」という指定もできます。
「odd」「even」はそれぞれ奇数、偶数という指定方法です。

 

田島悠介

()内で指定された部分にのみ、スタイルが適用されるんだ。

大石ゆかり

この場合は偶数が対象ということですね。

田島悠介

次は実際の例で見てみよう。今回はリスト項目の指定の部分のみ、色を変えるというのをやってみるよ。

 

[PR] HTML/CSSで挫折しない学習方法を動画で公開中

実際に書いてみよう

実際にHTMLとCSSを書いてみましょう。

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>CSS nth-of-type</title>
    <link rel="stylesheet" type="text/css" href="sample.css">
  </head>
  <body>

    <ul>
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
      <li>5</li>
      <li>6</li>
      <li>7</li>
    </ul>

  </body>
</html>

CSS

li:nth-of-type(2n){
  color: #5bc0de;
}

li{
  margin: 10px;
  font-size: 120%;
}

 

リスト項目<li>の偶数番目に、CSSスタイルが適用されています。

スクリーンショット 2016-08-29 17.09.28

 

<li>のようなリストであれば、どのようにスタイルが適用されるのかわかりやすいので、一度試してみるといいでしょう。

上記にも説明していますが、(2n)という表現だけでなく、(odd)(偶数)、(even)(奇数)などの表現も使うことができます。

 

田島悠介

ちなみに、nth-of-typeと近い働きをする擬似クラスとして、nth-childというものもあるんだ。

大石ゆかり

nth-of-typeとnth-childはどう違うんですか?

田島悠介

最初にも言った通り、nth-of-typeは同じ種類の子要素を対象とするんだ。なので例えば、合間に異なる要素があった場合、それは順番に数えないということだね。

大石ゆかり

??? 一体どういうことでしょうか?

田島悠介

じゃあ実際の例を詳しく見ていこう。

 

nth-childとの違い

nth-of-typeとnth-childはx番目の要素を選択するのでとてもよく似ているものの、指定の要素以外の要素を数えるか、数えないかという違いがあります。

下記のようなHTMLで考えてみましょう。

HTML

<html>
  <head>
    <meta charset="utf-8">
    <title>nth-of-typeとnth-of-child</title>
  </head>
  <body>
    <ul>
      <li>
        <h2>List01</h2>
        <span>01</span>
        <span>02</span>
        <span>03</span>
        <span>04</span>
        <span>05</span>
      </li>
      <li>
        <h2>List02</h2>
        <span>06</span>
        <span>07</span>
        <span>08</span>
        <span>09</span>
        <span>10</span>
      </li>
      <li>
        <h2>List03</h2>
        <span>11</span>
        <span>12</span>
        <span>13</span>
        <span>14</span>
        <span>15</span>
      </li>
    </ul>
  </body>
</html>

CSS

body{
  margin:30px;
  font-size:20px;
  font-weight:bolder;
}
ul{
  list-style:none;
}
li{
  display:flex;
}
h2{
  padding:1em 0;
  font-size:20px;
}
span{
  padding:1em;
  margin:1em;
  background:gold;
}
span:nth-of-type(3){
  background:tomato;
}

 

 

nth-of-typeの例

span:nth-of-type(3){ background:tomato; }

上記とすると、<li>の中で3番目の<span>要素である03, 08, 13のボックスの背景色が赤色に変更されます。

nth-childの例

span:nth-child(3){ background: limegreen;}

上記とした場合、<li>の中の<h2>要素が1番目になるので、2つめの<span>要素である02, 07, 12のボックスの背景色が緑色に変化するでしょう。

実際のイメージ

田島悠介

nth-of-typeは指定した要素だけを数えるのに対して、nth-childは指定した要素を含む兄弟関係にある要素の数をすべて数えるんだ。

大石ゆかり

なるほど、順番の数え方が少し違うということですね。ありがとうございました!

 

CSSを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

CSSを学習していて、このように思ったことはありませんか?

テックアカデミーのWebデザインコースでは、第一線で活躍する「プロのWebデザイナー」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたWebデザイナーの手厚いサポートを受けながら、オリジナルのWebサイト制作を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役Webデザイナーから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!