选择ul到一定深度

时间:2015-06-17 14:58:49

标签: html css css-selectors html-lists

push_back()

问题:是否有选择器,所以我可以用它来为每个n-deep ul, ul ul, ul ul ul { list-style: none; margin: 0; padding: 0; } 应用样式?

例如:

ul

2 个答案:

答案 0 :(得分:6)

对于初学者,选择器ul > ul将无效,因为ul元素可能不是其他ul元素的直接子元素。在这种情况下,您需要使用ul > li > ul

您可以针对特定深度级别执行的操作是将所有内容都置于第一个ul元素的父级。例如,如果您的顶级ulbody元素的直接子级,则只需将body >添加到您的选择器中即可:

body > ul,                           /* Level 1 */
body > ul > li > ul,                 /* Level 2 */
body > ul > li > ul > li > ul { }    /* Level 3 */

对于它的价值而言,只要选择器ul具有正确的特异性就足以将样式应用于所有ul元素(如果您不想仅仅针对特定的深度级别) )。

不幸的是,不存在用于定位特定深度的独立选择器。也许你是以错误的方式接近这个 - 为什么不向你希望设置样式的特定class添加idul属性,而是将它们用作选择器而不是?

答案 1 :(得分:3)

您正在应用的属性通常会重置我们在ul元素上执行的操作,因此请编写类似

的内容
ul {
  //Reset properties
}

足以让它在任何级别的dom上应用。

仍然出于某种原因,如果你想要在特定级别定位特定属性,你需要使用>,但要确保你不能写 ul > ul 这是错误的,因为你不能将ul元素作为直接子元素嵌套到ul

因此,如果您想要专门定位ul而不是一般重置,请使用围绕ul第一级的包装元素,并使用像

这样的选择器
.wrapper ul {
  //targets all ul nested under .wrapper
}