CSS Selector首先是子级,不是同级

时间:2019-05-22 15:15:32

标签: css css-selectors

如何仅选择元素的第一个实例,而不会为任何子级触发选择器?孩子是后代,而不是兄弟姐妹。

在示例中,ul ul将选择第一个无序列表,尽管也会 选择任何子菜单(ul li ulul ul ul ul ulul)。我只想选择#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}}

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选择器将继续扩展,以包括兄弟选择器之外的子代选择器。