列表项的字体颜色不能从CSS正确继承

时间:2012-10-17 15:52:10

标签: html css css3 haml

我有以下标题:

%div.header
  %div.span-25
    = link_to logo, root_path
  %div.span-25
    %div.headermenu
      %ul
        - if current_page?(root_path)
          %li.currentmenu
            = link_to "Home", root_path
        - else
          %li
            = link_to "Home", root_path
        - if current_page?(user_path)
          %li.currentmenu
            = link_to "User", user_path
        - else
          %li
            = link_to "User", user_path

在样式中,我有:

.headermenu {
  border-radius:0px 0px 5px 5px;
  -moz-border-radius:0px 0px 5px 5px;
  margin-top:-5px;
  position:relative;
  display:block;
  height:42px;
  font-size:11px;
  font-weight:bold;
  background:transparent url('darkgray_background.gif') repeat-x top;
  font-family:Arial,Verdana,Helvitica,sans-serif;
  text-transform:uppercase;
}

.headermenu ul {
  margin:0px;
  padding:0;
  list-style-type:none;
  width:auto;
}

.headermenu ul li {
  display:block;
  float:left;
  margin:0 1px 0 0;
}

.headermenu ul li a {
  display:block;
  float:left;
  color:#000;
  text-decoration:none;
  padding:13px 12px 0 12px;
  height:28px;
}

.currentmenu {
  color:#fff;
  border-radius:5px;
  -moz-border-radius:5px;
  background:transparent url('darkgray_backgroundOVER.gif') no-repeat top center;
}

因此,当前标题菜单将突出显示。突出显示的菜单的背景图像是正确的('darkgray_backgroundOVER.gif'),但字体是黑色的(#000),而不是它应该的#fff。 Firebug显示当前菜单中已取消的字体:

继承自li.currentmenu element.style { color:#FFFFFF; }

相反,上面显示:

.headermenu ul li a {     颜色:#000000;     等等.... }

为什么不以白色显示字体?在黑色中它几乎不易读。如何将当前菜单的字体设置为白色并将其他字体(非当前菜单)的字体保持为黑色,我该怎么办?

3 个答案:

答案 0 :(得分:2)

您需要在锚标记本身上指定颜色,而不仅仅是菜单类。你的CSS不够具体,所以#000超越了。

li.currentmenu a{ 
color:#fff;
border-radius:5px;
-moz-border-radius:5px;
background:transparent url('darkgray_backgroundOVER.gif') no-repeat top center;
} 

将更具体,并且应该正确定位锚标签。

答案 1 :(得分:1)

这可能是一个特殊性问题,只需这样做:

li.currentmenu a{
color:#fff !important;
border-radius:5px;
-moz-border-radius:5px;
background:transparent url('darkgray_backgroundOVER.gif') no-repeat top center;
}

答案 2 :(得分:1)

这是因为.currentmenu选择器不像.headermenu ul li a那样具体。

只需将.currentmenu选择器更改为.headermenu .currentmenu a

即可
.headermenu .currentmenu a {
  color:#fff;
  border-radius:5px;
  -moz-border-radius:5px;
  background:transparent url('darkgray_backgroundOVER.gif') no-repeat top center;
}