順番を指定するCSSを使い倒す!-ほにゃらら-childとほにゃらら-of-typeの違いとその辺の便利な使い方-
最近向かいの席のkagataの机の上にある犬の写真が気になっているyanagimachiです。
犬好きなのだろうか・・・
さて今回はプライベートで自分用にまとめたこのあたりの情報が2年ほど経ってもアクセス数がすごいので、バシャログでまとめ直してみたいと思います。
2年も経っているので、もっとわかりやすくまとめられるはず!
どんな種類があるの?
種類 | -child | -of-type |
---|---|---|
最初 | :first-child | :first-of-type |
最後 | :last-child | :last-of-type |
前からX番目 | :nth-child(X) | :nth-of-type(X) |
後ろからX番目 | :nth-last-child(X) | :nth-last-of-type(X) |
1個だけ | :only-child | :only-of-type |
調べてみたところこれだけの種類があります。
全部は覚えられないよ!と思うかもしれませんが、実は10個全て覚える必要はありません。
種類&ほにゃらら-childとほにゃらら-of-typeの違いがわかれば、組あわせでわかっちゃうんです。
ほにゃらら-childとほにゃらら-of-typeの違いは何?
:first-childと:first-of-typeで違いを見てみたいと思います。
//HTML
<dl>
<dt>dt</dt>
<dd>1番目のdd</dd>
<dd>2番目のdd</dd>
<dd>3番目のdd</dd>
</dl>
1番目のddを指定する場合、dd:first-childを使うことはできません。
使うのはdd:first-of-typeです。
ほにゃらら-childは要素すべての順番を指定するもので、例のHTMLの場合は最初の子要素はdtなので指定できないわけです。
それに対して、ほにゃらら-of-typeは特定の要素(今回だとdd)での順番を指定する時に使います。
まとめ
- ほにゃらら-child:要素すべての順番を指定する
- ほにゃらら-of-type:特定の要素の順番を指定する
nth-ほにゃららとは?
前から何番目の要素を指定したい時に使います。
liの2番目を指定したい時はli:nth-ほにゃらら(2)となります。
先ほどの:first-ほにゃららと同じ指定することもでき、:first-childと同じなのは:nth-child(1)です。
倍数を指定する
カラムレイアウトなどで3の倍数の時だけmargin-rightを0にしたい時などに使います。
その場合、:nth-ほにゃらら(3n)となります。
奇数と偶数を指定する
奇数を指定したい時には:nth-ほにゃらら(odd)、偶数を指定したい時には:nth-ほにゃらら(even)を使います。
奇数と偶数の英語がどちらかわからなくなる、という時は奇数の英語は奇数(oddなので3)で偶数の英語は偶数(evenなので4)と考えると覚えやすいです:)
先ほど出てきた倍数の2の倍数である:nth-child(2n)は:nth-child(even)と同じです。
まとめ
- X番目:nth-ほにゃらら(X)
- Xの倍数:nth-ほにゃらら(Xn)
- 奇数:nth-ほにゃらら(odd)
- 偶数:nth-ほにゃらら(even)
nth-last-ほにゃららとは?
後ろから何番目の要素を指定したい時に使います。
liの後ろから2番目を指定したい時はli:nth-last-ほにゃらら(2)となります。
倍数も指定する
こちらも.item:nth-last-ほにゃらら(3n) で後ろから指定ができます。
とはいえ、使ったことはないです。
奇数と偶数を指定もできる
後ろから奇数を指定したい時には:nth-last-ほにゃらら(odd)、偶数を指定したい時には:nth-last-ほにゃらら(even)を使います。
とはいえ、こちらも使ったことはないです。
まとめ
- 後ろから指定:nth-last-ほにゃらら
ちょっと寄り道
順番を指定するCSSと合わせて使うと便利な:not()
最初だけ(:first-child)border-topが必要ないリストなどの時に便利です。
1個だけ要素がある
例えばボタンが複数ある時には幅100pxに、1つしかない時は大きめに150pxにしたい時などには:only-ほにゃららを使います。
子要素がない時
子要素がない時には:emptyを使います。
まとめ
- ほにゃらら以外:not(ほにゃらら)
- 1個だけ要素がある:only-ほにゃらら
- 子要素がない:empty
ここまでわかったら、ぜひ+αで知っておきたい順番の指定
倍数の次の要素を指定する
カラムレイアウトなどで3の倍数の次の要素だけ指定したい時があります。 その場合、:nth-ほにゃらら(3n+1)となります。
X番目から最後まで(X番目以降)
3番目以降は非表示にしておく、なんていう時に使います。
最初からX番目まで(X番目以前)
先ほどのX番目以降とは逆で、デフォルトを非表示にしてX番目以前は表示するなんていう時に使います。
最後からX番目以前
デモでご確認ください。
最後からX番目まで
デモでご確認ください。
まとめ
- Xの倍数の次:nth-ほにゃらら(Xn+1)
- X番目から最後まで(X番目以降):nth-ほにゃらら(n+X)
- 最初からX番目まで(X番目以前):nth-ほにゃらら(-n+X)
- 最後からX番目以前:nth-last-ほにゃらら(n+X)
- 最後からX番目まで:nth-last-ほにゃらら(-n+X)
まとめ
ここまで読めばほにゃらら-childとほにゃらら-of-typeにはだいぶ詳しくなれたかと思います。
ぜひ業務やプライベートの開発で使ってみてください!