You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅用HTML/CSS如何实现当前页面导航菜单的高亮样式?

无需后端逻辑实现当前页面导航项样式高亮

我有一个导航菜单,需要给当前所在页面对应的导航项修改样式——比如在Short reference页面时,该导航项背景变为黑色。能不能不用后端逻辑实现这个需求?当前的HTML和CSS代码如下:

HTML代码

<div class="navigation">
            <ul>
                <li><a href="/short-reference">Short reference</a></li>
                <li><a href="/early-life">Early life</a></li>
                <li><a href="/main-page">Main page</a></li>
            </ul>
     </div>

CSS代码

.navigation{
    display: block;
    width: auto;
    height: 40px;
    background-color: #22438C;
    font-family: monospace;

}

.navigation ul{
    margin-left: 500px;
    list-style: none;
    
}

.navigation ul li{
    display: inline-block;
    position: relative;
    background-color: rgb(23, 23, 70);
    
}
.navigation ul li a{
    text-decoration: none;
    display: block;
    padding: 10px 12px;
    color: white;
    text-align: center;
}

解决方案

当然可以,推荐两种纯前端实现方式:

方法一:手动给当前页面导航项加类(最简单直接)

在每个页面的HTML里,给当前页面对应的<li>或<a>标签添加一个自定义类(比如.active),然后在CSS里给这个类设置样式。

比如在short-reference.html页面中,修改导航的HTML:

<div class="navigation">
            <ul>
                <li class="active"><a href="/short-reference">Short reference</a></li>
                <li><a href="/early-life">Early life</a></li>
                <li><a href="/main-page">Main page</a></li>
            </ul>
     </div>

然后添加CSS样式:

.navigation ul li.active {
    background-color: black;
}
/* 如果想让链接也同步样式,也可以加上 */
.navigation ul li.active a {
    color: #fff;
}

这种方法完全不需要后端或JS,适合页面数量不多的场景,维护成本低。

方法二:用JavaScript自动匹配URL(适合页面较多的场景)

如果页面数量多,手动改每个页面太麻烦,可以用JS读取当前页面的URL路径,自动给对应的导航项添加样式。

在页面末尾添加这段JS代码:

// 获取所有导航链接
const navLinks = document.querySelectorAll('.navigation ul li a');
// 获取当前页面的路径(比如 "/short-reference")
const currentPath = window.location.pathname;

// 遍历所有链接,匹配路径
navLinks.forEach(link => {
    if (link.getAttribute('href') === currentPath) {
        // 给父元素li添加active类
        link.parentElement.classList.add('active');
    }
});

然后同样在CSS里添加.active类的样式:

.navigation ul li.active {
    background-color: black;
}

这种方法一劳永逸,不需要手动修改每个页面的HTML,纯前端就能实现自动匹配。


内容的提问来源于stack exchange,提问作者Jukh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:56:21