我有一个嵌套的li,他们有特定的类。我遇到嵌套类的问题。尽管有特定的类,但样式是父类的类型:
<ul>
<li class="navtitle-current"><a href="1.html">ONE</a>
<ul>
<li class="navtitle-current"><a href="2.html">TWO</a></li>
<li class="navtitle"><a href="3.html">THREE</a></li>
</ul>
</li>
</ul>
.navtitle {
font-weight: none;
}
.navtitle a{
background-color:white;
color: gray;
}
.navtitle a:hover,
.navtitle:hover{
background-color:white;
color: black;
}
.navtitle-current {
font-weight: none;
}
.navtitle-current a{
background-color:white;
color: black;
}
.navtitle-current a:hover,
.navtitle-current:hover{
background-color:white;
color: black;
}
我想要发生的是,一个需要是黑色,两个是黑色,三个是灰色。但是,所有链接都是黑色的。
我的印象是,如果我明确地上课,我不应该有任何这样的问题。有没有人有任何想法?
感谢所有帮助。
注意:我意识到CSS块不在。我只是为了展示我所拥有的东西而把代码放在这里。
答案 0 :(得分:2)
由于.navtitle-current
的级别高于.navtitle
,因此链接将继承.navtitle-current a
个样式。如果您想在其中设置链接样式,则需要更具体地使用标记。将.navtitle a
更改为.navtitle-current .navtitle a
,它应该有效。
答案 1 :(得分:1)
问题是选择器特异性 - 你的倒数第二个声明有the same exact same weight and origin作为定义灰色文本的类 - .navtitle a
- 并且由于级联的性质,后面的规则将指定赢
最后,按指定顺序排序:如果两个声明具有相同的权重,来源和特异性,则后者指定获胜。导入样式表中的声明被认为是在样式表本身中的任何声明之前。
要克服这个问题,只需在课程前加.navtitle a
即可提高li
的特异性,例如
li.navtitle a {
background-color: gray;
color: gray;
}
答案 2 :(得分:1)
你可以做得更聪明:
<div class="titles">
<ul>
<li class="current"><a href="1.html">ONE</a>
<ul>
<li class="current"><a href="2.html">TWO</a></li>
<li><a href="3.html">THREE</a></li>
</ul>
</li>
</ul>
</div>
.titles ul li {...}
.titles ul li.current {...}
.titles ul li.current ul li {...}
.titles ul li.current ul li.current {...}
的问候,
答案 3 :(得分:1)
另一种解决方法:
<强> jsFiddle 强>
.navtitle-current .navtitle a {
background-color:white;
color: gray;
}
这可能只是个人偏好,但在可能的情况下,我会尽量避免链接等等。我觉得使用类名更具可读性。