何时使用“>;”登录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
vsinline
无关。这不会发生在
标记上,因为与
不同,关闭标记是必需的,因此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
规则之后,它将覆盖。那么它们的工作方式不会“相同”,是吗?