CSS:单ID选择器与ID选择器,后跟更多内容

CSS:单ID选择器与ID选择器,后跟更多内容,css,Css,我刚刚在css文件中看到: #nav { margin: 13px 0 0 0; } #nav ul li { margin: 0 20px 0 0; } 第二个导航属性定义是否会抵消第一个导航属性定义 (还有:我说的对吗?“财产定义”?花括号内的东西的公认术语是什么?) 否,它们应用于不同的元素,因为它们具有不同的选择器 第一条规则适用于id为“nav”的元素。第二条规则适用于元素li,即元素ul的后代,即id为“nav”的元素的后代 您可以在此处阅读CSS选择器:1)否。第二个选择器仅适

我刚刚在css文件中看到:

#nav { margin: 13px 0 0 0; }

#nav ul li { margin: 0 20px 0 0; }
第二个导航属性定义是否会抵消第一个导航属性定义


(还有:我说的对吗?“财产定义”?花括号内的东西的公认术语是什么?)

否,它们应用于不同的元素,因为它们具有不同的选择器

第一条规则适用于id为“nav”的元素。第二条规则适用于元素li,即元素ul的后代,即id为“nav”的元素的后代

您可以在此处阅读CSS选择器:

1)否。第二个选择器仅适用于
li
,后者是
ul
的后代,而后者又是
#nav
的后代,而第一个选择器仅适用于
#nav


2) 您将它们称为“样式”

第二个定义不会“取消”第一个定义;它选择作为
nav
的后代的命名元素,而不是选择
nav
元素本身

ID为
nav
的元素中无序列表的后代列表项(
li
)将由第二个规范设置样式。(根据昆汀的评论进行编辑。)ID为
nav
的元素将使用第一个规范。
#nav
中的元素可能继承自第一个规范。对于某些属性,而不是
边距
,继承是自动的。
font-family
属性就是一个例子。
margin
属性只能通过显式的
margin:inherit继承规格

如果代码如下所示:

#nav { margin: 13px 0 0 0; font-family: Helvetica, Arial, sans-serif;}
#nav ul li { margin: 0 20px 0 0; }
然后,列表项以及
nav
中没有自己的
字体系列
规范的所有内容都将使用无衬线字体


大括号内的内容是属性和值。因此,
margin
是一个属性,而margin规范是值。大括号的左边是选择器。

…这些选择器不能与同一个元素匹配(至少不能与有效的HTML匹配)。第一个选择带有
id='nav'
的元素并对其进行样式设置,而第二个选择
li
元素,位于
ul
元素中
id='nav'
下。这不是,第二个将只覆盖Id为nav的元素内的li。@Quentin Fantastic resource,谢谢。@Harry Thanke,收到了。“它更具体”-虽然它更具体,但这与具体性无关,因为它选择了不同的元素。“nav内除列表项以外的任何内容都将使用第一个规范”-否。只有
#nav
本身将使用第一组规则。它内部的其他元素可能会继承这些属性的值。@昆汀:关于继承和直接应用程序,您是正确的。在CSS中对特异性的严格定义,你也是对的。@Quentin说得很好,谢谢。我之所以将此答案标记为正确答案,是因为它回答了我的问题,也因为昆汀的观点有助于进一步澄清。不,
#nav
的后代不会继承
边距设置,因为该属性不可继承。不,第二个定义并不比第一个“更具体”;它涉及一个不同的元素,这与“特殊性”完全不同,这一概念适用于针对同一元素的规则。