当前位置: 首页 > 面试题库 >

父元素的:empty选择器

丁长卿
2023-03-14
问题内容

我有一个div带有标头元素的ul,我在其中加载了li项:

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

在这种情况下,整个情况.listContainer必须可见。

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

<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;
}

不幸的是,这确实需要进行一些丑陋的修改才能放置该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;
}


 类似资料:
  • 我正在使用TestCafe选择器来选择元素。这是一个复杂的Custin Child嵌套场景。 下面是HTML以了解我上面提到的内容: 在图片中,我提到了和,它们是父元素(具有相同的DOM),有一个grand grand child,而另一棵树中相同父元素的grand grand child是。我需要,但需要链接,因为所有父节点都有相同的DOM。

  • 本文向大家介绍选择每个 元素,它是其父元素的第二个 元素,从最后一个子元素开始计数,包括了选择每个 元素,它是其父元素的第二个 元素,从最后一个子元素开始计数的使用技巧和注意事项,需要的朋友参考一下 使用CSS:nth-last-of-type(n)选择器选择每个<p>元素,它是其父元素的第二个<p>元素,从最后一个子元素开始计数。 示例 您可以尝试运行以下代码来实现:nth-last-of-ty

  • 本文向大家介绍jQuery 选择元素的子元素,包括了jQuery 选择元素的子元素的使用技巧和注意事项,需要的朋友参考一下 示例 要选择元素的子代,可以使用children()方法。 更改元素所有子.parent元素的颜色: 该方法接受一个可选selector参数,该参数可用于过滤返回的元素。            

  • 我正在尝试解析下面的xml以根据某些条件获取ScId元素值。此条件在xpath字符串中提及,然后在xpath Next字符串中选择ScId值。 我使用VTD xml解析器使用嵌套的xpath查询来获取ScId值,该值以RC开头,类型=Daycare。 下面是代码 解析逻辑是 这是我的回报 解析值为SC101-91-new 虽然我期待它是 解析值为RC101-92-新

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • 基本选择器是CSS中使用最频繁、最基础,也是CSS中最早定义的选择器。基本选择器包括元素选择器、类选择器、id选择器、群组选择器、通配选择器。 表 2-1 基本选择器 选择器 语法 功能描述 版本 元素选择器 E 选择指定类型的元素 1 类选择器 E.class 选择类型为E,且class属性值包含指定类名的元素 1 id选择器 E#id 选择类型为E,且id属性值为指定id的元素 1 群组选择器