0

我想根据当前活动的 URL 在我的导航菜单中突出显示当前链接。

如果我的导航菜单是纯 CSS,我已经找到了许多解决方案,但是我的菜单是基于图像的,因此每个链接的活动类都不同,这就是我卡住的地方。

谁能建议我可以使用的东西?我对 jQuery 很陌生,但发现它非常有用,并且是我学过的最好的语言之一。

<div id="navbar">
    <ul class="navmenu">
        <li><a class="products" href="#"></a></li>
        <li><a class="services" href="#"></a></li>
        <li><a class="about-us" href="#"></a></li>
        <li><a class="contact-us" href="#"></a></li>
        <li><a class="directory" href="#"></a></li>
        <li><a class="blog" href="#"></a></li>
    </ul>
</div>

每个a标签都有一个预加载的 CSS 背景图片,每个类都有一个悬停功能。

4

2 回答 2

0

基于 CSS 的方法没有理由不适合您。在我看来,主要有两种方法:

首先,将类放在父元素 fex 上:

<div id="navbar">
    <ul class="navmenu">
        <li><a class="products" href="#"></a></li>
        <!-- This is the current page -->
        <li class="current"><a class="services" href="#"></a></li>
        <li><a class="about-us" href="#"></a></li>
        <li><a class="contact-us" href="#"></a></li>
        <li><a class="directory" href="#"></a></li>
        <li><a class="blog" href="#"></a></li>
    </ul>
</div>

然后,您可以使用以下 CSS 规则:

.current .products { /* ... */ }
.current .services { /* ... */ }
.current .about.us { /* ... */ }
.current .contact-us { /* .... */ }
.current .directory { /* ... */ }
.current .bloc { /* ... */ }

此解决方案允许您为每个条目设置不同的样式,如果您需要更改图像 fex,这很好。

如果您需要对所有条目具有相同的样式并且基于在一个元素上具有多个类,则另一种解决方案会更容易:

<div id="navbar">
    <ul class="navmenu">
        <li><a class="products" href="#"></a></li>
        <!-- This is the current page -->
        <li><a class="services current" href="#"></a></li>
        <li><a class="about-us" href="#"></a></li>
        <li><a class="contact-us" href="#"></a></li>
        <li><a class="directory" href="#"></a></li>
        <li><a class="blog" href="#"></a></li>
    </ul>
</div>

相应的 CSS 将是:

.current { /* ... */ }
于 2013-06-23T13:01:50.150 回答
0

您可以使用 javascript 来获取 # 之后的 url 部分:

window.location.hash

然后再次使用 jQuery 突出显示相关元素:

var linkClass = window.location.hash;
$("."+linkClass).prop("class",linkClass+" highlight");

这只是一种方法(可能不是最优雅的)。在这种情况下,您的 css 将是这样的:

.pageOne {

}  
.pageOne.highlight {

}

你的HTML是这样的:

<a href="pageOne.html#pageOne">Page One</a>
于 2013-06-23T12:43:26.653 回答