aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/css/attribute_selectors/index.md
blob: e9b9e5baff38b9412c7289d8cd657652072f845d (plain)
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
---
title: 属性セレクター
slug: Web/CSS/Attribute_selectors
tags:
  - 属性セレクター
  - CSS
  - リファレンス
  - セレクター
browser-compat: css.selectors.attribute
translation_of: Web/CSS/Attribute_selectors
---
{{CSSRef}}

CSS の**属性セレクター** (attribute selector) は、指定された属性が存在するかどうか、またはその値に基づいて要素を選択します。

```css
/* 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;
}

/* <a> 要素の class 属性に "logo" という語が含まれているもの */
a[class~="logo"] {
  padding: 2px;
}
```

## 構文

- `[attr]`
  - : _attr_ という名前の属性を持つ要素を表します。
- `[attr=value]`
  - : _attr_ という名前の属性の値が正確に _value_ である要素を表します。
- `[attr~=value]`
  - : _attr_ という名前の属性の値が正確に _value_ と一致する要素を表します。空白区切りの語のリストの形で、複数の _value_ を含めることができます。
- `[attr|=value]`
  - : _attr_ という名前の属性の値が正確に _value_ と一致するか、 _value_ で始まり直後にハイフン (`-` (U+002D)) が続く要素を表します。言語のサブコードの一致によく使われます。
- `[attr^=value]`
  - : _attr_ という名前の属性の値が _value_ で始まる要素を表します。
- `[attr$=value]`
  - : _attr_ という名前の属性の値が _value_ で終わる要素を表します。
- `[attr*=value]`
  - : _attr_ という名前の属性の値が、文字列中に _value_ を1つ以上含む要素を表します。
- `[attr operator value i]`
  - : 閉じ角括弧の前に `i` (または `I`) を追加すると、 (ASCII の範囲内の文字の場合) 値は大文字と小文字を区別せずに比較されます。
- `[attr operator value s]` {{Experimental_Inline}}
  - : 閉じ角括弧の前に `s` (または `S`) を追加すると、 (ASCII の範囲内の文字の場合) 値は大文字と小文字を区別して比較されます。

## 例

### リンク

#### CSS

```css
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;
}

/* "https" で始まり ".org" で終わるリンク */
a[href^="https"][href$=".org"] {
  color: green;
}
```

#### HTML

```html
<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>
  <li><a href="https://example.org">Example https org link</a></li>
</ul>
```

#### 結果

{{EmbedLiveSample("Links")}}

### 言語

#### CSS

```css
/* `lang` 属性があるすべての div を太字にする。 */
div[lang] {
  font-weight: bold;
}

/* すべtの div のうち `lang` 属性のない者をイタリックにする。 */
div:not([lang]) {
  font-style: italic;
}

/* アメリカ英語の 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;
}
```

#### HTML

```html
<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>
```

#### 結果

{{EmbedLiveSample("Languages")}}

### HTML 順序付きリスト

HTML 仕様書では、 {{htmlattrxref("type", "input")}} 属性は主に {{HTMLElement("input")}} 要素で使用されるため、大文字小文字の区別なく一致することを要求しており、順序付きリスト ({{HTMLElement("ol")}}) 要素の {{htmlattrxref("type", "ol")}} 属性に使おうとすると、 [case-sensitive](#case-sensitive) 修飾子がなければ正しく動作しません。

#### CSS

```css
/* 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;
}
```

#### HTML

```html
<ol type="A">
  <li>Example list</li>
</ol>
```

#### 結果

{{EmbedLiveSample("HTML_ordered_lists")}}

## 仕様書

{{Specifications}}

## ブラウザーの互換性

{{Compat}}

## 関連情報

- {{CSSxRef("attr")}}
- 単一要素の選択: {{DOMxRef("Document.querySelector()")}}, {{DOMxRef("DocumentFragment.querySelector()")}}, {{DOMxRef("Element.querySelector()")}}
- 一致するすべての要素の選択: {{DOMxRef("Document.querySelectorAll()")}}, {{DOMxRef("DocumentFragment.querySelectorAll()")}}, {{DOMxRef("Element.querySelectorAll()")}}