サーチ…


前書き

CSSセレクタは、特定のHTML要素をCSSスタイルのターゲットとして識別します。このトピックでは、CSSセレクタがHTML要素をターゲットとする方法について説明します。セレクタは、要素、クラス、ID、疑似要素と疑似クラス、パターンなど、CSS言語で提供される50以上の選択メソッドを幅広く使用します。

構文

  • #id
  • クラス名
  • 擬似クラス名
  • :: pseudo-elementname
  • [ attr ] / *にはattr属性があります。 * /
  • [ attr = " value "] / *はattr属性を持ち、その値は正確に " value "です。 * /
  • [ attr〜 = " value "] / *はattr属性を持ち、その値は空白で分割されたときに " value "を含みます 。 * /
  • [ attr | = " value "] / *はattr属性を持ち、その値は正確に " value "である 、値は " value - "で始まります。 * /
  • [ attr ^ = " value "] / *はattr属性を持ち、その値は " value "で始まります 。 * /
  • [ attr $ = " value "] / *はattr属性を持ち、その値は " value "で終わります 。 * /
  • [ attr * = " value "] / *はattr属性を持ち、その値には " value "が含まれています 。 * /
  • 要素名
  • *

備考

  • 時にはあなたは、二重のコロン(表示されます:: ()の代わりに、1つだけ: )。これは疑似クラス疑似要素から分離する方法です。
  • (Internet Explorer 8のような古いブラウザでは、単一コロンをサポート:擬似要素を定義するため)。
  • 擬似クラスとは異なり、セレクタごとに1つの擬似要素しか使用できません。セレクタの主語を表す単純なセレクタのシーケンスの後に現れなければなりません( W3C仕様の将来のバージョンではセレクタごとに複数の擬似要素)。

属性セレクタ

概要

アトリビュートセレクタは、選択基準をそれに応じて変更するさまざまなタイプの演算子で使用できます。指定された属性または属性値の存在を使用して要素を選択します。

セレクタ(1) 一致した要素要素を選択... CSSバージョン
[attr] <div attr> アトリビュートattr 2
[attr='val'] <div attr="val"> 属性attr値がval 2
[attr~='val'] <div attr="val val2 val3"> val
空白で区切られたattrリスト
2
[attr^='val'] <div attr="val1 val2"> attrの値 val 始まるところ 3
[attr$='val'] <div attr="sth aval"> attrの値 val 終わるところ 3
[attr*='val'] <div attr="somevalhere"> attrはどこでもvalが含まれています 3
[attr|='val'] <div attr="val-sth etc"> attrの値が正確にval場合、
またはvalで始まりすぐに
- (U + 002D)
2
[attr='val' i] <div attr="val"> attrに値valがある場合、
valの手紙を無視して
4 (2)

ノート:

  1. 属性値は、一重引用符または二重引用符で囲むことができます。引用符は一切使わないかもしれませんが、CSS標準によれば有効ではありませんので、お勧めしません。

  2. 個別のモジュールに分割されているため、統合された単一のCSS4仕様はありません。しかし、 "レベル4"モジュールがあります。 ブラウザーのサポートを参照してください

詳細

[attribute]

指定された属性を持つ要素を選択します。

div[data-color] {
  color: red;
}
<div data-color="red">This will be red</div>
<div data-color="green">This will be red</div>
<div data-background="red">This will NOT be red</div>

JSBinのライブデモ

[attribute="value"]

指定された属性と値を持つ要素を選択します。

div[data-color="red"] {
  color: red;
}
<div data-color="red">This will be red</div>
<div data-color="green">This will NOT be red</div>
<div data-color="blue">This will NOT be red</div>

JSBinのライブデモ

[attribute*="value"]

指定された属性および値を持つ要素を選択します。指定された属性には、指定された値がどこでも(部分文字列として)含まれます。

[class*="foo"] {
  color: red;
}
<div class="foo-123">This will be red</div>
<div class="foo123">This will be red</div>
<div class="bar123foo">This will be red</div>
<div class="barfooo123">This will be red</div>
<div class="barfo0">This will NOT be red</div>

JSBinのライブデモ

[attribute~="value"]

与えられた値が空白で区切られたリストに現れる、与えられた属性と値を持つ要素を選択します。

[class~="color-red"] {
  color: red;
}
<div class="color-red foo-bar the-div">This will be red</div>
<div class="color-blue foo-bar the-div">This will NOT be red</div>

JSBinのライブデモ

[attribute^="value"]

指定された属性が値で始まる、指定された属性と値を持つ要素を選択します。

[class^="foo-"] {
  color: red;
}
<div class="foo-123">This will be red</div>
<div class="foo-234">This will be red</div>
<div class="bar-123">This will NOT be red</div>

JSBinのライブデモ

[attribute$="value"]

指定された属性が指定された値で終わる、指定された属性と値を持つ要素を選択します。

[class$="file"] {
  color: red;
}
<div class="foobar-file">This will be red</div>
<div class="foobar-file">This will be red</div>
<div class="foobar-input">This will NOT be red</div>

JSBinのライブデモ

[attribute|="value"]

指定された属性と値を持つ要素を選択します。属性の値が指定された値または正確に指定された値の場合、 - (U + 002D)

[lang|="EN"] {
  color: red;
}
<div lang="EN-us">This will be red</div>
<div lang="EN-gb">This will be red</div>
<div lang="PT-pt">This will NOT be red</div>

JSBinのライブデモ

[attribute="value" i]

与えられた属性と値を持つ要素を選択します。属性の値は、 ValueVALUEvAlUeまたはその他の大文字と小文字を区別しない可能性として表すことができます。

[lang="EN" i] {
  color: red;
}
<div lang="EN">This will be red</div>
<div lang="en">This will be red</div>
<div lang="PT">This will NOT be red</div>

JSBinのライブデモ

属性セレクタの特異性

0-1-0

クラスセレクタおよび疑似クラスと同じです。

*[type=checkbox] // 0-1-0

これは、属性セレクタを使用して、 IDセレクタで選択された場合よりも低い特異性でIDで要素を選択できることに注意してください。 [id="my-ID"]#my-IDは低いが特異性は低い。

詳細については、「 構文セクション 」を参照してください。

コンビネーション

概要

セレクタ説明
div span 下位セレクタ( <span><div>子孫です)
div > span 子セレクタ(すべての<span><div>直接の子です)
a ~ span 一般的な兄弟セレクタ( <a>後の兄弟であるすべての<span>
a + span 隣接する兄弟セレクタ(すべての<span><a>直後にあります)

注:兄弟セレクタは、ソースドキュメント内の要素の後ろにある要素を対象とします。 CSSはその性質上(カスケード)、 または要素を対象とすることはできません。ただし、flex orderプロパティを使用すると、以前の兄弟セレクタをビジュアルメディアでシミュレートできます

Descendant Combinator: selector selector

少なくとも1つのスペース文字で表される子孫コンビネータ )は、定義された要素の子孫である要素を選択します。このコンビネータは、要素のすべての子孫を(下の子要素から)選択します。

div p {
  color:red;
}
<div>
  <p>My text is red</p>
  <section>
    <p>My text is red</p>
  </section>
</div>

<p>My text is not red</p>

JSBinのライブデモ

上記の例では、最初の2つの<p>要素は両方とも<div>子孫であるため選択されています。


子コンバイナ: selector > selector

子( > )コンビネータは、指定された要素の 、または直接の子孫である要素を、選択するために使用されます。

div > p {
  color:red;
}
<div>
  <p>My text is red</p>
  <section>
    <p>My text is not red</p>
  </section>
</div>

JSBinのライブデモ

上記のCSSは<div>から直接派生した唯一の段落であるため、最初の<p>要素のみを選択します。

2番目の<p>要素は<div>直接の子ではないため選択されません。


隣接する兄弟結合子: selector + selector

隣接する兄弟( + )結合子は、指定された要素の直後にある兄弟要素を選択します。

p + p {
  color:red;
}
<p>My text is not red</p>
<p>My text is red</p>
<p>My text is red</p>
<hr>
<p>My text is not red</p>

JSBinのライブデモ

上記の例では、別の<p>要素の直前にある<p>要素のみを選択しています。


一般的な兄弟結合子: selector ~ selector

一般的な兄弟( ~ )結合子は、指定された要素に続くすべての兄弟を選択します。

p ~ p {
  color:red;
}
<p>My text is not red</p>
<p>My text is red</p>
<hr>
<h1>And now a title</h1>
<p>My text is red</p>

JSBinのライブデモ

上記の例では、すぐ隣にあるかどうかにかかわらず、別の<p>要素で始まるすべての<p>要素を選択してます。

クラス名セレクタ

クラス名セレクタは、対象のクラス名を持つすべての要素を選択します。たとえば、クラス名.warningは次の<div>要素を選択します。

<div class="warning">
    <p>This would be some warning copy.</p>
</div>

クラス名とターゲット要素をより具体的に組み合わせることもできます。上記の例を基に、より複雑なクラス選択を紹介しましょう。

CSS

.important {
    color: orange;
}
.warning {
    color: blue;
}
.warning.important {
    color: red;
}

HTML

<div class="warning">
    <p>This would be some warning copy.</p>
</div>

<div class="important warning">
    <p class="important">This is some really important warning copy.</p>
</div>

この例では、とのすべての要素.warningクラスは青色のテキストの色を有することになる、と要素.important持つクラスは、オレンジ色のテキストの色を有し、 両方持っている全ての要素.important.warningクラス名は赤色のテキストを持っています色。

CSS内では、 .warning.important宣言に2つのクラス名の間にスペースが含まれていなかったことに注意してください。つまり、 class属性にwarningimportant両方のクラス名を含む要素のみが検索されます。これらのクラス名は、要素上の任意の順序で指定できます。

スペースはCSS宣言の二つのクラスの間に含まれていた場合、それだけで、親要素の持つ要素を選択します.warning持つクラス名と子要素.importantクラス名を。

IDセレクタ

IDセレクタは、ターゲットIDを持つDOM要素を選択します。 CSSの特定のIDで要素を選択するには、 #接頭辞が使用されます。

たとえば、次のHTML div要素...

<div id="exampleID">
    <p>Example</p>
</div>

...はCSSの#exampleIDで次のように選択できます:

#exampleID {
    width: 20px;
}

:HTML仕様では、同じIDを持つ複数の要素を使用できません

擬似クラス

擬似クラスは、文書ツリーの外部にある情報、または他のセレクタやコンビネータでは表現できない情報に基づいて選択できるキーワードです。この情報は、特定の状態( 状態および動的擬似クラス)、場所( 構造およびターゲット擬似クラス)、前者( 否定擬似クラス)または言語( lang擬似クラス)の否定に関連付けることができます。例としては、リンクがたどられた( :visited )か、マウスが要素( :hover )の上にあるか、チェックボックスがチェックされた( :checked )かなどが含まれ:checked

構文

selector:pseudo-class { 
    property: value;
}

疑似クラスのリスト:

説明
:active ユーザーがアクティブ化(つまりクリック)している要素に適用されます。
:any 関連するセレクタのセットを作成することができます。
含まれているアイテムは一致します。これは、セレクタ全体を繰り返す代わりの方法です。
:target 現在アクティブな#news要素を選択します(URL上でクリックされます)。
そのアンカー名を含む)
:checked チェックされているラジオ、チェックボックス、またはオプション要素に適用されます
または「オン」状態にトグルされる。
:default グループの中のデフォルトである任意のユーザーインターフェース要素を表します。
類似の要素。
:disabled 無効な状態にあるすべてのUI要素に適用されます。
:empty 子を持たない要素に適用されます。
:enabled 有効な状態にあるすべてのUI要素に適用されます。
:first @pageルールと組み合わせて使用​​すると、
印刷された文書。
:first-child 親の最初の子要素である要素を表します。
:first-of-type エレメントが選択されたエレメントタイプの最初のエレメントである場合に適用されます
その親の内部にある。これは最初の子供かもしれないし、そうでないかもしれません。
:focus ユーザーのフォーカスがある要素に適用されます。これは、
ユーザのキーボード、マウスイベント、または他の入力形態を含むことができる。
:focus-within セクション内の1つの要素がフォーカスされている場合、セクション全体を強調表示するために使用できます。これは、:focus擬似クラスがマッチする要素、または子孫がフォーカスを持つ要素に一致します。
:full-screen フルスクリーンモードで表示される要素に適用されます。スタック全体を選択します。
トップレベルの要素だけではなく要素の
:hover ユーザーのポインティングデバイスによってホバリングされている要素に適用されますが、
活性化されません。
:indeterminate チェックされていないラジオまたはチェックボックスのUI要素を適用します。
チェックされていませんが、不定状態です。これは、
要素の属性またはDOM操作。
:in-range :in-range CSS擬似クラスは、要素が
この要素の指定された範囲の制限内のvalue属性
これにより、ページは現在定義されている値をフィードバックすることができます
要素を使用すると範囲の制限内になります。
:invalid 次のように値が無効な<input>要素に適用されます。
type=属性で指定されたtype=
:lang ラップする<body>要素の要素に適切に適用されます
指定されたlang=属性。疑似クラスが有効であるためには、
有効な2文字または3文字の言語コードが含まれています。
:last-child 親の最後の子要素である要素を表します。
:last-of-type エレメントが選択されたエレメントタイプの最後である場合に適用されます
その親。これは最後の子供かもしれないし、そうでないかもしれません。
:left @pageルールと組み合わせて使用​​すると、これはすべての左
印刷された文書のページ。
:link ユーザーが訪問していないリンクに適用されます。
:not() 渡された値と一致しないすべての要素に適用されます
:not(p)または:not(.class-name)などです。
有効で、1つのセレクタのみを含むことができます。ただし、セレクタで:not複数のものを連結することができます。
:nth-child 要素がその親のn番目の要素である場合に適用されますn
整数、数式(例えば、 n+3 )またはキーワード
oddまたはeven
:nth-of-type 要素がその親要素のn番目の要素である場合に適用されます。
同じ要素タイプ( nは整数)、数学的
式(例えば、 n+3 )またはキーワードoddまたはeven
:only-child :only-child CSSの擬似クラスは任意の要素を表します
これは親の唯一の子です。これは
:first-child:last-childまたは:nth-child(1):nth-last-child(1)
特異性は低い。
:optional :optional CSS擬似クラスは任意の要素を表します
必要な属性が設定されていません。これにより、
オプションのフィールドを簡単に指定し、それに応じてスタイルを設定するフォーム。
:out-of-range :out-of-range CSS擬似クラスは、要素に
この要素の指定された範囲の範囲外の値属性。
これは、ページを使用して現在定義されている値
要素が範囲の範囲外です。値が範囲外であっても構いません
最大値および最小値よりも小さいかまたは大きい値である。
:placeholder-shown 実験的。現在プレースホルダテキストを表示しているフォーム要素に適用されます。
:read-only ユーザーが編集できない要素に適用されます。
:read-write <input>要素など、ユーザーが編集可能な要素に適用されます。
:right @pageルールと組み合わせて使用​​すると、
印刷された文書。
:root ドキュメントを表すツリーのルート要素と一致します。
:scope CSS擬似クラスは参照である要素にマッチします
セレクタが一致するポイント。
:target 現在アクティブな#news要素を選択します(URL上でクリックされます)。
そのアンカー名を含む)
:visited ユーザーが訪問したリンクに適用されます。

:visited pseudoclassは、セキュリティホールであるため、多くの最新のブラウザではほとんどのスタイリングには使用できません。参考までにこのリンクを参照してください。

基本セレクタ

セレクタ説明
* ユニバーサルセレクタ(全要素)
div タグセレクタ(すべての<div>要素)
.blue クラスセレクタ(クラスblueすべての要素)
.blue.red blue redクラスを持つすべての要素(Compoundセレクタの一種)
#headline IDセレクタ( "id"属性がheadline設定されている要素)
:pseudo-class 擬似クラスを持つすべての要素
::pseudo-element 擬似要素と一致する要素
:lang(en) 一致する要素:lang宣言(例えば、 <span lang="en">
div > p 子セレクタ

注意: IDの値は、Webページ内で一意である必要があります。同じ文書ツリー内でIDの値を複数回使用することは、 HTML標準に違反しています

セレクタの完全なリストは、 CSSセレクタレベル3仕様書にあります。

範囲入力をスタイルする方法

HTML

<input type="range"></input>

CSS

効果擬似セレクタ
親指 input[type=range]::-webkit-slider-thumb, input[type=range]::-moz-range-thumb, input[type=range]::-ms-thumb
トラック input[type=range]::-webkit-slider-runnable-track, input[type=range]::-moz-range-track, input[type=range]::-ms-track
OnFocus input[type=range]:focus
トラックの下部 input[type=range]::-moz-range-progress, input[type=range]::-ms-fill-lower (WebKitブラウザでは現在不可能 - JSが必要)

チェックボックス付きグローバルブール:チェックし、〜(一般兄弟コンビネータ)

〜セレクタを使用すると、JavaScriptを使用せずにグローバルにアクセス可能なブール値を簡単に実装できます。

booleanをチェックボックスとして追加

ドキュメントの最初に、一意のidhidden属性セットを使用して、必要なブール値を追加します。

<input type="checkbox" id="sidebarShown" hidden />
<input type="checkbox" id="darkThemeUsed" hidden />

<!-- here begins actual content, for example: -->
<div id="container">
    <div id="sidebar">
        <!-- Menu, Search, ... -->
    </div>

    <!-- Some more content ... -->
</div>

<div id="footer">
    <!-- ... -->
</div>

ブール値を変更する

ブール値を切り替えるには、 for属性を設定したlabelを追加forます。

<label for="sidebarShown">Show/Hide the sidebar!</label>

CSSでブール値にアクセスする

通常のセレクタ( .color-red )は、デフォルトのプロパティを指定します。 true / falseセレクタに従うことでオーバーライドできます:

/* true: */
<checkbox>:checked ~ [sibling of checkbox & parent of target] <target>

/* false: */
<checkbox>:not(:checked) ~ [sibling of checkbox & parent of target] <target>

<checkbox>[sibling ...] 、および<target>は適切なセレクタに置き換えてください。 [sibling ...]あなたは怠け者が多い場合)、単に、特定のセレクタ可能*ターゲットがすでにチェックボックスの兄弟である場合または何も。

上記のHTML構造の例は次のとおりです。

#sidebarShown:checked ~ #container #sidebar {
    margin-left: 300px;
}

#darkThemeUsed:checked ~ #container,
#darkThemeUsed:checked ~ #footer {
    background: #333;
}

行動中

これらのグローバルブール値の実装については、 このフィドルを参照してください。

CSS3:範囲内セレクタの例

<style>
input:in-range {
    border: 1px solid blue;
}
</style>



<input type="number" min="10" max="20" value="15">
<p>The border for this value will be blue</p>

:in-range CSS擬似クラスは、要素がその要素の指定された範囲の制限内のvalue属性を持つ場合に一致します。これにより、要素を使用して現在定義されている値が範囲の制限内にあるというフィードバックがページに表示されます。 [1]

子擬似クラス

":nth-​​child(an + b)CSS擬似クラスは、ドキュメントツリーの前に+ b-1の兄弟を持つ要素をn"の所与の正または0の値にマッチさせます。 - MDN:nth-​​child

疑似セレクタ 1 2 3 4 5 6 7 8 9 10
:first-child
:nth-child(3)
:nth-child(n+3)
:nth-child(3n)
:nth-child(3n+1)
:nth-child(-n+3)
:nth-child(odd)
:nth-child(even)
:last-child
:nth-last-child(3)

IDセレクタの高い特異性なしにIDを使用してエレメントを選択する

このトリックは、IDセレクターの高い特異性を避けるために、属性セレクターの値としてIDを使用してエレメントを選択するのに役立ちます。

HTML:

<div id="element">...</div>  

CSS

#element { ... } /* High specificity will override many selectors */

[id="element"] { ... } /* Low specificity, can be overridden easily */

A.:疑似クラスの例ではなく&B:CSS内の疑似クラス内のフォーカス

A.構文は上記のとおりです。

次のセレクタは、すべての一致する<input>無効化されていないとクラスがありませんHTMLドキュメント内の要素.example

HTML:

<form>
    Phone: <input type="tel" class="example">
    E-mail: <input type="email" disabled="disabled">
    Password: <input type="password">
</form>

CSS:

input:not([disabled]):not(.example){
   background-color: #ccc;
}

:not()擬似クラスはセレクタレベル4でカンマ区切りのセレクタもサポートします:

CSS:

input:not([disabled], .example){
   background-color: #ccc;
}

JSBinのライブデモ

ここで背景の構文を参照してください。

B.フォーカス:CSS内の擬似クラス

HTML:

  <h3>Background is blue if the input is focused .</p>
  <div>
    <input type="text">
  </div>

CSS:

div {
  height: 80px;
}
input{
  margin:30px;
}
div:focus-within {
  background-color: #1565C0;
}

ここに画像の説明を入力 ここに画像の説明を入力

The:only-child擬似クラスセレクタの例

:only-child CSS擬似クラスは、その親の唯一の子である要素を表します。

HTML:

<div>
  <p>This paragraph is the only child of the div, it will have the color blue</p>
</div>

<div>
  <p>This paragraph is one of the two children of the div</p>
  <p>This paragraph is one of the two children of its parent</p>
</div>

CSS:

p:only-child {
  color: blue;
}

上記の例では、親から一意の子である<p>要素を選択しています。この場合は<div>です。

JSBinのライブデモ

最後の型のセレクタ

:last-of-typeは、その親の特定の型の最後の子である要素を選択します。下の例では、cssは最後の段落と最後の見出しh1ます。

p:last-of-type { 
  background: #C5CAE9; 
}
h1:last-of-type { 
  background: #CDDC39; 
}
<div class="container">
    <p>First paragraph</p>
    <p>Second paragraph</p>
    <p>Last paragraph</p>
    <h1>Heading 1</h1>
    <h2>First heading 2</h2>
    <h2>Last heading 2</h2>
</div>

ここに画像の説明を入力

jsFiddle



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow