Выбрать элемент после элемента с определенным дочерним элементом

Рассмотрим этот HTML:

<p>Foo</p>
<p>
  <br>
</p>
<p>Bar</p> <!-- I want to select this p element -->
<p>Baz</p>

Есть ли способ в CSS выбрать «элемент p после элемента p, содержащего элемент br»?

Я знаю, что могу вернуться к использованию JavaScript для этого, но мне было любопытно посмотреть, есть ли какая-то забавная комбинация родственных селекторов или какой-то магический псевдокласс, с которым я еще не столкнулся.

NB: Конечно, родительский селектор может работать, но не совсем то, о чем я спрашиваю. Родительские селекторы немного противоречат сути CSS, который всегда действует только в одном направлении вниз по DOM. В моем случае элемент, над которым я хочу действовать, все еще остается после всех остальных вещей, о которых мне нужно знать, поэтому не было бы необходимости возвращаться к DOM или выполнять второй проход и т. д.

Alec 24.10.2018 13:30

он по-прежнему называется родительский селектор ... вы хотите посмотреть, что находится внутри вашего элемента, поэтому вам нужно сначала спуститься, а затем снова подняться, что на самом деле невозможно с CSS (прочтите дубликат, и вы обнаружите, что вам нужен Селектор :has()) ... в основном вы хотите этого: начните с br, проверьте, является ли родительский элемент p, если да, селектор, затем выберите p после него .. что то же самое, что: выберите p, который содержит br, затем выберите p после этого

Temani Afif 24.10.2018 13:34

Ага. Думаю, я бы больше искал, если бы я пропустил что-то вроде :blank, которое решило бы эту проблему, но тогда я думаю, что это вернулось к JS.

Alec 24.10.2018 13:38

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

BoltClock 24.10.2018 14:27
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
4
24
1

Ответы 1

В этом коде

`

Фу


Бар

Баз

`

Если вы хотите выбрать 3-й p, вы можете использовать псевдокласс: nth-child ()

Так что ответ будет p:nth-child(3)

Если эти теги p находятся внутри контейнера, используйте это как комбинатор для желаемого результата, иначе он выберет все 3-е теги p в html-документе.

Другие вопросы по теме