我刚才看到这个在CSS文件:CSS:单ID选择与ID选择之后更多的东西
#nav { margin: 13px 0 0 0; }
#nav ul li { margin: 0 20px 0 0; }
不第二#nav属性定义抵消第一#nav属性定义?
(另外:我说的是正确的吗?“属性定义”?大括号内的东西通常被接受的术语是什么?)。
我刚才看到这个在CSS文件:CSS:单ID选择与ID选择之后更多的东西
#nav { margin: 13px 0 0 0; }
#nav ul li { margin: 0 20px 0 0; }
不第二#nav属性定义抵消第一#nav属性定义?
(另外:我说的是正确的吗?“属性定义”?大括号内的东西通常被接受的术语是什么?)。
第二个定义没有“取消”的第一个;它会选择nav
后代的已命名元素,而不是选择nav
元素本身。
作为ID为nav
的元素内的无序列表的后代的列表项目(li
)将由第二规范进行样式化。 (根据Quentin的评论编辑)ID为nav
的元素将使用第一个规范。 #nav
中的元素可以从第一个规范继承。对于某些属性,但不是margin
,继承是自动的。 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
其他一切都没有自己的font-family
规范将有一个sans-serif字体。
花括号内的东西是属性和值。所以,margin
是一个属性,并且保证金规格是值。花括号的剩余部分是选择器。
不,它们适用于不同的元素,因为它们具有不同的选择器。
第一条规则适用于ID为“nav”的元素。第二条规则适用于元素li,即元素ul的后代,该元素是id为“nav”的元素的后代。
你可以阅读CSS选择在这里:https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/Selectors
...和那些选择器不能匹配相同的元素(至少不是有效的HTML)。 – Quentin 2014-09-28 14:55:52
1)号中的第二选择仅适用于li
这是ul
后裔这又是#nav
后代,而第一个只适用于#nav
2)你叫他们为“风格”
第一个选择带有id ='nav''的元素并对其进行样式设置,而第二个元素在id ='nav''的元素内选择'ul'下的'li'元素。 – Harry 2014-09-28 14:56:14
这是[声明块](http://apps.workflower.fi/vocabs/css/en#declaration-block) – Quentin 2014-09-28 14:56:34
不,第二个将只覆盖id为nav的元素中的li。 – 2014-09-28 14:56:35