gpt4 book ai didi

html - 仅当没有具有特定 id 的祖先 div 时才启用 css 选择器

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:55 24 4
gpt4 key购买 nike

我正在使用 pandoc 构建一个 html,它构建目录的方式是一个无序列表的无序列表。我正在使用一个 css 样式表,它将元素符号显示为这个长破折号,这是一个简短的 repro,minimal-ish repro:

ul {
list-style-type: none;
padding-left: 2em;
margin-top: -0.2em;
margin-bottom: -0.2em;
}

li {
margin-top: 0.4em;
margin-bottom: 0.4em;
}

ul>li:before {
content: "\2014";
position: absolute;
margin-left: -1.5em;
}
<div id="TOC" role="doc-toc">
<h1 id="toctitle">Contents</h1>
<ul>
<li>1 Intro</li>
<li>2 Next
<ul>
<li>2.1 Sub</li>
<li>2.2 MoreSub</li>
</ul>
</li>
<li>3 More</li>
</ul>
</div>
<h1>Introduction</h1>
Here's another unordered list
<ul>
<li>A</li>
<li>B</li>
</ul>

我想做的是仅从目录中的无序列表项(<div id="TOC"> 下的位)删除这些破折号,但为任何其他无序列表保留它们(就像示例中的其他无序列表一样)。即 ul > li:before仅当此元素不是 TOC 的后代时我才想应用的部分分区

:not(#TOC) > ul > li:before {适用于外部列表但不适用于内部列表,这对我来说很有意义。

:not(#TOC) ul > li:before {似乎完全没有影响。

:not(div.#TOC) ul > li:before {以某种方式禁用所有 的破折号,我不明白,因为我希望第二个无序列表与此匹配。

有没有办法做我想做的事?

最佳答案

:not(...)不起作用,因为您的非 TOC <ul>元素没有非 <body> parent 。你可以瞄准 <ul> <body> 的直接后代元素元素,像这样:

body > ul > li::before {
content: "\2014";
position: absolute;
margin-left: -1.5em;
}

ul {
list-style-type: none;
padding-left: 2em;
margin-top: -0.2em;
margin-bottom: -0.2em;
}

li {
margin-top: 0.4em;
margin-bottom: 0.4em;
}

body > ul > li::before {
content: "\2014";
position: absolute;
margin-left: -1.5em;
}
<div id="TOC" role="doc-toc">
<h1 id="toctitle">Contents</h1>
<ul>
<li>1 Intro</li>
<li>2 Next
<ul>
<li>2.1 Sub</li>
<li>2.2 MoreSub</li>
</ul>
</li>
<li>3 More</li>
</ul>
</div>
<h1>Introduction</h1>
Here's another unordered list
<ul>
<li>A</li>
<li>B</li>
</ul>

虽然更灵活的选择可能是明确指定您要隐藏 #TOC 的破折号:

ul>li:before {
content: "\2014";
position: absolute;
margin-left: -1.5em;
}

#TOC ul>li:before { display: none; }

ul {
list-style-type: none;
padding-left: 2em;
margin-top: -0.2em;
margin-bottom: -0.2em;
}

li {
margin-top: 0.4em;
margin-bottom: 0.4em;
}

ul>li:before {
content: "\2014";
position: absolute;
margin-left: -1.5em;
}

#TOC ul>li:before { display: none; }
<div id="TOC" role="doc-toc">
<h1 id="toctitle">Contents</h1>
<ul>
<li>1 Intro</li>
<li>2 Next
<ul>
<li>2.1 Sub</li>
<li>2.2 MoreSub</li>
</ul>
</li>
<li>3 More</li>
</ul>
</div>
<h1>Introduction</h1>
Here's another unordered list
<ul>
<li>A</li>
<li>B</li>
</ul>

关于html - 仅当没有具有特定 id 的祖先 div 时才启用 css 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56418750/

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