Cómo mostrar un elemento oculto si solo existe un elemento secundario específico CSS @
Pregunta ¿Hay en 2018 alguna construcción CSS que oculte divs usando un selector y luego muestre una que contenga un selector específico?
Estaba marcando esto como un engañado
CSS Selector: si un contenedor está vacío -> pantalla: ninguna;
Code sería
div { border: 1px solid black; text-align:center; width:400px }
div[id*="accordion_prop_floor_plans"]:empty { display:none }
<div id="accordion_prop_floor_plans_1"></div>
<div id="accordion_prop_floor_plans_2"><img src="https://via.placeholder.com/350x150&text=image" title="image here" /><br/>Plan 2</div>
<div id="accordion_prop_floor_plans_3"></div>
Entonces me di cuenta de que podría haber otro caso de uso.
Hide divs que no tienen un elemento determinado. O mostrar divs que lo hacen.
Lo intenté:has()
, Residencia en ¿Hay un selector padre CSS?
pero aún no funciona en ningún navegador a partir de 2018
div { border: 1px solid black; text-align:center; width:400px }
div[id*="accordion_prop_floor_plans"] { display:none }
div[id*="accordion_prop_floor_plans"]:has(> img) { display:block }
<div id="accordion_prop_floor_plans_1">Plan 1</div>
<div id="accordion_prop_floor_plans_2"><img src="https://via.placeholder.com/350x150&text=image" title="image here" /><br/>Plan 2</div>
<div id="accordion_prop_floor_plans_3">Plan 3</div>
Puedo hacerlo fácilmente en JS:
document.querySelector('div[id*="accordion_prop_floor_plans"]>img').parentNode.style.display="block";
div { border: 1px solid black; text-align:center; width:400px }
div[id*="accordion_prop_floor_plans"] { display:none }
<div id="accordion_prop_floor_plans_1">Plan 1</div>
<div id="accordion_prop_floor_plans_2"><img src="https://via.placeholder.com/350x150&text=image" title="image here" /><br/>Plan 2</div>
<div id="accordion_prop_floor_plans_3">Plan 3</div>