Селектор для одного тега, за которым непосредственно следует другой тег - PullRequest
76 голосов
/ 15 июля 2009

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

A+B {
    /* styling */
}

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

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

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

Ответы [ 4 ]

52 голосов
/ 15 июля 2009

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

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

// OR

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

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

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

26 голосов
/ 15 июля 2009

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

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

10 голосов
/ 17 августа 2015

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

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

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

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>
0 голосов
/ 15 июля 2009

Можно, но поддержка все еще глючит. Название этого - соседний селектор брата

http://reference.sitepoint.com/css/adjacentsiblingselector

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...