何时使用“>;”登录CSS?

何时使用“>;”登录CSS?,css,css-selectors,Css,Css Selectors,可能重复: 我接触过很多网站,我看到很多网站在css文件中使用这种符号来创建导航栏,如: #navigation ul li > ul { /* some code in between */ } 但是当我省略了符号as时 #navigation ul li ul { /* some code in between */ } 这仍然以同样的方式工作 区别是什么?何时使用符号 selector[1] > selector[2]{ [property]: value }

可能重复:

我接触过很多网站,我看到很多网站在css文件中使用这种符号来创建导航栏,如:

#navigation ul li > ul {
  /* some code in between */
}
但是当我省略了
符号as时

#navigation ul li ul {
  /* some code in between */
}
这仍然以同样的方式工作

区别是什么?何时使用
符号

selector[1] > selector[2]{ 
[property]: value 
}
这就是所谓的。在支持它的浏览器中,它将样式应用于selector1的selector2子元素

编辑:
我相信你用的第二个叫做


它们应该是一样的,但有一点不同。Decentant选择器将应用于所有Decentant,而子选择器仅应用于父元素的直接子元素。

表示子元素-它是子元素。也就是说,直接/立即嵌套在后面


因此,在第一个示例中,选择器末尾的
ul
必须直接从
li

递减,“li>ul”语法指定ul必须是li的子级。“li ul”表示样式化的ul是li的后代,不管下面有多少个级别。

当您要针对直接后代时,您将使用


例如,
.foo>.bar
仅当它是直接子对象时才以
.bar
为目标,而
.foo.bar
将以具有类
.foo
的任何后代为目标。当第二个操作数/元素是第一个操作数/元素的子对象时,将使用bar
。当它被省略时子代匹配,其中包括子代


因此,如果您的HTML是按照您的建议(导航ul li ul)构建的,那么如果您的CSS中有以下内容:

#navigation ul {color:red;}
#navigation > ul {color:red;}
然后
#navigation ul
#navigation ul li ul
都将被涂成红色(文本),因为它们都是
#navigation ul
的后代

但是如果您的CSS中包含以下内容:

#navigation ul {color:red;}
#navigation > ul {color:red;}

然后,只有
#导航ul
会被涂成红色,因为它是唯一的
ul
,它是
#导航
的直接子级,因此

li>a
将只与
匹配

它将只选择上一个元素的直接子元素。如果有

#navigation ul li ul li ul
元素,它将不受

#navigation ul li > ul
选择器。但是

#navigation ul li ul


编辑:@,但他似乎没有说出全部真相*为什么不忽略
p
-封闭
ul
,而只忽略
span
-封闭<代码>显示:块
vs
内联
可能?谁知道呢?

选择器“>”是子选择器,空格是子选择器。如果tag3位于tag2的内部,tag2位于tag1的内部,并且您使用子选择器,那么如果您在tag1的内部引用tag3,您的css规则将不适用于tag3,但是,如果您使用子选择器,tag3将在tag1的内部传递。这意味着子选择器比子选择器更通用

#navigation ul li > ul {
  /* some code in between */
}

#navigation ul li ul {
  /* some code in between */
}

因为在第一个示例中,具有导航id的标签中的ul标签中的li标签需要ul是直接子级,而在第二个示例中,ul不需要直接是li的子级,因此li可能有一个子级,该子级是ul的父级。

关于选择器的有用链接:ul>li与ul li相同。此ul列表中的列表项是ul的直系后裔。在本例中,这并不完全正确,因为在本例中使用
它将针对任何
的直系后裔,即使它埋在其他十个
ul li
中。这只是意味着它不会针对
li span ul
。关于您的编辑,@Nix讲的是全部真相。您所看到的行为是由以下事实引起的:洞口
标记恰好在其前面关闭了洞口
标记。这使得第二个嵌套的
ul
实际上是它上面的
li
的子对象,以及该
p
的相邻兄弟姐妹。它与
display:block
vs
inline
无关。这不会发生在
标记上,因为与
不同,关闭标记是必需的,因此DOM是由
ul
实际位于
span
@BoltClock内的,它与标记类型有关。XHTML(严格的)?不会毫无怨言地关闭标签,对吗?@jwandborg:是的,因此如果您提供XHTML(而不仅仅是严格的XHTML doctype),那么在兼容XHTML的浏览器中,
    将包含在
    中。隐式结束标记规则是HTML的一部分,而不是XHTML。(这就是事情变得复杂和混乱的地方:)这是一个非常糟糕的例子,因为它是无效的标记(
    p
    不能是
    ul
    的子项)。事实上,这太糟糕了,选择器
    ul>li
    将与您在Firefox中的示例中的
    li
    相匹配。是的,我没有从有效性的角度考虑示例,只是为了证明一点,避免使用许多嵌套的li/ul来简化,因为您在这里使用的“specific”一词非常松散。就选择器特异性而言,这两种选择器是相等的。如果将
    #navigation ul li ul
    规则放在
    #navigation ul li>ul
    规则之后,它将覆盖。那么它们的工作方式不会“相同”,是吗?