如何仅选择元素的第一个实例,而不会为任何子级触发选择器?孩子是后代,而不是兄弟姐妹。
在示例中,ul ul
将选择第一个无序列表,尽管也会 选择任何子菜单(ul li ul
,ul ul ul ul ul
和ul
)。我只想选择#menu
中#menu ul:not(ul ul):not(ul ul ul):not(ul ul ul ul) {property: value;}
元素的第一个实例。
我可以做以下事情,尽管毫无意义。
#menu > ul
不,我也不能做#menu
,因为ul
和<nav id="menu">/* display: flex; justify-content: space-between; */
<div>
<ul>/* Primary, select THIS ul (no > in selector!) */
<li>Menu</li>
<li>Menu</li>
<li>Menu
<ul>/* Secondary menu. */
<li>Menu</li>
<li>Menu
<ul>/* Tertiary menu. */
<li>Menu</li>
<li>Menu</li>
<li>Menu</li>
</ul>
</li>
<li>Menu</li>
</ul>
</li>
<li>Menu</li>
</ul>
</div>
<div>
/* Auxiliary menu items on right side of menu bar, may contain ul (do not select these either). */
</div>
</nav>
之间的元素数量不同。
{{1}}
答案 0 :(得分:0)
至少在撰写本文时,已经遍历了一些广泛的选择器列表,至少似乎出现了所有 type 选择器都是基于同胞而不是后代的。因此,为了使菜单中的第一个ul
元素具有height: 100%
而不影响第二和第三ul
元素,我添加了第二个选择器。
#menu ul, #menu ul > li, #menu ul > li > a {align-items: center; display: flex; height: 100%;}
#menu ul ul {height: initial;}
在某种程度上,这使我可以始终将下拉菜单始终在主菜单的下方水平居中,并结合CSS变量来获取主标题的总高度(菜单是其后代)。
因为我在一个平台上工作,所以我不能不能添加CSS类,因此,我必须利用可用的选择器。
希望将来CSS选择器将继续扩展,以包括兄弟选择器之外的子代选择器。