Css 奇怪的子选择器行为

Css 奇怪的子选择器行为,css,css-selectors,Css,Css Selectors,我最终决定完全放弃IE6。太棒了。这个决定带来的第一大好处是儿童选择器。因此,我第一次开始在嵌套下拉菜单中使用它们,并期望它会轻而易举。但是代码如下: <style> body { color:#000; } ul.top > li { color:red; } 身体{ 颜色:#000; } ul.top>li{ 颜色:红色; } 李克强 子里 子里 我在这里所期望的是,只有.top无序列表的直接子项是红色的,其余的都是黑色的。这不符

我最终决定完全放弃IE6。太棒了。这个决定带来的第一大好处是儿童选择器。因此,我第一次开始在嵌套下拉菜单中使用它们,并期望它会轻而易举。但是代码如下:

<style>
body {
    color:#000;
}

ul.top > li {
    color:red;
}

身体{
颜色:#000;
}
ul.top>li{
颜色:红色;
}

  • 李克强
    • 子里
    • 子里

我在这里所期望的是,只有
.top
无序列表的直接子项是红色的,其余的都是黑色的。这不符合逻辑吗?但它们实际上都变红了…

试试看

ul.top > li {
    color:red;
}

ul.sub > li {
    color:black;
}
??试试看

ul.top > li {
    color:red;
}

ul.sub > li {
    color:black;
}


??蒂姆给了你解决办法。对这种行为的解释是,尽管
颜色:红色
仅应用于顶级
li
s,颜色由其后代继承。查看详细解释。

蒂姆给了你解决方案。对这种行为的解释是,尽管
颜色:红色
仅应用于顶级
li
s,颜色由其后代继承。查看深入的解释。

不幸的是,子选择器导致所有
li
继承该类。因此,您需要定义另一个子
ul.sub>li{

不幸的是,子选择器导致所有
li
继承该类。因此,您需要定义另一个子
ul.sub>li{

您可以看到红色同时应用于列表中的第一个和第二个元素。顶部,现在第二个元素没有任何颜色应用的样式信息,因此它使用具有红色的父元素的样式。

您可以看到红色同时应用于列表中的第一个和第二个元素现在,第二个元素没有应用颜色的任何样式信息,因此它使用的是红色的父元素的样式。

这应该是正确的,元素为“color”属性所做的默认操作是从父元素继承它,子选择器仅将颜色样式属性放在im上调解子项,但这些子项的所有子项都将继承它。实际上,在将样式应用于的子项之前,我尝试将所有li元素涂成黑色。top成功了,但该死……我该如何处理更复杂的样式,如绝对定位、边框、填充、更改字体。我需要为所有元素定义它们吗使用子选择器的ior?好处在哪里?不,您没有。默认情况下不会继承定位。不,您不必担心布局项被继承,只能继承一定数量的样式属性(如颜色和背景(可能是字体??)[)…你不必担心这种位置、填充、边距、宽度、高度、蚀刻…奇怪。事实上,我在定位和其他方面有一个奇怪的行为,然后将它简化为一种颜色,只是为了看看它是否如预期的那样工作…我现在将做另一个测试。这应该是正确的,这是“color”属性要做的元素是从其父元素继承它,子选择器只将颜色样式属性放在直接子元素上,但这些子元素的所有子元素都将继承它。实际上,在将样式应用于.top的子元素之前,我尝试将所有li元素的颜色都涂成黑色,结果成功了,但该死的……我该怎么办处理更复杂的样式,如绝对定位、边框、填充、更改字体。在使用子选择器之前,我是否需要为所有元素定义它们?好处何在?不,你没有。默认情况下不会继承定位。不,你不必担心布局项被继承,只需继承一定数量的样式属性可以继承(如颜色和背景(可能是字体???[)…你不必担心这种位置、填充、边距、宽度、高度、蚀刻…奇怪。事实上,我在定位和其他方面有一个奇怪的行为,然后将它简化为一种颜色,只是为了看看它是否如预期的那样工作…我现在将做另一个测试。我认为这破坏了它的全部好处然后把它变成另一个误导性的东西。不?假设你有
p.top{color:red}

默认情况下,您希望所有的都是红色的,对吗?

我认为子选择器非常有用,因为它们可以非常具体地应用样式,所以不是。继承也非常有用,因为它将启用“自然”行为(如果红色
中的
会因为没有被特别选中而保持黑色,这不是很烦人吗?).仅仅因为你不知道它并不意味着它是误导性的。CSS是一种定义非常明确的语言。不,我只需要给无序列表的直系子女涂上红色。事实上,我有更复杂的事情要做,但我把它简化为只涂颜色。感谢@Patrick McElhaney为我的案例做了说明,我正忙着写我的长篇大论评论…我认为这破坏了这件事的全部好处,并把它变成了另一个误导性的狗屎。不?说你有
p.top{color:red}

默认情况下,您希望所有的都是红色的,对吗?

我认为子选择器非常有用,因为它们可以非常具体地应用样式,所以不是。继承也非常有用,因为它将启用“自然”行为(如果你的红色
中的
会因为没有被特别选中而保持黑色,这不是很烦人吗?)。仅仅因为你不知道它并不意味着它有误导性。CSS是一种定义很好的语言。不,我只需要给无序列表中的直接子对象涂上红色。实际上我还有更多