#css
Вопрос:
Мне интересно, можно ли применить css к чему-то, что чего-то не содержит.
Например,
У меня есть компонент, который может содержать h1
либо a h1
, либо и span
:
<div class="block">
<h1> title </h1>
</div>
или
<div class="block">
<h1> title </h1>
<span> sub </span>
</div>
Я знаю о выбранном :not
, но я считаю, что это повлияет на все элементы, кроме :not
Если бы я хотел сделать что-то вроде:
.block { display: flex }
.block:DoesNotContain(span) { align-items: center }
Есть ли такой способ сделать это?
Комментарии:
1. Я действительно не думаю, что это возможно только с помощью чистого CSS.
2. Я бы сказал, нет. но вы можете решить свою проблему программно.
Ответ №1:
Я нашел решение, оно довольно приятное и простое:
Мы можем определить базовую линию и вместо « DoesNotContain
» включить все, что в ней содержится, если мы можем удалить с помощью :has
селектора
.block {
display: flex;
align-items: center;
}
.block:has(span) {
align-items: normal;
}
Это не совсем одно и то же, но оно дает те же результаты.
Комментарии:
1. Да, это способ сделать это.