【问题标题】:Use CSS class in span to set current menu state?在 span 中使用 CSS 类来设置当前菜单状态?
【发布时间】:2012-04-04 08:15:07
【问题描述】:

我正在学习 CSS 和 html,并坚持在单击项目后保留悬停/活动状态的外观。我查看了该站点上的几篇文章,但无法将课程应用于我的应用程序。我还在这里找到了解决方案http://www.456bereastreet.com/archive/200503/setting_the_current_menu_state_with_css/,但它对我不起作用(我会认为这是我的错)。

另一个来源建议使用我目前正在尝试的跨度类。我想要具有相同的悬停颜色(#fff),重量(粗体),以及在选择菜单项时使用的背景图像以显示用户究竟在哪里(这是辅助栏杆NAV并进入使用在那些主导航有一个带有多个选项的下拉菜单的页面上)。对我有用的唯一特征是粗体文本。您可以在此处查看正在进行的工作:

http://www.mentalwarddesign.net/dynamec/About/index.html

我假设我在跨度中创建的类被覆盖了,但我对补救措施一无所知。任何和所有的帮助将不胜感激。

以下是 li 的代码,然后是相应的 CSS。提前致谢!

<ul class="nav">
<span class="chosen"><li><a href="index.html" id="nav-whatwedo">What We Do</a></li></span>
<li><a href="howitstarted.html" id="nav-howitstarted">How It Started</a></li>
<li><a href="whoweare.html" id="nav-whoweare">Who We Are</a></li>
<li><a href="whatweknow.html" id="nav-whatweknow">What We Know</a></li>
</ul>

.chosen {
font-weight: bold;
color: #ffffff;
background-image: url(../imgGlobal/bulletRight.jpg);
background-repeat: no-repeat;
display: block;
padding-left: -12px;
background-position: 168px;
}
.content ul, .content ol {
padding: 0 15px 15px 40px;
background-color: #fff;
}
ul.nav {
list-style: none;
}
ul.nav li {
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: #464646;
height: 50px;
background-color: #000;
}
ul.nav a, ul.nav a:visited {
display: block;
width: 160px;
text-decoration: none;
padding-top: 12px;
padding-right: 5px;
padding-left: 15px;
}
ul.nav a:hover, ul.nav a:active, ul.nav a:focus {
color: #ffffff;
font-weight: bold;
height: 38px;
background-image: url(../imgGlobal/bulletRight.jpg);
background-repeat: no-repeat;
background-position: 168px;
}

【问题讨论】:

    标签: css


    【解决方案1】:

    Ed,CSS 选择器:active 的意思是“被激活(例如被点击)”,而不是“具有解析为当前页面 URL 的 href 属性”。您可以使用服务器端逻辑插入 class=”chosen” 或类似的。例如:

    <li class="chosen"><a href="index.html">What We Do</a></li>
    

    还有,CSS 样式:ul.nav li.chosen a { }

    您提供的教程链接中提到了另一种方法,但这不是一个很好的例子。

    【讨论】:

    • 感谢您为我澄清 :active 选择器。我把它弄糊涂了。这里的其他人通过失去跨度并将所选课程放在 li 中使我走上了正确的轨道。但是您提供的后代选择器是锦上添花,使我能够覆盖另一个选择器的颜色属性。 (我一直在摸索一个小时)非常感谢你和其他所有人。对于像我这样刚开始湿身的人来说,这是多么棒的资源啊。你们摇滚!
    【解决方案2】:

    首先,您不能将li 包裹在span 中。 ul 的唯一直接后代是 li。您可以将chosen 类直接放到li 上就可以了。

    <ul class="nav">
        <li class="chosen"><a href="index.html" id="nav-whatwedo">What We Do</a></li>
        <li><a href="howitstarted.html" id="nav-howitstarted">How It Started</a></li>
        <li><a href="whoweare.html" id="nav-whoweare">Who We Are</a></li>
        <li><a href="whatweknow.html" id="nav-whatweknow">What We Know</a></li>
    </ul>
    

    【讨论】:

    • 不,不会。您将需要它在 a 中。
    • 感谢您让我知道我做错了什么。这适用于背景图像和粗体属性,但颜色(#FFF)似乎仍然被覆盖。有什么想法吗?
    • Jhol:你错了。 @ed:这是一个特异性问题。尝试更具体地选择项目的方法。我在下班回家的公共汽车上,所以我无法详细检查,但如果你没有解决方案,我会在今晚回来检查。
    • @Chris:好的,我明白你在说什么,只是不确定如何去做。我要试一试。谢谢
    • @Chris,感谢您和其他人的回复,我的问题已解决。谢谢!
    【解决方案3】:

    chosen 类放入li 元素本身。完全放弃span

    编辑: 抱歉,在a 元素中,我的意思是说。

    【讨论】:

    • 谢谢,效果很好。有什么理由它仍然不会选择#FFF 颜色吗?感谢您的帮助。
    • @EdWard 嗯,应该这样做。除非您有其他规则可以覆盖颜色?
    • 是的,我有一个类“.nav li a”,它设置字体样式和颜色(没有将它与我的侧边栏 CSS 的其余部分组合在一起。那一定是我的坏人......
    • @EdWard 听起来像是一个可靠的解决方案。您可以随时将 !important 添加到您的 css 规则中,如下所示: color: #ffffff !important。
    • 我希望 !important 能解决问题。那好吧。仍在试图弄清楚如何在这个实例中覆盖“.nav li a”。一直在玩一些后代选择器,但还没有运气。啊,作为一个初学者! :)
    【解决方案4】:

    span 是一个标签,一个类只是一个标识符。除了可以使用一个类将样式应用于跨度之外,它们之间并没有任何关系,但任何标签都是如此。

    在您的情况下,您试图在 li (块级元素)周围放置一个 span (一个内联元素)。在 HTML 中,内联元素不应包含块元素。

    您应该可以这样做:EDIT 根据实际 CSS 修复

    <li><a href="index.html" class="chosen" id="nav-whatwedo">What We Do</a></li>
    

    【讨论】:

    • 如果他有以下类型的 css 选择器,您的建议会起作用:li.chosen a,但由于他只有 .chosen,因此需要直接转到 a。
    • 谢谢,我很感激这个教训。你能想到为什么我仍然没有得到字体颜色属性(#FFF)的任何原因?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2017-07-18
    • 2012-12-27
    • 2014-08-27
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多