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

CSS实现鼠标悬停下划线并保持点击后下划线状态的方法

实现点击后保持下划线状态的解决方案

要让导航链接点击后保持下划线,仅靠CSS伪类是不够的——:active伪类只在鼠标按住元素时生效,松开后就会恢复。你需要添加一个自定义激活类,配合简单的JS实现状态持久化,具体操作如下:

1. 更新CSS样式

在原有代码基础上,新增.active类的样式,让拥有该类的导航链接保持下划线:

.navbar-nav .nav-link::after {
    content: '';
    border-bottom: 3px solid #0F9CD8;
    display: block; 
    transition: width .3s;
    -webkit-transition: width .3s;
    -moz-transition: width .3s;
    -ms-transition: width .3s;
    -o-transition: width .3s;   
    width: 0;
}

/* 保留原悬停效果 */
.navbar-nav .nav-link:hover::after {
    width: 100%;
}

/* 新增激活状态样式 */
.navbar-nav .nav-link.active::after {
    width: 100%;
}

2. 添加JS处理点击事件

用原生JS给每个导航链接绑定点击事件,点击时给当前元素添加.active类,同时移除其他兄弟导航项的激活类,确保只有当前选中项保持下划线:

// 获取所有导航链接
const navLinks = document.querySelectorAll('.navbar-nav .nav-link');

navLinks.forEach(link => {
    link.addEventListener('click', function() {
        // 移除所有导航链接的active类
        navLinks.forEach(item => item.classList.remove('active'));
        // 给当前点击的链接添加active类
        this.classList.add('active');
    });
});

额外提示

  • 如果是Vue/React等框架开发,可借助框架的状态管理控制active类的添加,逻辑和原生JS一致,只是写法不同。
  • 页面初始加载时,可给默认选中的导航项手动加上.active类(比如首页链接)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:22:55