1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
---
title: 属性セレクター
slug: Web/CSS/Attribute_selectors
tags:
- CSS
- CSS 3 属性セレクター
- CSS 属性
- Reference
- セレクター
- ノードの識別
- ノードの選択
- リファレンス
- 属性
- 属性セレクター
- 要素の識別
translation_of: Web/CSS/Attribute_selectors
---
<div>{{CSSRef}}</div>
<p>CSS の<ruby><strong>属性セレクター</strong><rp> (</rp><rt>attribute selector</rt><rp>) </rp></ruby>は、指定された属性が存在するかどうかや、その値に基づいて要素を選択します。</p>
<pre class="brush: css no-line-numbers notranslate">/* title 属性を持つ <a> 要素 */
a[title] {
color: purple;
}
/* href が "https://example.org" と一致する <a> 要素 */
a[href="https://example.org"] {
color: green;
}
/* href に "example" を含む <a> 要素 */
a[href*="example"] {
font-size: 2em;
}
/* href が "org" で終わる <a> 要素 */
a[href$=".org"] {
font-style: italic;
}</pre>
<h2 id="Syntax" name="Syntax">構文</h2>
<dl>
<dt><code>[<em>attr</em>]</code></dt>
<dd><em>attr</em> という名前の属性を持つ要素を表します。</dd>
<dt><code>[<em>attr</em>=<em>value</em>]</code></dt>
<dd><em>attr</em> という名前の属性の値が正確に <em>value</em> である要素を表します。</dd>
<dt><code>[<em>attr</em>~=<em>value</em>]</code></dt>
<dd><em>attr</em> という名前の属性の値が正確に <em>value</em> と一致する要素を表します。空白区切りの語のリストの形で、複数の <em>value</em> を含めることができます。</dd>
<dt><code>[<em>attr</em>|=<em>value</em>]</code></dt>
<dd><em>attr</em> という名前の属性の値が正確に <em>value</em> と一致するか、 <em>value</em> で始まり直後にハイフン (<code>-</code> (U+002D)) が続く要素を表します。言語のサブコードの一致によく使われます。</dd>
<dt><code>[<em>attr</em>^=<em>value</em>]</code></dt>
<dd><em>attr</em> という名前の属性の値が <em>value</em> で始まる要素を表します。</dd>
<dt><code>[<em>attr</em>$=<em>value</em>]</code></dt>
<dd><em>attr</em> という名前の属性の値が <em>value</em> で終わる要素を表します。</dd>
<dt><code>[<em>attr</em>*=<em>value</em>]</code></dt>
<dd><em>attr</em> という名前の属性の値が、文字列中に <em>value</em> を1つ以上含む要素を表します。</dd>
<dt id="case-insensitive"><code>[<em>attr</em> <em>operator</em> <em>value</em> i]</code></dt>
<dd>閉じ角括弧の前に <code>i</code> (または <code>I</code>) を追加すると、 (ASCII の範囲内の文字の場合) 値は大文字と小文字を区別せずに比較されます。</dd>
<dt id="case-sensitive"><code>[<em>attr</em> <em>operator</em> <em>value</em> s]</code> {{Experimental_Inline}}</dt>
<dd>閉じ角括弧の前に <code>s</code> (または <code>S</code>) を追加すると、 (ASCII の範囲内の文字の場合) 値は大文字と小文字を区別して比較されます。</dd>
</dl>
<h2 id="Examples" name="Examples">例</h2>
<h3 id="Links" name="Links">リンク</h3>
<h4 id="CSS">CSS</h4>
<pre class="brush: css notranslate">a {
color: blue;
}
/* "#" で始まる内部リンク */
a[href^="#"] {
background-color: gold;
}
/* URL のどこかに "example" が含まれるリンク */
a[href*="example"] {
background-color: silver;
}
/* URL のどこかに "insensitive" が含まれるリンクで、
大文字小文字は区別しない */
a[href*="insensitive" i] {
color: cyan;
}
/* URL のどこかに "cAsE" があるリンクに一致
大文字小文字の区別つき */
a[href*="cAsE" s] {
color: pink;
}
/* ".org" で終わるリンク */
a[href$=".org"] {
color: red;
}</pre>
<h4 id="HTML">HTML</h4>
<pre class="brush: html notranslate"><ul>
<li><a href="#internal">Internal link</a></li>
<li><a href="http://example.com">Example link</a></li>
<li><a href="#InSensitive">Insensitive internal link</a></li>
<li><a href="http://example.org">Example org link</a></li>
</ul></pre>
<h4 id="Result" name="Result">結果</h4>
<p>{{EmbedLiveSample("Links")}}</p>
<h3 id="Languages" name="Languages">言語</h3>
<h4 id="CSS_2" name="CSS_2">CSS</h4>
<pre class="brush: css notranslate">/* `lang` 属性があるすべての div を太字にする。 */
div[lang] {
font-weight: bold;
}
/* アメリカ英語の div はすべて青。 */
div[lang~="en-us"] {
color: blue;
}
/* ポルトガル語の div はすべて緑。 */
div[lang="pt"] {
color: green;
}
/* 中国語の div はすべて赤。
simplified (zh-CN) or traditional (zh-TW). */
div[lang|="zh"] {
color: red;
}
/* 'data-lang' が中国語繁体字の div はすべて紫。 */
/* 注: ハイフン区切りの属性は二重引用符なしで使用できる */
div[data-lang="zh-TW"] {
color: purple;
}
</pre>
<h4 id="HTML_2">HTML</h4>
<pre class="brush: html notranslate"><div lang="en-us en-gb en-au en-nz">Hello World!</div>
<div lang="pt">Olá Mundo!</div>
<div lang="zh-CN">世界您好!</div>
<div lang="zh-TW">世界您好!</div>
<div data-lang="zh-TW">世界您好!</div>
</pre>
<h4 id="Result_2" name="Result_2">結果</h4>
<p>{{EmbedLiveSample("Languages")}}</p>
<h3 id="HTML_ordered_lists" name="HTML_ordered_lists">HTML 順序付きリスト</h3>
<p>{{SeeCompatTable}}</p>
<p>HTML 仕様書では、 {{htmlattrxref("type", "input")}} 属性は主に {{HTMLElement("input")}} 要素で使用されるため、大文字小文字の区別なく一致することを要求しており、順序付きリスト ({{HTMLElement("ol")}}) 要素の {{htmlattrxref("type", "ol")}} 属性に使おうとすると、 <a href="#case-sensitive">case-sensitive</a> 修飾子がなければ正しく動作しません。</p>
<h4 id="CSS_3">CSS</h4>
<pre class="brush: css notranslate">/* HTML が type 属性を扱う方法の癖の都合上、リストの種別には、大文字小文字を区別する指定が必要です。 */
ol[type="a"] {
list-style-type: lower-alpha;
background: red;
}
ol[type="a" s] {
list-style-type: lower-alpha;
background: lime;
}
ol[type="A" s] {
list-style-type: upper-alpha;
background: lime;
}</pre>
<h4 id="HTML_3">HTML</h4>
<pre class="brush: html; notranslate"><ol type="A">
<li>Example list</li>
</ol></pre>
<h4 id="結果">結果</h4>
<p>{{EmbedLiveSample("HTML_ordered_lists")}}</p>
<h2 id="Specifications" name="Specifications">仕様書</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
<th scope="col">状態</th>
<th scope="col">備考</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName("CSS4 Selectors", "#attribute-selectors", "attribute selectors")}}</td>
<td>{{Spec2("CSS4 Selectors")}}</td>
<td>ASCII の大文字小文字を区別する選択、区別しない選択のための修飾子を追加</td>
</tr>
<tr>
<td>{{SpecName("CSS3 Selectors", "#attribute-selectors", "attribute selectors")}}</td>
<td>{{Spec2("CSS3 Selectors")}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName("CSS2.1", "selector.html#attribute-selectors", "attribute selectors")}}</td>
<td>{{Spec2("CSS2.1")}}</td>
<td>初回定義</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの対応</h2>
<div class="hidden">このページの互換性一覧表は構造化データから生成されます。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
<p>{{Compat("css.selectors.attribute")}}</p>
<h2 id="関連情報">関連情報</h2>
<ul>
<li>{{CSSxRef("attr")}}</li>
<li>単一要素の選択: {{DOMxRef("Document.querySelector()")}}, {{DOMxRef("DocumentFragment.querySelector()")}}, {{DOMxRef("Element.querySelector()")}}</li>
<li>一致するすべての要素の選択: {{DOMxRef("Document.querySelectorAll()")}}, {{DOMxRef("DocumentFragment.querySelectorAll()")}}, {{DOMxRef("Element.querySelectorAll()")}}</li>
<li>上記のメソッドはすべて {{domxref("ParentNode")}} に混在して実装されています。 {{DOMxRef("ParentNode.querySelector()")}} および {{DOMxRef("ParentNode.querySelectorAll()")}} を参照してください</li>
</ul>
|