LoginSignup
272
254

【CSS】きみは "擬似クラス" 何個言えるかな??

Last updated at Posted at 2022-08-18

はじめに

あなたは "擬似クラス" 何個言えますか?

擬似クラスには、:hover:active:focusといったよく使うものから、
:is():where():has()といったこれからサポートされていくものまで
たくさん種類があるのは、ご存知ではないでしょうか?

でも、"擬似クラス" 何個言えますか?と聞かれると数個くらいしか思い出せないと言う方は多いのではないでしょうか?

もしかしたら、15個以上言えたら、CSS玄人と言えるかも知れません。

この記事では、たくさん種類があるのは知っているけど、詳しくはわからない "擬似クラス" が、
何種類あるか、どんな擬似クラスがあるかをまとめました。

知らなかった "擬似クラス" の数を数えながら、読んでいただけると嬉しいです。

擬似クラス

擬似クラスとは?

擬似クラスとは、セレクタのあとにつけることで、
指定した要素の状態に応じて、指定した要素のスタイルを変化させることができるものです。

また、:first-of-typeようにHTMLの要素に関するものだけではなく、
:visited:hoverのような外的な要因(閲覧履歴・カーソル)との関係でも
スタイルを変化させることができます。

擬似要素との違い

よく技術ブログ等でも、擬似クラスと擬似要素をごちゃごちゃに書いているのを目にするので、
擬似クラスと擬似要素の違いにも触れておきます。

擬似クラス擬似要素の違いは、
擬似クラスが、指定した要素の状態に応じて変化させるのに対し、
擬似要素は、指定した要素の一部分を変化させるかです。

例えば、有名な擬似要素 ::before では、指定した要素の前(before)を変化させます。
また、::first-lineでは、指定した要素の1行目を変化させます。

擬似クラス 一覧

では早速、"擬似クラス" をまとめていきます。
※ 主要ブラウザーでまだ対応されていないものは、:tools: ← このアイコンをつけておきます。

:sound: ~~ 🎶 ~~ 🎶 ~~

キミはもう、たっぷり "擬似クラス" 覚えた?
"擬似クラス" 全部覚えたキミも、
まだまだのキミも、
「"擬似クラス" 何個言えるかな?」に挑戦だ!

:sound: ~~ 🎶 ~~ 🎶 ~~

🎶 ラ・ラ・ラ 言えるかな? 🎶
🎶 キ・ミ・は 言えるかな? 🎶
🎶 "擬似クラス"のなまえ! 🎶

:sound: ~~ 🎶 ~~ 🎶 ~~

組み合わせ擬似クラス

1. :is()

:is() は、()の中に含まれているセレクタと一致する要素のスタイルを変化させます。
:where( )との違いは、:is( )の詳細度にカウントされますが、:where( )の詳細度が0であることです。
image1.png

2. :not()

:not()は、()の中に含まれるセレクタと一致しない要素のスタイルを変化させます。
image2.png

3. :where()

:where() は、()の中に含まれているセレクタと一致する要素のスタイルを変化させます。
:is( )との違いは、:is( )の詳細度にカウントされますが、:where( )の詳細度が0であることです。
image3.png

4. :has() :tools:

:has() は、 ()の中に含まれているセレクタが子要素に含まれている要素のスタイルを変化させます。
image4.png

言語擬似クラス

5. :dir() :tools:

:dir()は、()で指定した書字方向に応じて、要素のスタイルを変化させます。
ltrで左から右へのテキスト→、 rtlで右から左へのテキスト←を指定します。
image5.png

6. :lang()

:lang()は、()で指定した言語設定に応じて要素のスタイルを変化させます。
jaで日本語、enで英語、frでフランス語など。
image6.png

場所擬似クラス

7. :any-link

:any-linkは、href属性を持つ、<a><area>要素のスタイルを変化させます。
image7.png

8. :link

:linkは、まだ訪問していないhref属性を持つ、<a><area>要素のスタイルを変化させます。
image8.png

9. :visited

:visitedは、訪問したことがあるhref属性を持つ、<a><area>要素のスタイルを変化させます。
image9.png

10. :local-link :tools:

:local-linkは、ページ内のリンクのhref属性を持つ、<a><area>要素のスタイルを変化させます。
image10.png

11. :target

:targetは、ページ内リンクの対象である要素のスタイルを変化させます。
image11.png

12. :target-within

:target-withinは、ページ内リンクの対象である子要素を持つ要素のスタイルを変化させます。
image12.png

13. :scope

:scopeは、scope属性を持つ要素のスタイルを変化させます。
image13.png

ユーザーアクション擬似クラス

14. :hover

:hoverは、マウスポインターが触れた要素のスタイルを変化させます。
image14.png

15. :active

:activeは、クリックなどでアクティブになった要素のスタイルを変化させます。
image15.png

16. :focus

:focusは、フォーカスが当たっている要素のスタイルを変化させます。
image16.png

17. :focus-visible

:focus-visibleは、tabフォーカスされている要素のスタイルを変化させます。
image17.png

18. :focus-within

:focus-withinは、フォーカスされている子要素に持つ要素のスタイルを変化させます。
image18.png

時間擬似クラス

19. :current :tools:

:currentは、字幕のようなタイムラインに沿って、現在表示されている要素のスタイルを変化させます。
image19.png

20. :post :tools:

:postは、:currentの前に発生する要素のスタイルを変化させます。
image20.png

21. :future :tools:

:futureは、:currentのあとに発生する要素のスタイルを変化させます。
image21.png

リソース擬似クラス

22. :playing :tools:

:playingは、再生可能なメディア要素が再生中の時にスタイルを変化させます。
image22.png

23. :paused :tools:

:pausedは、再生可能なメディア要素が一時停止中の時にスタイルを変化させます。
image23.png

入力擬似クラス

24. :autofill

:autofillは、ブラウザーによって自動補完された入力要素のスタイルを変化させます。
image24.png

25. :enabled

:enabledは、有効な入力要素のスタイルを変化させます。
image25.png

26. :disabled

:disabledは、無効な入力要素のスタイルを変化させます。
image26.png

27. :read-only

:read-onlyは、ユーザーが変更することができない入力要素のスタイルを変化させます。
image27.png

28. :read-write

:read-writeは、ユーザーが変更することができる入力要素のスタイルを変化させます。
image28.png

29. :placeholder-shown

:placeholder-shownは、プレイスホルダーが有効な要素のスタイルを変化させます。
image29.png

30. :default

:defaultは、ラジオボタン・チェックボックス・セレクトで、デフォルトになっている入力要素のスタイルを変化させます。
image30.png

31. :checked

:checkedは、ラジオボタン・チェックボックス・セレクトで、ON状態になっている入力要素のスタイルを変化させます。
image31.png

32. :indeterminate

:indeterminateは、ラジオボタン・チェックボックス・セレクトで、中間の状態になっている入力要素のスタイルを変化させます。
image32.png

33. :blank :tools:

:blank は、必須・任意関係なく、何も入力されていない入力要素のスタイルを変化させます。
image33.png

34. :valid

:validは、入力形式が正しく有効な入力要素のスタイルを変化させます。
image34.png

35. :invalid

:invalidは、入力形式が正しなく無効な入力要素のスタイルを変化させます。
image35.png

36. :in-range

:in-rangeは、入力された値が範囲内にあり、範囲制限のある入力要素のスタイルを変化させます。
image36.png

37. :out-of-range

:out-rangeは、入力された値が範囲外にあり、範囲制限のある入力要素のスタイルを変化させます。
image37.png

38. :required

:requiredは、必須要素である入力要素のスタイルを変化させます。
image38.png

39. :optional

:optionalは、任意要素である入力要素のスタイルを変化させます。
image39.png

40. :user-invalid :tools:

:user-invalidは、ユーザーの操作の後に有効と判断されなかった入力要素のスタイルを変化させます。
image40.png

表示状態擬似クラス

41. :modal

:modalは、モーダル ダイアログの要素のスタイルを変化させます。
image41.png

42. :fullscreen :tools:

:fullscreenは、フルスクリーンモードになっている要素のスタイルを変化させます。
image42.png

43. :picture-in-picture :tools:

:picture-in-pictureは、メディア属性がピクチャ・イン・ピクチャモードになっている要素のスタイルを変化させます。image43.png

ツリー構造擬似クラス

44. :root

:rootは、DOMツリーのルート要素のスタイルを変化させます。
image44.png

45. :empty

:emptyは、子を持たない要素のスタイルを変化させます。
image45.png

46. :nth-child

:nth-childは、 兄弟要素の中で前から数えた特定の位置にある要素のスタイルを変化させます。
image46.png

47. :nth-last-child

:nth-last-childは、 兄弟要素の中で後ろから数えた特定の位置にある要素のスタイルを変化させます。
image47.png

48. :first-child

:first-childは、 兄弟要素の中で1番最初の要素のスタイルを変化させます。
image48.png

49. :last-child

:last-childは、 兄弟要素の中で1番最後の要素のスタイルを変化させます。
image49.png

50. :only-child

:only-childは、 兄弟要素がいない要素のスタイルを変化させます。
image50.png

51. :nth-of-type

:nth-of-typeは、タグ名を指定して、兄弟要素の中で前から数えた特定の要素のスタイルを変化させます。
image51.png

52. :nth-last-of-type

:nth-last-of-typeは、タグ名を指定して、兄弟要素の中で後ろから数えた特定の要素のスタイルを変化させます。
image52.png

53. :first-of-type

:first-of-typeは、タグ名を指定して、兄弟要素の中で1番最初の特定の要素のスタイルを変化させます。
image53.png

54. :last-of-type

:last-of-typeは、タグ名を指定して、兄弟要素の中で1番最後の特定の要素のスタイルを変化させます。
image54.png

55. :only-of-type

:only-of-typeは、タグ名を指定して兄弟要素がいない特定の要素のスタイルを変化させます。
image55.png

まとめ

:sound: ~~ 🎶 ~~ 🎶 ~~

🎶 ラ・ラ・ラ 言えたかな? 🎶
🎶 キ・ミ・は 言えたかな? 🎶
🎶 "擬似クラス"のなまえ! 🎶

:sound: ~~ 🎶 ~~ 🎶 ~~

知らなかった "擬似クラス" の数は、何個でしたでしょうか?
もしよかったら、知ってた・知らなかった "擬似クラス" の数コメントで教えてください。
数はちょっと.. という方は、CSS玄人であることをおしえてください。笑


最後まで読んでくださってありがとうございます!

普段はデザインやフロントエンドを中心にQiitaに記事を投稿しているので、ぜひQiitaのフォローとX(Twitter)のフォローをお願いします。

272
254
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
272
254