icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

目次

1時間でできる無料体験!

そもそも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] Webデザインで副業する学習方法を動画で公開中

実際に書いてみよう

実際に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は同じ種類の子要素を対象とするんだ。なので例えば、合間に異なる要素があった場合、それは順番に数えないということだね。

大石ゆかり

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

田島悠介

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

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

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デザイナーから教わること」を実感してみてください。

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

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する