LoginSignup
4
4

More than 5 years have passed since last update.

忘れやすいCSSセレクタ

Last updated at Posted at 2017-03-24

アスタリスク(*)ですべての要素にスタイルを適用することができます。

▼すべての要素に適用されます。
* {
color:red;
}

▼p要素の中にある要素すべてに適用されます。
p * {
color:red;

}

クラス名を半角スペースで区切ると複数適用することもできます。

■ CSS ■
p.sample1 {
color:red;
}
p.sample2 {
font-size:18px;
}

■ HTML ■

2種類のスタイルが同時に適用されます

セレクタを半角スペースで区切ると、ある要素の下の階層にある要素にスタイルを適用します。
p strong {
font-size:16px;
}

▼pタグの中にあるstrong要素に適用されます。

このようにpタグのなかにあるstrongタグに適用されます。

セレクタを「>」で区切ると、ある要素の直下の階層にある要素にスタイルを適用します。

div.sample > a {
font-size:18px;
font-weight:bold;
}

クラス名sampleの直下にあるa要素にのみ適用されます。

<div class="sample">
  <a href="#">リンク1<a/>
  <ul>
    <li><a href="#">リンク1<a/></li>
  </ul>
<div>

▼「+」で隣接している要素にスタイルを適用することができます。

h4要素に隣接しているp要素の文字が赤になります。

<h4>H4要素</h4>
<p>h4要素の隣にあると適用されます</p>
<p>h4要素の隣ではないので適用されません</p>

「~」である要素の後にある要素にスタイルを適用することができます。

h4要素に隣接しているp要素の文字が赤になります。

h4 ~ p {
  color:red;
  font-weight:bold;
}

<p>h4要素のの前なので適用されません</p>
<h4>H4要素</h4>
<p>h4要素の後にあると適用されます</p>
<p>h4要素の後にあると適用されます</p>

最初の行にだけ適用

:first-lineを指定することで、最初の行にだけ適応されます。今回の場合1行目だけ赤い太字になり、2行目からは元に戻ります。

:first-line

p:first-line {
  font-weight:bold;
  color:red;
}

#最初に現れる要素にだけ適用
:first-child
p:first-child {
  font-weight:bold;
  color:red;
}

<p>最初のp要素にだけ適用されます。</p>
<p>2つ目以降のp要素には適用されません。</p>

n番目に現れる要素に適用

:nth-of-type(n)でn番目に現れる要素にスタイルを適用します。
2番目に現れるp要素にのみ適用されます。

p:nth-of-type(2) {
  font-weight:bold;
  color:red;
}

<p>1行目</p>
<p>2行目</p>
<p>3行目</p>
<p>4行目</p>
<p>5行目</p>

nの部分は以下のように複数指定することもできます。
:nth-child(n) ・・・ n番目の要素に適用
:nth-child(odd) ・・・ 奇数番目の要素に適用
:nth-child(2n+1) ・・・ 奇数番目の要素に適用
:nth-child(even) ・・・ 偶数番目の要素に適用
:nth-child(2n) ・・・ 偶数番目の要素に適用
:nth-child(3n) ・・・ 3,6,9,12…番目の要素に適用
:nth-child(3n+1) ・・・ 1,4,7,10…番目の要素に適用

後ろからn番目に現れる要素に適用

:nth-last-of-type(n)で後ろから数えてn番目に現れる要素にスタイルを適用します。nの使い方は先ほどと同じです。

p:nth-last-of-type(2) {
  font-weight:bold;
  color:red;
}
後ろから2番目に現れるp要素にのみ適用されます。
<p>1行目</p>
<p>2行目</p>
<p>3行目</p>
<p>4行目</p>
<p>5行目</p>

オンマウス時に適用

:hover
hoverといえばリンクですが、divでも利用できます。ただしIE6はダメ

div.onmouse:hover {
  background:#eee;
}

#該当しない場合に適用
指定したセレクタに該当しない場合にスタイルが適用されます。
p:not(#sample) {
  font-size:18px;
}
「sample」というidを付けられたpタグ以外にスタイルが適用されます。
body *:not(strong) {
font-size:18px;
}

チェックされているユーザーインターフェース要素に適用

ようするにラジオボタンやチェックボックスです。

input[type=radio]:checked + label {
  color: red;
  font-weight:bold;
}

チェックされてボタンに直接スタイルを適用するのではなく、その隣のラベルに適用します。

<form>
   <input type="radio" name="btn" value="sample1">
   <label>ボタン1</label>
   <input type="radio" name="btn" value="sample2">
   <label>ボタン2</label> 
</form>

属性セレクタ

特定の属性を持つ要素に適用

E[foo] 

a[title] {
  font-weight:bold;
  color:red;
}

特定の属性(値)を持つ要素に適用する

E[foo="bar"]
tittle属性に「タイトルその1」という値を持つa要素にスタイルを適用します。

a[title="タイトルその1"] {
  font-weight:bold;
  color:red;
}

属性の値が指定した文字で始まる場合に適用する

tittle属性が「タイトル」で始まる場合にスタイルを適用します。

a[title^="タイトル"] {
  font-weight:bold;
  color:red;
}

属性の値が指定した文字で終わる場合に適用する

a[title$="タイトル"] {
  font-weight:bold;
  color:red;
}

属性の値が指定した文字を含む場合に適用する

tittle属性が「その」を含む場合にスタイルを適用します。

a[title*="その"] {
  font-weight:bold;
  color:red;
}
4
4
0

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
4
4