jQuery 导航栏功能实现(高亮/相应菜单映射内容/无延迟二级菜单)

本文介绍了使用jQuery实现导航栏的四个常见功能:1) 鼠标滑过菜单高亮显示;2) 点击后菜单保持高亮并跳转到相应内容;3) 屏幕滚动时对应内容的菜单高亮;4) 无延迟的二级菜单显示。通过CSS、click事件、scrollTop等技术实现,同时探讨了细节处理和编程思想的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入:导航栏的功能繁多,选取了几个常用的效果做个练手。

(忽然发现jQuery真的巨好用。。。对于新手的我,造轮子什么的,相当痛苦。我还有救么。。)
在这里插入图片描述
好了,总结完睡觉去了。
很多废话,看实现方法和代码就好了

功能1:鼠标滑过菜单高亮显示

实现方法:CSS :hover伪类
一般来说,用户只是在选择进入某一菜单时(未点击)会用到此功能。所以实现起来简单。

功能2:鼠标点击后,菜单保持高亮并跳转到相应内容

实现方法:
针对跳转到相应内容:这里用的是锚点定位(使用该方法时当页面的URL发生变化时,可能导致无法成功定位;改天再总结下定位方法)。
针对高亮效果: click事件+addClass(恩此类方法总是那么简单粗暴)

功能3:当屏幕滚动时,可视区域内容对应的菜单呈高亮状态

实现方法: 利用scrollTop(屏幕滚动)和可视区域显示元素的offsetTop比较,对相应菜单进行添加类名(预设样式)。

关键:我是用循环的方式添加的类名,各位大佬有没有更好的方法?(这个是不是可以用事件委托做啊,但是我试了半天bind(‘scroll’),么有反应。)

scroll事件:jQuery文档描述的是,滚动条发生变化时触发,目前我试了下,就在window/document绑定是有效的。网上还有的说,对overflow值为auto/scroll的元素也有效。真的有效,恩!
在这里插入图片描述

附上代码:

<!--No.1 主菜单,无子菜单; 功能:1.鼠标滑过高亮:CSS实现 2.点亮保持 onclick 3.对应内容显示-->
    <nav id="nav">
        <ul>
            <li data-id="0" class="active"><a href="#0">item1</a></li>
            <li data-id="1"><a href="#1">item2</a></li>
            <li data-id="2"><a href="#2">item3</a></li>
            <li data-id="3"><a href="#3">item4</a></li>
            <li data-id="4"><a href="#4">item5</a></li>
        </ul>
    </nav>
    <main id="main-content">
        <section id="0">
            <h3>第一段</h3>
            <p>这是一个段落段落段落段落</p>
            <p>这是一个段落段落段落段落</p>
        </section>
        <section id="1">
            <h3>第二段</h3>
            <p>这是一个段落段落段落段落</p>
            <p>这是一个段落段落段落段落</p>
        </section>
        <section id="2">
            <h3>第三段</h3>
            <p>这是一个段落段落段落段落</p>
         
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值