У меня есть следующая структура элемента:
<div class = "general">
<div class = "general-container">
<div class = "general-grid">
<div class = "general-wrapper"></div>
</div>
</div>
</div>
Я пытаюсь не отображать общий div, если у общей оболочки нет дочерних элементов.
Итак, сначала попробовал это:
.general-wrapper:not(:has(*)) {
background-color:red;
}
Это работает.
Тогда это:
.general-container:has( .general-wrapper ) {
background-color:green;
}
Что тоже работает.
Но когда я их объединяю, этого не происходит.
.general-container:has( .general-wrapper:not(:has(*) ) ) {
display:none; // it does display, while it should not :(
}
ссылка на код: https://codepen.io/Redox-FGL/pen/LYKgZzq
Что я делаю не так или не получаю?
Примечание: не ищите решение с пустым, здесь больше переменных и пустой не работает. Необходимо проверить дочерние элементы.
Спасибо @C3roe за эту ссылку, это многое объясняет!
Вместо этого сделайте это:
.general-container:not(:has(.general-wrapper > *)) {
border: 2px solid red;
height: 100px;
}
<div class = "general">
<div class = "general-container">
<div class = "general-grid">
<div class = "general-wrapper">
</div>
</div>
</div>
</div>
Можете ли вы показать, что это работает? Возможно, добавьте тот, в котором ЕСТЬ контент.
Могу подтвердить, я был в 2 секундах от того же ответа. codepen.io/Paulie-D/pen/oNraLQK
Спасибо! Эта работа
Вы можете установить для параметра General-Container значение «Нет отображения», а затем установить для него значение «Отображение блока», например, если в оболочке есть контент.
/* don't display general when general-wrapper has no children */
/* so display general when it does have children,otherwise display: none */
.general {
display: none;
width: 200px;
height: 200px;
background: pink;
}
.general:has(.general-wrapper > *) {
display: block;
}
<h2>WITHOUT CONTENT</h2>
<div class = "general">
<div class = "general-container">
<div class = "general-grid">
<div class = "general-wrapper">
</div>
</div>
</div>
</div>
<h2>WITH CONTENT</h2>
<div class = "general">
<div class = "general-container">
<div class = "general-grid">
<div class = "general-wrapper">
<div></div>
</div>
</div>
</div>
</div>
:has()
не может быть вложен в другой:has()
».