[2] [DFN[[RUBYB[[[隣接兄弟結合子]]]@en[adjacent sibling combinator]]]] ([DFN[[CODE(CSS)[[[+]]]]]]) は、
前の[[単純選択子列]]によって表される[[要素]]の直後にある[[弟]]である、
後の[[単純選択子列]]によって表される[[要素]]を表す[[兄弟結合子]]です。

* 仕様書

[REFS[
- [1] [CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) <http://www.w3.org/TR/selectors/#adjacent-sibling-combinators>
]REFS]

* 意味

[3] [[隣接兄弟結合子]]は、前後2つの[[単純選択子列]]で表される[[要素]]が同じ[[親]]を持ち、
最初の[[要素]]の直後に2つ目の[[要素]]があることを表しています。 [SRC[>>1]]

[4] ただし「直後」の判断に用いられるのは[[要素節点]]のみです。
[[テキスト節点]]などは無視されます。  [SRC[>>1]]

[5] [[文書木]]は[[実体参照]]を[[展開]]した状態で表現されるので、「同じ[[親]]」の判定は[[実体参照節点]]を無視して行われます。

* 構文

[6] [[隣接兄弟結合子]]の前後には[[空白]]を挿入できます。

* 歴史

** [CODE(CSS)[/ ... /]]

[REFS[
- [22] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-08-11 17:13:22 +09:00]] 版) <http://www.w3.org/Style/CSS/draft3.html#introduction2>
- [24] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-10-07 10:35:41 +09:00]] 版) <http://www.w3.org/Style/CSS/draft4.html#appendixa>
- [26] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-11-02 03:04:18 +09:00]] 版) <http://www.w3.org/Style/CSS/draft5.html#appendixa>
- [11] [CITE[STSS 2]] ([[Daniel Glazman]] 著, [TIME[2000-09-09 01:13:50 +09:00]] 版) <http://www.w3.org/TR/NOTE-stts2-971017#Sequential>
- [19] [CITE@en[Selectors]] ([TIME[1997-11-08 03:00:17 +09:00]] 版) <http://www.w3.org/TR/WD-CSS2-971104/selector.html#sequential-selectors>
]REFS]

[23] [[CSS]] の初期案 (>>22) では [CODE(CSS)[/H1/ P]] や [CODE(CSS)[// P]] のような構文が提案されていました。

[25] >>24 では[[水準2]]に格下げ(?)されました。しかし >>26 の次の案では [[CSS2]]
の部分は削除されています。

[12] それから少し時代が下って [[STTS2]] (>>11) や [[CSS2]] (>>19) の初期案では [CODE(CSS)[DIV /IMG ~ UL/]] 
のような構文が提案されていました。

** [CODE(CSS)[+]]

[REFS[
- [20] [CITE@en[Selectors]] ([TIME[2001-01-16 00:22:58 +09:00]] 版) <http://www.w3.org/TR/1998/WD-css2-19980128/selector.html#adjacent-selectors>
- [8] [CITE@en[Selectors]] ([TIME[2011-06-07 22:09:52 +09:00]] 版) <http://www.w3.org/TR/CSS2/selector.html#adjacent-selectors>
]REFS]

[9] [[CSS2]] では[[単純選択子列]] ([[CSS2]] でいう[[単純選択子]]) の後に[[隣接兄弟結合子]]が続き、
更に[[単純選択子列]]が続く列のことを[DFN[[RUBYB[[[隣接兄弟選択子]]]@en[adjacent sibling selector]]]]と呼んでいました。

;; [21] 初出の >>20 では単に[DFN[[RUBYB[[[隣接選択子]]]@en[adjacent selector]]]]でした。

;; [10] この用語は[[選択子3]]では使われていません。

** 選択子3

[REFS[
- [13] [CITE[CSS3 module: W3C selectors]] ([TIME[2000-03-13 23:37:32 +09:00]] 版) <http://www.w3.org/TR/1999/WD-CSS3-selectors-19990803#adjacent-d-combinators>
]REFS]

[14] [[選択子3]]では [CODE(CSS)[[[~]]]] が追加されたため、 [CODE(CSS)[[[+]]]]
は[DFN[[RUBYB[[[直接隣接結合子]]]@en[direct adjacent sibling combinator]]]]と呼ばれるようになりました。
[[隣接兄弟結合子]]はこれらの総称でした。

[REFS[
- [17] [CITE@en[Selectors]] ([TIME[2005-12-15 00:49:29 +09:00]] 版) <http://www.w3.org/TR/2005/WD-css3-selectors-20051215/#sibling-combinators>
]REFS]

[18] >>17 で名称が変更されて、[[隣接兄弟結合子]]が [CODE(CSS)[[[+]]]] の名称となりました。

** XBL2

[REFS[
- [15] [CITE@en-US[XBL 2.0]] ([TIME[2010-09-03 10:10:02 +09:00]] 版) <http://dev.w3.org/2006/xbl2/Overview.html#selectors-and-shadow-scopes>
]REFS]

[16] [[XBL2]] は[[影木]]との関係を規定していました。

* 例

[EG[
[7] [[選択子]] [CODE(CSS)[h1 [[+]] em]] は [CODE(HTMLe)@en[h1]] [[要素]]の直後の[[弟要素]]である
[CODE(HTMLe)@en[em]] [[要素]]を表します。間に[[テキスト]]や[[注釈]]が挟まっていても構いません。
]EG]
