JQuery实现左侧菜单栏可折叠功能

JQuery实现左侧菜单栏可折叠功能

该效果包含根据右侧内容,左右联动

效果图

在这里插入图片描述

实现思想

  • 主要利用滚动事件
  $('.oprationRight').scroll(
        function () {
            scrollTop = $('.oprationRight').scrollTop();
            activeIndex = calculateIndex(menuHeightArr, scrollTop);
            let _this = $('.oprationWrapper').children('.menuLevel1').eq(activeIndex);
            scrollToMenu(activeIndex, breadCrumbsType, scrollTop, calculateIndex, _this)

        }
    )
    
  • 点击链接到某处使用a链接的锚点
	<a href="#one“></a>
	<div id="one"></div>
  • 计算右边各块内容到顶部的距离,并存储

为防止滚动时面包屑遮挡住内容,需要减去第一块内容到顶部的距离

let arr = [];
$('.menuBlock').eq(activeIndex).children('.menuItemBlock').each(function () {
      arr.push($(this)[0].offsetTop - menuList.eq(0)[0].offsetTop)
 })
  • 滚动时,判断当前滚动距离处于右边内容的哪一块,得到index值,为左边菜单做选中标记
	function calculateIndex(menuHeightArr, scrollTop) {
        let index = 0;
        for (let i = 0; i < menuHeightArr.length; i++) {
            if (i == 0) {
                if (scrollTop >= 0 && scrollTop < menuHeightArr[0]) {
                    index = 0;
                }
            } else if (0 < i && i < menuHeightArr.length - 1) {

                if (scrollTop >= menuHeightArr[i] && scrollTop < menuHeightArr[i + 1]) {
                    index = i;
                }
            } else if (i >= menuHeightArr.length - 1) {

                if (scrollTop >= menuHeightArr[i]) {
                    
                    index = menuHeightArr.length - 1;
                }
            }
        }
        return index;
    }
  • 得到左边菜单选中值后,要判断是否有二级菜单,如果有,需要将其展开,并且计算右边一级内容下面各二级内容到顶部的距离,且得出当前一级菜单下二级菜单的选中值,调用计算index的方法calculateIndex()
  • 另外就是滚动时,根据需求的特殊处理

html内容大致结构

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值