現状で用意されているセレクタ (もしくは擬似クラス) では、ある要素よりも前にある兄弟要素を選択することは出来ません。CSS のみで行うならば、 has
擬似クラスも使用出来ません。また、質問文のコードに関してですが、隣接兄弟結合子 (+
) は直後の要素に対して一致するため、直前の要素とは一致しません。もし直前の要素に一致するとしても 直前の要素は br
要素で、 br
要素に対して .b2
クラスが付与されておらず、そもそも br
要素は選択したい要素ではないため、意味のない記述となります。
CSS implementations conformant to Selectors Level 4 must use the live profile for CSS selection. Implementations using the live profile must treat selectors that are not included in the profile as unknown and invalid.
もし文書構造を変えて良いのならば、 .b2
クラスが付与された要素を .a1
クラスが付与された要素よりも前に記述し、 CSS によって互いの位置を入れ替えることで、質問者さんの実現したいことが擬似的に行えます (動作確認用リンク)。要素の位置を入れ替える方法は多くありますが、今回は flexbox を使用した方法を示します。なお、要素の位置を入れ替える必要があるため、文書構造が複雑になるほど CSS が複雑になってゆくことに注意する必要があります。
HTML
1<div class="box">
2 <span class="b2">かきくけこ</span><br>
3 <span class="a1">あいうえお</span>
4</div>
CSS
1.box {
2 display: flex;
3}
4
5.b2 {
6 order: 1;
7}
8
9.b2:hover ~ .a1 {
10 color: pink;
11}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/30 20:59