Селектор для одного тега, за которым следует другой тег

Здесь выбираются теги <B>, которым предшествуют теги <A>:

A+B {
    /* styling */
}

Что такое селектор для всех тегов <A>, за которыми следуют теги <B>?

Вот пример HTML, подгоняющий мой вопрос:

<a>some text</a>
<b>some text</b>

Ответ 1

Вы не можете использовать css.

Изменить: Чтобы быть более полезным, если вы используете, например, jQuery (библиотеку JavaScript), вы можете использовать .prev().

Ответ 2

Вы имеете в виду стиль A, учитывая, что он имеет элемент B непосредственно внутри или за ним? Вот так:

<A>
    <B>
    </B>
</A>

// OR

<A>
</A>
<B>
</B>

Вы не можете делать такие вещи в CSS (пока). Эрик Мейер утверждает, что этот селектор был обсужден довольно много раз в списке рассылки CSS и не является выполнимым. Дэйв Хаятт, один из основных разработчиков WebKit, комментирует с хорошим объяснением, почему это не может быть сделано.

Отъезд: сообщение в блоге Shaun Inman и комментарий от Eric Meyer.
Дэвид Хаятт тоже весит.

Ответ 3

Вы можете ТОЛЬКО делать обратное: это выбирает все теги, непосредственно предшествующие тэгам.

Это логически эквивалентно вашему запросу.

Я часто использую это, чтобы создать ряд многих флажков с надписями

CSS

label+input {
    margin-left: 4px;
}

DOM:

<input id="a" name="a" type="checkbox"/><label for="a">...</label>
<input id="b" name="b" type="checkbox"/><label for="b">...</label>
<input id="c" name="c" type="checkbox"/><label for="c">...</label>