用逗号隔开的定义,是只多个定义使用同一个样式。
#nav1 .menu,
#nav2 .menu {
float: left; width: 670px;
}
上面这个定义等同于
#nav1 .menu {
float: left; width: 670px;
}
#nav2 .menu {
float: left; width: 670px;
}
即:
selectorA,selectorB{
style;
}
等价于:
selectorA{
style;
}
selectorB{
style;
}
用空格隔开表示的是筛选。所谓css的选择器,是说每个定义都像是选择DOM节点的机器,选中的是满足选择器条件的节点。如下:
#nav1{
style;
}
上面的样式定义会应用于那些id为nav1的节点,就是因为#表示id选择,nav1表示被选中的id的值。另外点表示class选择,标签名则直接选择节点标签,但都是起到选择节点的作用,然后将CSS样式应用于被选择的节点上。
而加上空格并再给一个选择器时,如下:
#nav1 .menu {
float: left; width: 670px;
}
相当于在结果中查找。假设你的html页面中有两个导航条,分别:
.menu,#nav2
你注意,它们中间是豆号,是一种并列式的简写。
比如
.menu {color:#000;}
#nav2 {color:#000;}
可以写成
.menu,#nav2 {color:#000;}
这样你可以理解了吧。至于前面和后面的该怎么写就这么写。所以你发的这个代码没有#nav2的引用仍然有效是正常的。
,表示并列关系;
中间加一空格表示后代选择符;
上述的可解释为选择ID值为nav1下的带class值为menu的元素,以及选择ID值为nav2下的带class值为menu的元素
然后赋予CSS属性
另:你给的例子,他写的有些繁杂了,标签运用的不到位,按那例子是绝对够不着页面重构工程师这职位的