【发布时间】:2022-02-10 14:44:55
【问题描述】:
问题(2018 年):是否有任何 CSS 结构可以使用选择器隐藏 div,然后取消隐藏包含特定选择器的 div?
我把这个标记为骗子
https://stackoverflow.com/questions/53209121/css-selector-if-a-container-is-empty-display-none
代码是
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>
然后我意识到可能还有另一个用例。
隐藏没有特定元素的 div。或者显示可以做的 div。
我试过:has(),基于Is there a CSS parent selector?
但截至 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>
我可以很容易地用 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>
【问题讨论】:
-
是的,只有 JS 有效,仍然没有 CSS 解决方案。即使在 2019 年,我也不认为会有一个。可能
:has()选择器会得到更多支持。
标签: html css css-selectors