擬似クラス!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を使って、特殊な「擬似クラス」を使う方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
目次
そもそも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」はそれぞれ奇数、偶数という指定方法です。
()内で指定された部分にのみ、スタイルが適用されるんだ。
この場合は偶数が対象ということですね。
次は実際の例で見てみよう。今回はリスト項目の指定の部分のみ、色を変えるというのをやってみるよ。
実際に書いてみよう
実際に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スタイルが適用されています。
<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デザイナーから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!