it-swarm.com.ru

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

При этом все теги <B> выбираются напрямую предшествует тегами <A>:

A+B {
    /* styling */
}

Каков селектор для всех тегов <A> напрямую сопровождается тегами <B>?

Вот пример HTML, соответствующий моему вопросу:

<a>some text</a>
<b>some text</b>
76
Mostafa Farghaly

Вы не можете в CSS.

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

26
jeroen

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

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

// OR

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

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

Проверьте: сообщение в блоге Шона Инмана и комментарий Эрика Мейера .
Дэвид Хаятт взвешивается тоже.

52
Nick Presta

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

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

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

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>
10
Marco Marsala