Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
至少具有N个子节点的节点的CSS选择器?_Css_Css Selectors - Fatal编程技术网

至少具有N个子节点的节点的CSS选择器?

至少具有N个子节点的节点的CSS选择器?,css,css-selectors,Css,Css Selectors,我想使用CSS选择至少有N个子节点的节点。怎么做 其目的是在树中应用色带(“指南”),但仅当父节点下方有六个或更多节点时 我得到的JS、JQuery和服务器端脚本建议有些问题,因为子脚本是使用Ajax调用动态加载的。我必须破解注入孩子的代码,例如,为那些有6个以上孩子的家长添加一个类。这就是为什么在我开始编写代码之前,我想问一下是否有一种纯CSS的方法可以做到这一点。我可能会满足于不考虑子节点数的绑定-虽然不够整洁但足够公平。我建议使用jQuery if语句来计算节点数,然后添加一个类来应用所需

我想使用CSS选择至少有N个子节点的节点。怎么做

其目的是在树中应用色带(“指南”),但仅当父节点下方有六个或更多节点时


我得到的JS、JQuery和服务器端脚本建议有些问题,因为子脚本是使用Ajax调用动态加载的。我必须破解注入孩子的代码,例如,为那些有6个以上孩子的家长添加一个类。这就是为什么在我开始编写代码之前,我想问一下是否有一种纯CSS的方法可以做到这一点。我可能会满足于不考虑子节点数的绑定-虽然不够整洁但足够公平。

我建议使用jQuery if语句来计算节点数,然后添加一个类来应用所需的样式

以下是一个工作示例:


这严格来说是不可能的,因为CSS没有提供任何基于子对象属性选择父对象的方法

对于一个严格的CSS解决方案,我将向父元素添加一个类,并设置该类的样式。不必在必要时手动添加类,您可以在服务器端按语法处理它

您当然可以使用JavaScript实现这一点,而且许多可用的JavaScript库将简化此过程

但是,您可以使用JavaScript来实现这一点。下面是一个示例():

HTML


css3有一些子选择器可以完成这项工作

li:first-child:nth-last-child(6),
li:first-child:nth-last-child(6) ~ li {
    ... some style
}
对于这个解决方案,安德烈·卢伊斯(AndréLuís)发现了它。当然,它在父元素上不起作用,因为这是css4,还不受支持。但是如果有6个标签,您可以为所有的
li
标签设置样式,或者只为第一个
li
标签设置样式

结合before伪元素,您可以直观地创建父样式。 ul get的
位置:相对
。
然后,您可以使用伪元素在父对象上伪造样式:

li:first-child:nth-last-child(6):before {
  content:'';
  position:absolute;
  top:0;
  left:0;
  z-index:-1;
  width:400px;
  height:20px;
  background:green
}

并非每个浏览器都支持css选择器第n个最后一个子项,但对于Internet Explorer,您可以使用javascript或IE7.js。祝你好运。

这需要前瞻,我很确定CSS不会以任何形式进行前瞻。或者,如果使用某种服务器端语言,请使用它添加CSS类。不需要额外的库@RichardMarskell Drackir-当然-感谢您的澄清!欢迎来到StackOverflow!当您输入代码时,一定要突出显示它,并使用文本编辑器顶部的“代码示例”按钮。它看起来像一组花括号
{}
。此外,还可以使用倒勾(`)来指示文本中的代码片段或对象引用。查看以了解更多信息。:)要使用的级别4选择器非常简单:
!>李:第一个孩子:第n个最后一个孩子(6)
当然,重复这一点并不实际有效。
jQuery(function($){
    $('ul').each(function(){
        if($(this).children('li').length >= 6){
            $(this).css('background-color', 'orange');
        }
    });
});
li:first-child:nth-last-child(6),
li:first-child:nth-last-child(6) ~ li {
    ... some style
}
li:first-child:nth-last-child(6):before {
  content:'';
  position:absolute;
  top:0;
  left:0;
  z-index:-1;
  width:400px;
  height:20px;
  background:green
}