Как я уже говорил, до сих пор нет решения CSS для такой ситуации, поскольку оно тесно связано с существованием родительского селектора .
Кстати, мы все еще можем использовать некоторые специальные обходные пути, чтобы показать / скрыть некоторые элементы:
Вот пример для этого конкретного случая:
div {
text-align: center;
width: 400px
}
div[id*="accordion_prop_floor_plans"] {
position:relative;
overflow:hidden;
background:
linear-gradient(#000,#000) top/100% 1px,
linear-gradient(#000,#000) bottom/100% 1px;
background-repeat:no-repeat;
border-right:1px solid;
border-left:1px solid;
}
div[id*="accordion_prop_floor_plans"] img {
margin-top:2px;
margin-bottom:30px;
}
div[id*="accordion_prop_floor_plans"] > div {
position:absolute;
bottom:0;
left:0;
right:0;
}
<div id="accordion_prop_floor_plans_1">
<div>Plan 1</div>
</div>
<div id="accordion_prop_floor_plans_2">
<img src="https://via.placeholder.com/350x150&text=image" title="image here" />
<div>Plan 2</div>
</div>
<div id="accordion_prop_floor_plans_3">
<div>Plan 3</div>
</div>
Идея состоит в том, чтобы сделать текст из потока, и в случае, если есть изображение, контейнер будет иметь высоту, и мы увидим текст вместе с ним. Если изображения нет, мы не увидим текст. Я также заменил border-top / bottom градиентом, чтобы не видеть их для скрытых элементов.
Это остается хакерским решением для этого конкретного случая.