html - 如何创建嵌套 > :not() statements?

标签 html css

我现在的代码看起来像这样

body > :not(form) {
    display:none !important;
}

我试图只显示在打印屏幕的“表单”标签中找到的元素。但是,现在我意识到表单标签包含不需要的带有 id 的 div 标签,例如

<div id="logo">
<div id= "tabs">
<div id="topbar">

只有 <div id="body">是可取的。我试过做

body > :not(form) > :not(#body) {
    display:none !important;
}

body > :not(form) > :not(#logo) > :not(tabs) > :not(topbar) {
    display: none !important;
    form > :not(#body) {
        display:none !important;
    }
}

知道如何只让#body 元素显示在#form 元素中吗?谢谢。

最佳答案

规则 body > :not(form) > :not(#body) 将不起作用,因为如您所述,#body 元素是 within 形式,而规则的前一部分明确指出您要在 非形式 元素下搜索。

在您的情况下,两条规则的组合应该可以正常工作:

body > :not(form),
body > * > :not(#body) {
    display:none !important;
}

查看测试演示(表单标签中除了 BODY 之外的所有内容都应该被隐藏):

body >:not(form),
body > * > :not(#body) {
    display:none !important;
}
<div>DIV</div>
<form>
    <div id="logo">LOGO</div>
    <div id="body">BODY</div>
    <div id="topbar">TOPBAR</div>
</form>
<p>P</p>

关于html - 如何创建嵌套 > :not() statements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28416567/

相关文章:

CSS 内联 block 对齐问题

javascript - Onload-Event 在 Android 上不会停止

html - 是否可以将 amp-img 的尺寸移动到内联 css?

html - 为什么第二个 div 是向下滑动的?

html - 内联样式不会覆盖

javascript - 到达 anchor 时使导航栏透明

css - 谷歌浏览器将部分屏幕外的 div 加宽一个像素

css - 如何将 overflow-y 设置为 100% 高度的容器

html - css中波浪动画从左到右的过渡

javascript - HTML表格可编辑