gpt4 book ai didi

css - :empty selector for parent element

转载 作者:行者123 更新时间:2023-11-28 08:42:21 25 4
gpt4 key购买 nike

我有一个带有 header 元素的 div 和一个用于加载 li 元素的 ul:

<div class="listContainer">
<header>Title</header>
<ul class="list">
<li>Test Element</li>
<li>Test Element</li>
<li>Test Element</li>
</ul>
</div>

在这种情况下,整个 .listContainer 需要可见。

但如果 .list 为空,是否可以使用 CSS :empty 选择器隐藏整个容器,如下所示:

<div class="listContainer">
<header>Title</header>
<ul class="list">
</ul>
</div>

现在我正在使用 :empty 选择器来隐藏 ul,但是需要隐藏整个 .listContainer

.list:empty { display: none; }

我知道使用 JavaScript 是可行的,但在这种情况下我需要单独使用 CSS,但我不确定这是否可行。

最佳答案

我能提供的最好的方法(记住 CSS 没有父级选择器)是将您的 HTML 重新组织为以下内容:

<div class="listContainer">
<ul class="list"></ul>
<header>Title</header>
</div>
<div class="listContainer">
<ul class="list">
<li>Non-empty</li>
</ul>
<header>Title</header>
</div>

并使用以下 CSS:

.listContainer {
position: relative;
border: 2px solid #000;
}

.listContainer header {
position: absolute;
top: 0;
left: 0;
right: 0;
}

.listContainer .list {
margin-top: 2em;
}

.list:empty,
.list:empty + header {
display: none;
height: 0;
margin: 0;
overflow: hidden;
}

JS Fiddle demo .

不幸的是,这确实需要一些丑陋的黑客来定位 header 元素,并且没有精确地隐藏 .listContainer(因为,再一次,这不是可能基于子元素),但它确实接近您的要求。

使用与上面相同的 HTML,但使用 flex-box 模型(目前,截至目前,在 Webkit 中实现)重新排序元素的显示,从而避免 position: absolute 丑陋:

.listContainer {
border: 1px solid #000;
display: -webkit-flex;
-webkit-flex-direction: column;
-webkit-flex-wrap: nowrap;
}

.listContainer header {
display: -webkit-flex-block;
-webkit-order: 1;
-webkit-flex: 1 1 auto;
}

.listContainer .list {
display: -webkit-flex-block;
-webkit-flex-direction: column;
-webkit-order: 2;
-webkit-flex: 1 1 auto;
}

.listContainer .list:empty,
.listContainer .list:empty + header {
width: 0;
height: 0;
margin: 0;
padding: 0;
overflow: hidden;
display: none;
}

JS Fiddle demo .

关于css - :empty selector for parent element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com