原生js实现菜单动态添加active类

本文介绍了一个小技巧,通过原生JavaScript实现菜单项点击时动态添加和移除'active'类,以更新菜单高亮状态,不依赖jQuery库。

分享一个小案例,使用原生 js 实现菜单点击动态添加 active类,没有使用jQuery。
样式:style.css

*{
    margin: 0;
    padding: 0;
}
ul{
    margin: 0 auto;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 50px;
    list-style: none;
    box-shadow: 0 2px 4px #eeeeee;
}
ul > li {
    padding: 6px 16px;
    margin: 0 5px;
    border-right: 1px solid #f7f7f7;
    border-bottom: 1px solid transparent;
    cursor: pointer;
}
ul > li:last-child{
    border-right: none;
}
li:hover, li:focus, .active {
    color: #ff6615;
    border-bottom: 1px solid #ff6615;
}

页面:index.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>原生js实现菜单动态添加active类</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<ul id="nav">
    <li class="active">首页</li>
    <li>产品中心</li>
    <li>新闻资讯</li>
    <li>文档下载</li>
    <li>联系我们</li>
</ul>

<script>
    function removeActiveClass(node) {
        node.className = '';
    }

    let menus = document.querySelectorAll('#nav');
    menus.forEach(function (value, index) {
        value.addEventListener('click', function (e) {
            var target = e.target;
            Array.prototype.forEach.call(document.querySelectorAll('#nav li'), removeActiveClass);
            target.className = 'active';
        })
    });
</script>
</body>
</html>

代码效果:
在这里插入图片描述
THE END !

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值