絵でわかるWebプログラミング入門

サンプル付きCSSセレクタ47種

よく使うCSSセレクタの一覧です。概要をクリックすると各セクションに移動します。表の分類は勝手に分けました。


分類CSSセレクタ概要
基本#xxidで選ぶ
.xxclassで選ぶ
ELEMENTHTMLの要素名で選ぶ
*全要素を選ぶ
xx,xxセレクタのグループ化
:not(S)除外する
位置XX > xx親要素を条件にする
XX xx先祖要素を条件にする
XX + xx直前の要素を条件にする
XX ~ xx兄要素を条件にする
属性[xx]属性名で選ぶ
[xx=yy]属性と値で選ぶ
[xx~=yy]スペース区切りの属性値で選ぶ
[xx|=yy]ハイフン区切りの属性値の先頭で選ぶ
[xx^=yy]属性値の先頭文字列で選ぶ
[xx$=yy]属性値の末尾文字列で選ぶ
[xx*=yy]属性値に含まれる文字列で選ぶ
同階層:first-child最初の要素を選ぶ
:last-child最後の要素を選ぶ
:nth-child(N)N番目の要素を選ぶ
:nth-last-child(N)後ろからN番目の要素を選ぶ
:only-child1つなら選ぶ
選択要素:first-of-type最初の選択要素を選ぶ
:last-of-type最後の選択要素を選ぶ
:nth-of-type(N)N番目の選択要素を選ぶ
:nth-last-of-type(N)後ろからN番目の選択要素を選ぶ
:only-of-type選択要素が1つなら選ぶ
リンク:link未訪問を選ぶ
:visited訪問済を選ぶ
:hoverカーソル下を選ぶ
:activeクリック中を選ぶ
フォーム:checkedcheckedを選ぶ
:focusフォーカスを選ぶ
:in-range範囲内を選ぶ
:out-of-range範囲外を選ぶ
:valid適正値を選ぶ
:invalid不正値を選ぶ
:disableddisabledを選ぶ
:enabled非disabledを選ぶ
:read-onlyreadonlyを選ぶ
:read-write非readonlyを選ぶ
:requiredrequiredを選ぶ
:optional非requiredを選ぶ
マイナー:rootルートを選ぶ
:langlang属性値で選ぶ
:empty空要素を選ぶ
:target#付きリンク先を選ぶ

基本のセレクタ

idで選ぶ(idセレクタ)

HTMLのid属性値で選ぶには「#」を付けます。

idを名指しするので1つの要素だけが選ばれます。

優先度が高いセレクタなので、スタイルが競合した場合は基本的に適用されます。

#englion { color:red ; }
	<div id="englion">選ばれる</div>
	<div id="lion">選ばれない</div>

classで選ぶ(クラスセレクタ)

HTMLのclass属性値で選ぶには「.」(ドット)を付けます。

利用頻度の高いセレクタです。

.englion { color:red ; }
	<div class="englion">選ばれる</div>
	<div id="englion">選ばれない</div>
	<div class="lion">選ばれない</div>
	<div class="englion">選ばれる</div>

HTMLの要素名で選ぶ(タイプセレクタ)

HTML要素で選ぶには要素名をそのまま書きます。このセレクタにはidやclass属性は関係ありません。

div { color:red ; }
<div id="englion">選ばれる</div>
<span class="englion">選ばれない</span>
<div class="englion">選ばれる</div>

全要素を選ぶ(ユニバーサルセレクタ)

全ての要素を選ぶには「*」を使います。

* { color:red ; }
<h1>選ばれる</h1>
<span>選ばれる</span>
<div>選ばれる</div>

セレクタのグループ化

セレクタをグループ化するにはカンマで区切ります。

セレクタのグループ化は、複数の要素に同じスタイルを適用したい場合に便利です。

h1,div { color:red ; }
<h1>選ばれる</h1>
<span>選ばれない</span>
<div>選ばれる</div>

除外する

除外するには「:not(除外するセレクタ)」を付けます。

p:not(.a) { color:red ; }
<p>選ばれる</p>
<p class="a">選ばれない</p>
<p>選ばれる</p>

位置関係で選ぶ

位置関係を条件にしたセレクタを紹介します。

親要素を条件にする

親要素を条件にするには「親要素 >」を付けます。

サンプルコードのセレクタでは、divを親に持つstrongが選ばれます。このセレクタには親以上の親、つまり先祖要素は関係ありません。

見方を変えると、divの(孫ではなく)子であるstrongが選ばれるともいえます。

div > strong { color:red ; }
<div>親
  <strong>選ばれる</strong>
  <span>
    <strong>孫は選ばれない</strong>
  </span>
  <strong>子は全て選ばれる</strong>
</div>

先祖要素を条件にする

先祖要素を条件にするには前にスペースを空けて先祖要素を指定します。

サンプルコードのセレクタでは、先祖にdivを持つstrongが選ばれます。

見方を変えると、divの子孫であるstrongが選ばれるともいえます。

div strong { color:red ; }
<div>先祖
  <span>
    <strong>親に関係なく孫は選ばれる</strong>
  </span>
  <strong>子も選ばれる</strong>
</div>

直前の要素を条件にする

直前の要素を条件にするには「直前の要素 +」を付けます。

サンプルコードのセレクタでは、直前の要素がbであるstrongが選ばれます。

見方を変えると、bの直後にあるstrongが選ばれるともいえます。

b + strong { color:red ; }
<strong>選ばれない</strong>
<b>直前</b>
<strong>選ばれる</strong>
<strong>選ばれない</strong>

兄要素を条件にする

兄要素を条件にするには「兄要素 ~」を付けます。

サンプルコードのセレクタでは、兄要素にbを持つstrongが選ばれます。

見方を変えると、b以降のstrongが選ばれるともいえます。

b ~ strong { color:red ; }
<strong>選ばれない</strong>
<b>兄</b>
<strong>選ばれる</strong>
<span>選ばれない</span>
<strong>直後でなくても選ばれる</strong>
<p>
  <strong>甥は選ばれない</strong>
</p>

属性で選ぶ

属性に関係したセレクタを紹介します。

属性名で選ぶ

属性名で選ぶには「[属性名]」とします。

サンプルコードのセレクタでは、title属性を持つ要素が選ばれます。このセレクタに属性値は関係ありません。

[title] { color:red ; }
<p title="値は関係ない">選ばれる</p>
<p>選ばれない</p>

属性と値で選ぶ

属性と値で選ぶには「[属性名=値]」とします。

サンプルコードのセレクタでは、title属性値が「red」の要素が選ばれます。

[title=red] { color:red ; }
<p title="reds">選ばれない</p>
<p title="red">選ばれる</p>

スペース区切りの属性値で選ぶ

スペース区切りの属性値リストに含まれる単語で選ぶには「[属性名~=単語]」とします。

サンプルコードのセレクタでは、title属性値のリストに「red」が含まれる要素が選ばれます。

[title~=red] { color:red ; }
<p title="blue red">選ばれる</p>
<p title="red">単体でも選ばれる</p>
<p title="blue red-pink">選ばれない</p>

ハイフン区切りの属性値の先頭で選ぶ

ハイフン区切りの属性値リストの先頭の単語で選ぶには「[属性名|=単語]」とします。

サンプルコードのセレクタでは、title属性値のリストが「red」で始まる要素が選ばれます。

[title|=red] { color:red ; }
<p title="red-blue">選ばれる</p>
<p title="red">単体でも選ばれる</p>
<p title="blue-red">選ばれない</p>

このセレクタは主にlang属性に対して使います。lang属性の値にはよくハイフンが含まれるためです。

属性値の先頭文字列で選ぶ

属性値の先頭文字列で選ぶには「[属性名^=先頭文字列]」とします。

サンプルコードのセレクタでは、title属性値が「red」で始まる要素が選ばれます。

[title^=red] { color:red ; }
<p title="redd">選ばれる</p>
<p title="ared">選ばれない</p>

属性値の末尾文字列で選ぶ

属性値の末尾文字列で選ぶには「[属性名$=末尾文字列]」とします。

サンプルコードのセレクタでは、title属性値が「red」で終わる要素が選ばれます。

[title$=red] { color:red ; }
<p title="ared">選ばれる</p>
<p title="redd">選ばれない</p>

属性値に含まれる文字列で選ぶ

属性値に含まれる文字列で選ぶには「[属性名*=文字列]」とします。このセレクタは文字列の位置は関係ありません。

サンプルコードのセレクタでは、title属性値に「red」が含まれる要素が選ばれます。

[title*=red] { color:red ; }
<p title="aredd">選ばれる</p>
<p title="reed">選ばれない</p>

同階層の順番で選ぶ

同階層で何番目の要素かで選びます。

最初の要素を選ぶ

最初の要素を選ぶには「:first-child」を付けます。

サンプルコードの下では、同階層でb要素が最初の要素なのでspan要素は選ばれません。

span:first-child { color:red ; }
<div>
  <span>選ばれる</span>
  <span>選ばれない</span>
  <span>選ばれない</span>
</div>

<div>
  <b>選ばれない</b>
  <span>選ばれない</span>
  <span>選ばれない</span>
  <span>選ばれない</span>
</div>

最後の要素を選ぶ

最後の要素を選ぶには「:last-child」を付けます。

span:last-child { color:red ; }
<div>
  <span>選ばれない</span>
  <span>選ばれない</span>
  <span>選ばれる</span>
</div>

N番目の要素を選ぶ

順番を指定するには「:nth-child(順番)」を付けます。例えば2番目の要素を選ぶには「:nth-of-type(2)」とします。2th-of-typeということです。

span:nth-child(2) { color:red ; }
<div>
  <span>選ばれない</span>
  <span>選ばれる</span>
  <span>選ばれない</span>
  <span>選ばれない</span>
</div>

後ろからN番目の要素を選ぶ

順番を後ろから数えて指定するには「:nth-last-child(順番)」を付けます。

span:nth-last-child(2) { color:red ; }
<div>
  <span>選ばれない</span>
  <span>選ばれない</span>
  <span>選ばれる</span>
  <span>選ばれない</span>
</div>

1つなら選ぶ

同階層で1つだけの要素を選ぶには「:only-child」を付けます。

span:only-child { color:red ; }
<div>
  <span>選ばれない</span>
  <span>選ばれない</span>
</div>

<div>
  <span>選ばれる</span>
</div>

選択要素で選ぶ

同階層で何番目のタイプ(要素型)なのかで選びます。

最初の選択要素を選ぶ

最初にある選択要素型を選ぶには「:first-of-type」を付けます。

サンプルコードのセレクタでは、各階層のspan要素のうち、最初のspan要素だけ選ばれます。

span:first-of-type { color:red ; }
<div>
  <span>選ばれる</span>
  <span>選ばれない</span>
  <span>選ばれない</span>
</div>
<div>
  <b>選ばれない</b>
  <span>選ばれる</span>
  <span>選ばれない</span>
</div>

first-of-typeとfirst-childの違いは「同階層で最初の要素」なのか「同階層の選択要素内で最初の要素」なのかという点です。

最後の選択要素を選ぶ

最後の選択要素型を選ぶには「:last-of-type」を付けます。

span:last-of-type { color:red ; }
<div>
  <span>選ばれない</span>
  <span>選ばれない</span>
  <span>選ばれる</span>
</div>

N番目の選択要素を選ぶ

順番を指定するには「:nth-of-type(順番)」を付けます。

span:nth-of-type(2) { color:red ; }
<div>
  <span>選ばれない</span>
  <span>選ばれる</span>
  <span>選ばれない</span>
  <span>選ばれない</span>
</div>

後ろからN番目の選択要素を選ぶ

順番を後ろから数えて指定するには「:nth-last-of-type(順番)」を付けます。

span:nth-last-of-type(2) { color:red ; }
<div>
  <span>選ばれない</span>
  <span>選ばれない</span>
  <span>選ばれる</span>
  <span>選ばれない</span>
</div>

選択要素が1つなら選ぶ

同階層で1つだけの選択要素を選ぶには「:only-of-type」を付けます。

span:only-of-type { color:red ; }
<div>
  <span>選ばれない</span>
  <span>選ばれない</span>
</div>

<div>
  <b>選ばれない</b>
  <span>選ばれる</span>
</div>

リンク要素を選ぶ

未訪問を選ぶ

未訪問のリンク要素を選ぶには「:link」を付けます。

サンプルコードのセレクタでは「selector」(このページ)は訪問済みなので選ばれず、「undefined」は未訪問なので選ばれます。ブラウザが訪問ページを記憶しています。

a:link { color:red ; }
<a href="selector">選ばれない</a>
<a href="undefined">選ばれる</a>

訪問済を選ぶ

訪問済のリンク要素を選ぶには「:visited」を付けます。

a:visited { color:red ; }
<a href="selector">選ばれる</a>
<a href="undefined">選ばれない</a>

カーソル下を選ぶ

マウスポインタの下にあるリンク要素を選ぶには「:hover」を付けます。

a.red:hover { color:red ; }
<a class="red" href="selector">マウスオーバーで選ばれる</a>
<a href="selector">選ばれない</a>

マウスオーバーで選ばれる
選ばれない

クリック中を選ぶ

クリックや右クリックされている要素を選ぶには「:active」を付けます。

サンプルコードのセレクタではstrongタグに付けていますが、ふつうはリンク要素に使います。

strong:active { color:red ; font-size:200% ; }
<strong>クリック</strong>

フォーム関連

checkedを選ぶ

チェックされている要素を選ぶには「:checked」を付けます。ユーザが選べるタイプのinput要素に使います。

サンプルコードのセレクタでは、チェック要素の直後のb要素が選ばれます。

input:checked+b { color:red ; }
<input type="checkbox"><b>選ばれない</b>
<input type="checkbox" checked><b>選ばれる</b>

フォーカスを選ぶ

フォーカスが当たっている要素を選ぶには「:focus」を付けます。

input:focus { color:red ; }
<input type="text" vlaue="フォーカスが当たると選ばれる">

範囲内を選ぶ

入力値が範囲内の要素を選ぶには「:in-range」を付けます。

input:in-range { color:red ; }
<input type="number" max="8" min="4">

範囲外を選ぶ

入力値が範囲外の要素を選ぶには「:out-of-range」を付けます。

input:out-of-range { color:red ; }
<input type="number" max="8" min="4">

適正値を選ぶ

入力値が適正な要素を選ぶには「:valid」を付けます。input要素によるフォーマットに従っていると選ばれます。

input:valid { color:red ; }
<input type="url">

不正値を選ぶ

入力値が不正な要素を選ぶには「:invalid」を付けます。

input:invalid { color:red ; }
<input type="url">

disabledを選ぶ

disabled属性が設定されている要素を選ぶには「:disabled」を付けます。disabled属性は入力要素を無効にします。

input:disabled { color:red ; }
<input type="text" value="選ばれない">
<input type="text" vlaue="選ばれる" disabled>
<input type="text" value="選ばれない">

非disabledを選ぶ

disabled属性が設定されている要素以外の要素を選ぶには「:enabled」を付けます。

input:enabled { color:red ; }
<input type="text" value="選ばれる">
<input type="text" vlaue="選ばれない" disabled>
<input type="text" value="選ばれる">

readonlyを選ぶ

readonly属性が設定されている要素を選ぶには「:read-only」を付けます。radonly属性は入力要素を読み込み専用にして書き込みを禁止します。

input:read-only { color:red ; }
<input type="text" value="選ばれない">
<input type="text" value="選ばれる" readonly>

非readonlyを選ぶ

readonly属性が設定されていない要素を選ぶには「:read-write」を付けます。

input:invalid { color:red ; }
<input type="text" value="選ばれる">
<input type="text" value="選ばれない" readonly>

requiredを選ぶ

required属性が設定されている要素を選ぶには「:required」を付けます。requiredは入力必須項目を示します。

input:required { color:red ; }
<input type="text" value="選ばれない">
<input type="text" value="選ばれる" required>

非requiredを選ぶ

required属性が設定されていない要素を選ぶには「:optional」を付けます。

input:optional { color:red ; }
<input type="text" value="選ばれる">
<input type="text" value="選ばれない" required>

マイナーなセレクタ

ルートを選ぶ

ドキュメントのツリー上のルート要素を選ぶには「:root」を付けます。HTMLドキュメントではhtml要素が選ばれます。

HTML専用のCSSではあまり使いません。

:root { color:red ; }
<html>選ばれる</html>

lang属性値で選ぶ

lang属性値で選ぶには「:lang(値)」を付けます。日本語は「:lang(ja)」です。

:lang(ja) { color:red ; }
<p lang="it">Non sono scelto</p>
<p lang="ja">選ばれる</p>
<p lang="de">Nicht ausgewählt</p>

空要素を選ぶ

テキストや子要素を持たない空要素を選ぶには「:empty」を付けます。

サンプルコードのセレクタでは、空のspan要素の直後のb要素が選ばれます。

span:empty+b { color:red ; }
<span></span><b>選ばれる</b>
<span>選ばれ</span><b>ない</b>

#付きリンク先を選ぶ

#付きのページ内リンク先の要素を選ぶには「:target」を付けます。クリック後URLに#idが付くと選ばれます。

:target { color:red ; }
<a href="#red">クリック</a>

<span id="red">選ばれる</span>