我刚刚在css文件中看到了这个:
#nav { margin: 13px 0 0 0; }
#nav ul li { margin: 0 20px 0 0; }
第二个#nav属性定义是否取消了第一个#nav属性定义?
(另外:我说的是对吗?"属性定义"?花括号内的内容通常被接受的术语是什么?)。
答案 0 :(得分:3)
不,它们适用于不同的元素,因为它们有不同的选择器。
第一条规则适用于ID为" nav"的元素。第二个规则适用于元素li,它是元素ul的后代,它是id为" nav"的元素的后代。
您可以在此处阅读有关CSS选择器的信息:https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/Selectors
答案 1 :(得分:0)
1)否。第二个选择器仅适用于li
的后代,ul
的后代又是#nav
的后代,而第一个仅适用于{#nav
的后代1}}
2)你称之为“风格”
答案 2 :(得分:-1)
第二个定义没有"取消"第一个;它选择作为nav
后代的命名元素,而不是选择nav
元素本身。
列表项(li
)是ID为nav
的元素中无序列表的后代,将由第二个规范设置样式。 (根据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
是属性,边距规范是值。花括号左边的东西是选择器。